Ejemplo n.º 1
0
        public JsonResult Edit(Rol entidad)
        {
            var rol = _iRolService.Get(entidad.Id);

            rol.Codigo          = entidad.Codigo;
            rol.Nombre          = entidad.Nombre;
            rol.EsAdministrador = entidad.EsAdministrador;
            rol.EsExterno       = entidad.EsExterno;
            rol.Url             = entidad.Url;
            rol.Parametros      = entidad.Parametros;

            //Actualizados
            var actualizados = rol.Permisos.Where(c => entidad.Permisos.Any(d => c.Id == d.Id));

            foreach (var actualizado in actualizados)
            {
                var elemento = entidad.Permisos.FirstOrDefault(i => i.Id == actualizado.Id);
                if (elemento != null)
                {
                    actualizado.AccionId           = elemento.AccionId;
                    actualizado.NoVisualizarEnMenu = elemento.NoVisualizarEnMenu;
                }
            }

            //Nuevos
            var nuevos = entidad.Permisos.Where(c => c.Id == 0);

            foreach (var nuevo in nuevos)
            {
                rol.Permisos.Add(nuevo);
            }

            //Eliminados
            var eliminados = rol.Permisos.Where(c => entidad.Permisos.All(d => c.Id != d.Id)).ToList();

            _iRolService.EliminarPermisos(eliminados);

            rol = _iRolService.SaveOrUpdate(rol);
            var rolVista = new
            {
                rol.Id,
                rol.Codigo,
                rol.Nombre,
                rol.EsAdministrador,
                rol.EsExterno,
                rol.Url
            };

            return(Json(rolVista, JsonRequestBehavior.AllowGet));
        }