//Bind(Include = "UsuarioId,UsuarioNombre,UsuarioCorreo,Usuariopassword,Usuarioactivo,UsuarioPadreId")] public async Task <ActionResult> Edit(UsuariosViewModel model) { if (ModelState.IsValid) { try { db.Entry(model.Usuario).State = EntityState.Modified; await db.SaveChangesAsync(); //Registro de HV if (model.UsuarioHV.UsuarioId == null || model.UsuarioHV.UsuarioId == "") { //Crea registro en HV model.UsuarioHV.UsuarioId = model.Usuario.UsuarioId; db.UsuarioHV.Add(model.UsuarioHV); await db.SaveChangesAsync(); } else { db.Entry(model.UsuarioHV).State = EntityState.Modified; var openPeaks = await db.Peak .Include(p => p.Periodo) .Where(p => p.UsuarioId == model.Usuario.UsuarioId && p.Estado != EstadoPeak.Finished) .ToListAsync(); foreach (var peak in openPeaks) { peak.Cargo = model.UsuarioHV.Cargo; peak.AreaId = (int)model.UsuarioHV.AreaId; if (peak.UsuarioIdPadre != model.Usuario.UsuarioPadreId) { var newUsuarioPadre = await db.Usuarios .Where(u => u.UsuarioId == model.Usuario.UsuarioPadreId).Select(u => new { u.UsuarioCorreo, u.UsuarioNombre }).FirstOrDefaultAsync(); SendNotificationEmailTask(newUsuarioPadre.UsuarioCorreo, newUsuarioPadre.UsuarioNombre, peak.Estado, peak.Id, model.Usuario.UsuarioNombre); } peak.UsuarioIdPadre = model.Usuario.UsuarioPadreId; db.Entry(peak).State = EntityState.Modified; } await db.SaveChangesAsync(); if (await DeleteRolUsuario(model.Usuario.UsuarioId)) { foreach (var rol in model.Roles) { if (rol.Seleccionado) { RolUsuario ru = new RolUsuario(); ru.RolId = rol.RolId; ru.UsuarioId = model.Usuario.UsuarioId; db.RolUsuario.Add(ru); } } //Plantas var currentPlantas = await db.UsuarioPlanta .Where(ul => ul.UsuarioId == model.Usuario.UsuarioId) .ToListAsync(); if (model.Plantas != null) { var PlantasId = model.Plantas.Where(l => l.Seleccionado == true).Select(a => a.PlantaId).ToArray(); var itemsToDelete = currentPlantas.Where(a => !PlantasId.Contains(a.PlantaId)).ToList(); if (itemsToDelete.Count > 0) { db.UsuarioPlanta.RemoveRange(itemsToDelete); await db.SaveChangesAsync(); } //Insertar nuevos foreach (var planta in model.Plantas) { if (planta.Seleccionado && currentPlantas.Where(cl => cl.PlantaId == planta.PlantaId).FirstOrDefault() == null) { var up = new UsuarioPlanta(); up.PlantaId = planta.PlantaId; up.UsuarioId = model.Usuario.UsuarioId; db.UsuarioPlanta.Add(up); } } } else { var itemsToDelete = currentPlantas.ToList(); if (itemsToDelete.Count > 0) { db.UsuarioPlanta.RemoveRange(itemsToDelete); await db.SaveChangesAsync(); } } //Canales var currentCanales = await db.UsuarioCanal .Where(ul => ul.UsuarioId == model.Usuario.UsuarioId) .ToListAsync(); if (model.Canales != null) { var CanalesId = model.Canales.Where(l => l.Seleccionado == true).Select(a => a.CanalId).ToArray(); var itemsToDelete = currentCanales.Where(a => !CanalesId.Contains(a.CanalId)).ToList(); if (itemsToDelete.Count > 0) { db.UsuarioCanal.RemoveRange(itemsToDelete); await db.SaveChangesAsync(); } //Insertar nuevos foreach (var canal in model.Canales) { if (canal.Seleccionado && currentCanales.Where(cl => cl.CanalId == canal.CanalId).FirstOrDefault() == null) { var uc = new UsuarioCanal(); uc.CanalId = canal.CanalId; uc.UsuarioId = model.Usuario.UsuarioId; db.UsuarioCanal.Add(uc); } } } else { var itemsToDelete = currentCanales.ToList(); if (itemsToDelete.Count > 0) { db.UsuarioCanal.RemoveRange(itemsToDelete); await db.SaveChangesAsync(); } } await db.SaveChangesAsync(); AddLog("", model.Usuario.UsuarioId, model); return(RedirectToAction("Index", GetReturnSearch())); } else { ModelState.AddModelError("", "Error Deleting Detail (RolUsuario)"); } //guardaRolUsuario(RolUsuarioList, model.Usuario.UsuarioId); //Seguridad seguridad = new Seguridad(); //Auditoria auditoria = new Auditoria(); //Seguridadcll seguridadcll = (Seguridadcll)Session["seguridad"]; //auditoria.AuditoriaFecha = System.DateTime.Now; //auditoria.AuditoriaHora = System.DateTime.Now.TimeOfDay; //auditoria.usuarioId = seguridadcll.Usuario.UsuarioId; //auditoria.AuditoriaEvento = "Modificar"; //auditoria.AuditoriaDesc = "Modifico Usuario: " + model.Usuario.UsuarioId; //auditoria.ObjetoId = "Usuario/Edit"; //seguridad.insertAuditoria(auditoria); //return RedirectToAction("Index"); } } catch (Exception e) { ViewBag.error = e.ToString(); } } //ViewBag.UsuarioPadreId = new SelectList(db.Usuarios, "UsuarioId", "UsuarioNombre", usuario.UsuarioPadreId); //ViewBag.RolesList = db.Roles.ToList(); return(await GetView(model.Usuario.UsuarioId)); }
public async Task <ActionResult> Create(UsuariosViewModel model) { if (ModelState.IsValid) { try { var usuarioTemp = db.Usuarios.Where(u => u.UsuarioId == model.Usuario.UsuarioId).FirstOrDefault(); if (usuarioTemp == null) { Seguridad seguridad = new Seguridad(); model.Usuario.Usuariopassword = Fn.EncryptText(model.Usuario.Usuariopassword); db.Usuarios.Add(model.Usuario); await db.SaveChangesAsync(); //Crea registro en HV model.UsuarioHV.UsuarioId = model.Usuario.UsuarioId; db.UsuarioHV.Add(model.UsuarioHV); await db.SaveChangesAsync(); // guardaRolUsuario(RolUsuarioList, usuario.UsuarioId); //roles(rolUsuario) foreach (var rol in model.Roles) { if (rol.Seleccionado) { RolUsuario ru = new RolUsuario(); ru.RolId = rol.RolId; ru.UsuarioId = model.Usuario.UsuarioId; db.RolUsuario.Add(ru); } } foreach (var p in model.Plantas) { if (p.Seleccionado) { UsuarioPlanta up = new UsuarioPlanta(); up.PlantaId = p.PlantaId; up.UsuarioId = model.Usuario.UsuarioId; db.UsuarioPlanta.Add(up); } } foreach (var c in model.Canales) { if (c.Seleccionado) { UsuarioCanal uc = new UsuarioCanal(); uc.CanalId = c.CanalId; uc.UsuarioId = model.Usuario.UsuarioId; db.UsuarioCanal.Add(uc); } } if (!ModelState.Values.Any(ms => ms.Errors.Count > 0)) { await db.SaveChangesAsync(); AddLog("", model.Usuario.UsuarioId, model); return(RedirectToAction("Index", GetReturnSearch())); } //return RedirectToAction("Index"); } else { ModelState.AddModelError("", "Warning, This User " + model.Usuario.UsuarioId + " already exists"); } } catch (Exception e) { ViewBag.error = e.ToString(); } } /*ViewBags*/ ViewBag.Usuario_UsuarioPadreId = new SelectList(await db.Usuarios.ToListAsync(), "UsuarioId", "UsuarioNombre", model.Usuario.UsuarioPadreId); return(View(new UsuariosViewModel { Usuario = model.Usuario, Roles = model.Roles })); }