public async Task <IActionResult> CargarDatosActualizar(int rolId) { if (User.Identity.IsAuthenticated) { string permiso = Permisos("PermisoSubModulo").PSMAPB ? "PermisoSubModulo" : "PermisoModulo"; bool actualizar = Permisos(permiso).PMMAPL.Where(w => w.Value.Contains("Actualizar")).Any(); if (actualizar) { ModulosSelect data = await service.CargaDatosActualizar(rolId); return(Json(new { result = "ok", data })); } else { return(NotFound()); } } else { return(RedirectToAction("Index", "Login")); } }
public async Task <ModulosSelect> CargaDatosActualizar(int rolId) { try { ModulosSelect select = new ModulosSelect(); #region Primer Tab List <ModulosSelect> query = await(from t0 in context.Col_Roles join t1 in context.Col_RolModulos on t0.RolId equals t1.RolId join t2 in context.Col_Modulos on t1.ModuloId equals t2.ModuloId select new ModulosSelect { ModuloId = t2.ModuloId, Nombre = t2.Nombre, RolId = t0.RolId }).ToListAsync(); select.Rol = await context.Col_Roles.Where(w => w.RolId.Equals(rolId)).FirstOrDefaultAsync(); select.Modulos = query.Where(w => w.RolId.Equals(rolId)).ToList(); select.ModulosNoSeleccionado = context.Col_Modulos.Where(w => w.Estado == "A").ToList(); List <ModulosSelect> subModulos = new List <ModulosSelect>(); foreach (IGrouping <int, ModulosSelect> grupo in query.GroupBy(g => g.ModuloId)) { ModulosSelect subModulo = new ModulosSelect(); subModulo.ModuloId = grupo.Select(s => s.ModuloId).FirstOrDefault(); subModulo.RolId = grupo.Select(s => Convert.ToInt32(s.Rol)).FirstOrDefault(); subModulo.Nombre = grupo.Select(s => s.Nombre).FirstOrDefault(); subModulos.Add(subModulo); } select.AllModulos = subModulos.Where(w => !select.Modulos.Where(s => s.ModuloId == w.ModuloId).Any()).ToList(); #endregion #region Segundo Tab select.Seleccionados = await(from t0 in context.Col_Roles join t1 in context.Col_SubModuloModulo on t0.RolId equals t1.RolId join t2 in context.Col_SubModulos on t1.SubModuloId equals t2.SubModuloId join t3 in context.Col_Modulos on t2.ModuloId equals t3.ModuloId where t0.RolId.Equals(rolId) select new ModulosSelect { Nombre = t2.Nombre, SubModuloId = t2.SubModuloId, ModuloId = t2.ModuloId, Descripcion = t3.Nombre }).ToListAsync(); List <ModulosSelect> AllSubModulos = await(from t0 in context.Col_Roles join t1 in context.Col_RolModulos on t0.RolId equals t1.RolId join t2 in context.Col_Modulos on t1.ModuloId equals t2.ModuloId join t3 in context.Col_SubModulos on t2.ModuloId equals t3.ModuloId where t0.RolId.Equals(rolId) select new ModulosSelect { Nombre = t3.Nombre, SubModuloId = t3.SubModuloId, ModuloId = t2.ModuloId, Descripcion = t2.Nombre }).ToListAsync(); select.NoSeleccionados = AllSubModulos.Where(w => !select.Seleccionados.Where(m => m.SubModuloId == w.SubModuloId).Any()).ToList(); #endregion #region Tercer Tab select.Permisos = await VerDetalleModulos(rolId); #endregion return(select); } #region catch catch (DbEntityValidationException e) { string err = ""; foreach (DbEntityValidationResult eve in e.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (DbValidationError ve in eve.ValidationErrors) { err += ve.ErrorMessage; Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } return(null); } catch (Exception e) { string err = ""; if (e.InnerException != null) { if (e.InnerException.Message != null) { err = (e.InnerException.Message); if (e.InnerException.InnerException != null) { err += e.InnerException.InnerException.Message; } } } else { err = (e.Message); } return(null); } #endregion }