public ActionResult Create([Bind(Include = "RoleName")] Rol objectViewModel) { List <KeyValuePair <int, string> > listModulosChk = new List <KeyValuePair <int, string> >(); try { if (ModelState.IsValid) { ModuloPermisoRepository moduloPermisoRepository = new ModuloPermisoRepository(); objectRepository.Add(objectViewModel, this.User.UserID); foreach (var item in Request.Form) { if (item.ToString().StartsWith("chk")) { string[] arrItem = item.ToString().Split('_'); listModulosChk.Add(new KeyValuePair <int, string>(int.Parse(arrItem[2]), arrItem[1])); } } foreach (var item in listModulosChk) { ModuloPermiso mPermiso = new ModuloPermiso(); mPermiso.Accion = item.Value; mPermiso.Modulo_Id = item.Key; mPermiso.Rol_Id = objectViewModel.Id; moduloPermisoRepository.Add(mPermiso, this.User.UserID); } return(RedirectToAction("Index")); } } catch (Exception ex) { ModelState.AddModelError("", "Error al guardar datos del Rol, comuniquese con su admnistrador :" + ex.Message); } PopulateTreeModulosEmpty(); return(View(objectViewModel)); }
public ActionResult Edit([Bind(Include = "Id,RoleName,Estado,FechaCreacion,FechaActualizacion,idUsuario")] Rol objectViewModel) { try { if (ModelState.IsValid) { ModuloPermisoRepository moduloPermisoRepository = new ModuloPermisoRepository(); objectRepository.Modify(objectViewModel, this.User.UserID); //Elimino todos los permisos asociados al Rol moduloPermisoRepository.DeleteByRol(objectViewModel.Id); List <KeyValuePair <int, string> > listModulosChk = new List <KeyValuePair <int, string> >(); foreach (var item in Request.Form) { if (item.ToString().StartsWith("chk")) { string[] arrItem = item.ToString().Split('_'); listModulosChk.Add(new KeyValuePair <int, string>(int.Parse(arrItem[2]), arrItem[1])); } } foreach (var item in listModulosChk) { ModuloPermiso mPermiso = new ModuloPermiso(); mPermiso.Accion = item.Value; mPermiso.Modulo_Id = item.Key; mPermiso.Rol_Id = objectViewModel.Id; moduloPermisoRepository.Add(mPermiso, this.User.UserID); } return(RedirectToAction("Index")); } } catch (Exception ex) { ModelState.AddModelError("", "Error al guardar datos del Rol, comuniquese con su admnistrador :" + ex.Message); } PopulateTreeModulosFill(objectViewModel.Id); return(View(objectViewModel)); }
public void PopulateTreeModulosFill(int idRol) { ModuloRepository moduloRepository = new ModuloRepository(); ModuloPermisoRepository chequeadoRepository = new ModuloPermisoRepository(); StringBuilder sb = new StringBuilder(); var listModulosSistema = moduloRepository.GetAll(p => p.Parent).OrderBy(o => o.Descripcion); var listChequeados = chequeadoRepository.GetFiltered(p => p.Rol_Id == idRol).ToList(); var menuVM = MenuViewModel.CreateVM(null, listModulosSistema.ToList()); foreach (var menuItem in menuVM) { sb.Append("<li>"); sb.Append("<p >"); sb.Append(" <span class='icon'><i class='" + menuItem.Class + "'></i></span>"); sb.Append(" <label class='control-label'>" + menuItem.Descripcion + "</label>"); sb.Append("</p>"); if (menuItem.URL != string.Empty && menuItem.URL != null) { var checked_edit = ""; var checked_view = ""; foreach (var item in listChequeados) { if (item.Modulo_Id == menuItem.MenuId && item.Accion == "VIEW") { checked_view = "checked"; } if (item.Modulo_Id == menuItem.MenuId && item.Accion == "EDIT") { checked_edit = "checked"; } } sb.Append("<div style='float:right; margin-right:150px'><input " + checked_edit + " name='chk_EDIT_" + menuItem.MenuId + "' type='checkbox' ></input></div>"); sb.Append("<div style='float:right; margin-right:180px'><input " + checked_view + " name='chk_VIEW_" + menuItem.MenuId + "' type='checkbox' ></input></div>"); } if (menuItem.Children.Count() > 0) { sb.Append("<ul class='sub'>"); } #region Sub Menu 1° Nivel foreach (var child in menuItem.Children) { sb.Append("<li>"); if (child.URL != string.Empty && child.URL != null) { sb.Append("<p>"); } else { sb.Append("<p >"); } sb.Append("<span class='icon'><i class='" + (child.Class != null && child.Class != string.Empty ? child.Class : "") + "'></i></span>"); sb.Append(" <label class='control-label'>" + child.Descripcion + "</label>"); if (child.URL != string.Empty && child.URL != null) { var checked_edit = ""; var checked_view = ""; foreach (var item in listChequeados) { if (item.Modulo_Id == child.MenuId && item.Accion == "VIEW") { checked_view = "checked"; } if (item.Modulo_Id == child.MenuId && item.Accion == "EDIT") { checked_edit = "checked"; } } sb.Append("<div style='float:right; margin-right:150px'><input name='chk_EDIT_" + child.MenuId + "' " + checked_edit + " type='checkbox' ></input></div>"); sb.Append("<div style='float:right; margin-right:180px'><input name='chk_VIEW_" + child.MenuId + "' " + checked_view + " type='checkbox' ></input></div>"); } sb.Append("</p>"); if (child.Children.Count() > 0) { sb.Append("<ul class='sub'>"); } #region Sub Menu 2° Nivel foreach (var subchild in child.Children) { sb.Append("<li>"); if (subchild.URL != string.Empty && subchild.URL != null) { sb.Append("<span >"); } else { sb.Append("<span >"); } sb.Append("<span class='icon'><i class='" + (subchild.Class != null && subchild.Class != string.Empty ? subchild.Class : "") + "'></i></span>"); sb.Append(" <label class='control-label'>" + subchild.Descripcion + "</label>"); if (subchild.URL != string.Empty && subchild.URL != null) { var checked_edit = ""; var checked_view = ""; foreach (var item in listChequeados) { if (item.Modulo_Id == subchild.MenuId && item.Accion == "VIEW") { checked_view = "checked"; } if (item.Modulo_Id == subchild.MenuId && item.Accion == "EDIT") { checked_edit = "checked"; } } sb.Append("<div style='float:right; margin-right:150px'><input name='chk_EDIT_" + subchild.MenuId + "' " + checked_edit + " type='checkbox' ></input></div>"); sb.Append("<div style='float:right; margin-right:180px'><input name='chk_VIEW_" + subchild.MenuId + "' " + checked_view + " type='checkbox' ></input></div>"); } sb.Append("</span>"); if (subchild.Children.Count() > 0) { sb.Append("<ul class='sub'>"); } #region Sub Menu 3° Nivel foreach (var subsubchild in subchild.Children) { sb.Append("<li>"); if (subsubchild.URL != string.Empty && subsubchild.URL != null) { sb.Append("<span >"); } else { sb.Append("<span >"); } sb.Append("<span class='icon'><i class='" + (subsubchild.Class != null && subsubchild.Class != string.Empty ? subsubchild.Class : "") + "'></i></span>"); sb.Append(" <label class='control-label'>" + subsubchild.Descripcion + "</label>"); if (subsubchild.URL != string.Empty && subsubchild.URL != null) { var checked_edit = ""; var checked_view = ""; foreach (var item in listChequeados) { if (item.Modulo_Id == subsubchild.MenuId && item.Accion == "VIEW") { checked_view = "checked"; } if (item.Modulo_Id == subsubchild.MenuId && item.Accion == "EDIT") { checked_edit = "checked"; } } sb.Append("<div style='float:right; margin-right:150px'><input name='chk_EDIT_" + subsubchild.MenuId + "' " + checked_edit + " type='checkbox' ></input></div>"); sb.Append("<div style='float:right; margin-right:180px'><input name='chk_VIEW_" + subsubchild.MenuId + "' " + checked_view + " type='checkbox' ></input></div>"); } sb.Append("</span>"); sb.Append("</li>"); } #endregion if (subchild.Children.Count() > 0) { sb.Append("</ul>"); } sb.Append("</li>"); } #endregion if (child.Children.Count() > 0) { sb.Append("</ul>"); } sb.Append("</li>"); } #endregion if (menuItem.Children.Count() > 0) { sb.Append("</ul>"); } sb.Append("</li>"); } ViewBag.Modulos = sb.ToString(); }