Esempio n. 1
0
        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"));
            }
        }
Esempio n. 2
0
        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
        }