public ActionResult AgregarPermisos(ModeloPermisosRol modelo) { tbRol Rol = db.tbRol.Where(x => x.codTipoUsuario == modelo.codRol).SingleOrDefault(); List <tbRolPermiso> tbRolPermisosAnt = Rol.tbRolPermiso.ToList(); foreach (var p in modelo.permisos) { if (p.IsChecked) { //si no esta en la lista antigua de la base de datos if (!tbRolPermisosAnt.Any(x => x.idPermiso == p.codPemiso)) { //el permiso no estaba y fue agregado db.tbRolPermiso.InsertOnSubmit(new tbRolPermiso { idPermiso = p.codPemiso, codTipoUsuario = modelo.codRol }); }//else: se encuentra en la base y no se quitó el permiso, no se modificoo } else { //si esta en la lista antigua de la base de datos es por que el permiso esta asignado y debe removerse if (tbRolPermisosAnt.Any(x => x.idPermiso == p.codPemiso)) { //tbRolPermiso rp = (from r in db.tbRolPermiso where (r.idPermiso == p.idPermiso && r.codTipoUsuario==modelo.rol.codTipoUsuario) select r).SingleOrDefault(); tbRolPermiso rp = db.tbRolPermiso.Where(x => x.codTipoUsuario == modelo.codRol && x.idPermiso == p.codPemiso).SingleOrDefault(); db.tbRolPermiso.DeleteOnSubmit(rp); }//else: no estaba y no ase agregaraa } } db.SubmitChanges(); return(RedirectToAction("Index")); }
public ActionResult AgregarPermisos(int?id) { //Se obtiene el rol tbRol rol = db.tbRol.Where(x => x.codTipoUsuario == id).SingleOrDefault(); //se asigna rol al modelo ModeloPermisosRol modeloPermisoRol = new ModeloPermisosRol() { codRol = rol.codTipoUsuario, NombreRol = rol.Rol }; //todos los permisos que existen List <tbPermiso> todosLosPermisos = (from p in db.tbPermiso select p).ToList(); //se obtienen los permisos del rol codigo y permiso var permisosDelRol = rol.tbRolPermiso.Select(p => p.tbPermiso); //se indican cuales son los permisos que se tienen actualmente var CheckBoxPermisos = new List <CheckBoxPermiso>(); foreach (var p in todosLosPermisos) { CheckBoxPermisos.Add(new CheckBoxPermiso() { codPemiso = p.idPermiso, nombrePermiso = p.Permiso, //seleccionar los que existen IsChecked = permisosDelRol.Where(x => x.idPermiso == p.idPermiso).Any() }); } //se asigna al modelo modeloPermisoRol.permisos = CheckBoxPermisos; return(View(modeloPermisoRol)); }