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)); }