Пример #1
0
        //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));
        }
Пример #2
0
        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
            }));
        }