public static List <EnvoltorioSubGrupo> ListarSubGruposPorIdGrupo(int grpId, int rolId) { List <EnvoltorioSubGrupo> lista = new List <EnvoltorioSubGrupo>(); List <VCFramework.Entidad.RrhhSubgrupoMenu> listaProcesar = ListarSubGruposPorIdGrupo(grpId); if (listaProcesar != null && listaProcesar.Count > 0) { foreach (Entidad.RrhhSubgrupoMenu subgrupo in listaProcesar) { EnvoltorioSubGrupo env = new EnvoltorioSubGrupo(); env.GrpId = subgrupo.GrpId; env.SgrpActivo = subgrupo.SgrpActivo; env.SgrpEliminado = subgrupo.SgrpEliminado; env.SgrpId = subgrupo.SgrpId; env.SgrpItem = subgrupo.SgrpItem; env.SgrpUrl = subgrupo.SgrpUrl; List <VCFramework.Entidad.RrhhRlRolMenu> rls = RrhhRlRolMenu.ListarRlPorRolId(rolId); bool chekeado = false; if (rls != null && rls.Count > 0) { if (rls.Exists(p => p.SgrpId == subgrupo.SgrpId)) { chekeado = true; } } env.Checked = chekeado; env.RolId = rolId; lista.Add(env); } } return(lista); }
public static List <ItemMenu> ArmarMenu(int rolId) { List <ItemMenu> listaDevolver = new List <ItemMenu>(); //primero nos traemos todos los grupos List <Entidad.RrhhGrupoMenu> grupos = RrhhGrupoMenu.ListarGrupos(); if (grupos != null) { //ahora recorremos los grupos y nos traemos los subgrupos foreach (Entidad.RrhhGrupoMenu grupo in grupos) { //provechamos de agregar los item al envoltorio ItemMenu envoltorio = new ItemMenu(); envoltorio.Name = grupo.GrpItem; envoltorio.NavigateUrl = grupo.GrpUrl; envoltorio.Text = grupo.GrpItem; //por mientras visible siempre envoltorio.Visible = true; //ahora hacemos la llamada de negocio para traernos los subgrupos por grupo List <Entidad.RrhhSubgrupoMenu> subgrupos = RrhhSubgrupoMenu.ListarSubGruposPorIdGrupo(grupo.GrpId); //recorremos los subgrupos para asociarlos al menu envoltorio.ItemsDelGrupo = new List <SubItemMenu>(); if (subgrupos != null && subgrupos.Count > 0) { foreach (Entidad.RrhhSubgrupoMenu subgrupo in subgrupos) { //si en ese subgrupo existe el rol lo agregamos, para eso verificamos la relacion List <Entidad.RrhhRlRolMenu> listaRls = RrhhRlRolMenu.ListarRlPorRolId(rolId); bool existeRol = false; if (listaRls != null && listaRls.Count > 0) { existeRol = listaRls.Exists(p => p.RolId == rolId && p.SgrpId == subgrupo.SgrpId); } SubItemMenu items = new SubItemMenu(); items.Name = subgrupo.SgrpItem; items.NavigateUrl = subgrupo.SgrpUrl; items.Text = subgrupo.SgrpItem; items.ToolTip = subgrupo.SgrpItem; if (existeRol) { items.Visible = true; } else { items.Visible = false; } //los agregamos a la lista del envoltorio envoltorio.ItemsDelGrupo.Add(items); } } //acá debieramos agregar a la lista que devolvemos el elemento completo, //pero antes evaluamos si tiene subitems visibles para mostrarlos //entonces int cantidadVisiblesSubItem = 0; if (envoltorio.ItemsDelGrupo != null && envoltorio.ItemsDelGrupo.Count > 0) { cantidadVisiblesSubItem = envoltorio.ItemsDelGrupo.Count(p => p.Visible == true); } if (cantidadVisiblesSubItem == 0) { //el grupo queda no visible envoltorio.Visible = false; } listaDevolver.Add(envoltorio); } } return(listaDevolver); }