public async Task <ActionResult> AsignarAccesos(string id) { if (id == "") { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var role = await RoleManager.FindByIdAsync(id); web.ViewModels.PermisosVM model = new web.ViewModels.PermisosVM(); model.RolV = role; //Obtengo listado de accesos var lista = (from a in db.Accesos select new web.ViewModels.PermisosVM.AccesosVMList() { id_acceso = a.id_acceso, Nombre = a.Nombre, Selected = false }).ToList(); //Obtengo listado de accesos asignados al rol var lista2 = (from a in db.Accesos join p in db.Permisos on a.id_acceso equals p.id_acceso where p.Id == id select new web.ViewModels.PermisosVM.AccesosVMList() { id_acceso = a.id_acceso, Nombre = a.Nombre, Selected = true }).ToList(); var objetosAComparar = from item in lista2 select item.id_acceso; foreach (var item in lista) { if (objetosAComparar.Contains(item.id_acceso)) { item.Selected = true; } } model.AccesosDisp = lista.OrderByDescending(o => o.Selected).ToList(); model.AccesosSelect = lista2; return(View(model)); }
public ActionResult AsignarAccesos(web.ViewModels.PermisosVM permisos) { var Rol = permisos.RolV; var Permisos = permisos; var lista1 = permisos.AccesosDisp.ToList(); int i = 0; foreach (var row in lista1) { if (row.Selected == true) { permisos.AccesosSelect.Add(permisos.AccesosDisp[i]); } i++; } //Elimino de la tabla permisos var toDelete = db.Permisos.Where(a => a.Id == Rol.Id).ToList(); foreach (var item in toDelete) { db.Permisos.Remove(item); } db.SaveChanges(); //inserto los accesos seleccionados en la tabla permisos foreach (var pa in permisos.AccesosSelect) { Permisos per = new Permisos(); per.id_acceso = pa.id_acceso; per.Id = Rol.Id; db.Permisos.Add(per); db.SaveChanges(); i++; } return(RedirectToAction("Index")); }