public IEnumerable <MenuRetornoDto> ObterMenu() { var permissoes = servicoUsuario.ObterPermissoes(); var agrupamentos = permissoes.GroupBy(item => new { Descricao = item.GetAttribute <PermissaoMenuAttribute>().Agrupamento, Ordem = (int)item.GetAttribute <PermissaoMenuAttribute>().OrdemAgrupamento }).OrderBy(a => a.Key.Ordem) .ToList(); var listaRetorno = new List <MenuRetornoDto>(); foreach (var agrupamento in agrupamentos) { var permissao = agrupamento.First(); var atributoEnumerado = permissao.GetAttribute <PermissaoMenuAttribute>(); var menuRetornoDto = new MenuRetornoDto() { Codigo = (int)permissao, Descricao = atributoEnumerado.Agrupamento, Icone = atributoEnumerado.Icone, EhMenu = atributoEnumerado.EhMenu }; var permissoesMenu = agrupamento.GroupBy(item => new { item.GetAttribute <PermissaoMenuAttribute>().Menu, Ordem = (int)item.GetAttribute <PermissaoMenuAttribute>().OrdemMenu }).OrderBy(a => a.Key.Ordem) .ToList(); foreach (var permissaoMenu in permissoesMenu) { var menu = permissaoMenu.First(); var menuEnumerado = menu.GetAttribute <PermissaoMenuAttribute>(); if (menuEnumerado.EhSubMenu) { var menuPai = new MenuPermissaoDto() { Codigo = (int)menu, Descricao = menuEnumerado.Menu }; menuPai.SubMenus.Add(new MenuPermissaoDto() { Codigo = (int)menu, Url = menuEnumerado.Url, Descricao = menuEnumerado.SubMenu, PodeAlterar = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhAlteracao), PodeIncluir = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhInclusao), PodeExcluir = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhExclusao), PodeConsultar = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhConsulta), }); menuRetornoDto.Menus.Add(menuPai); } else { menuRetornoDto.Menus.Add(new MenuPermissaoDto() { Codigo = (int)menu, Url = menuEnumerado.Url, Descricao = menuEnumerado.Menu, PodeAlterar = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhAlteracao), PodeIncluir = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhInclusao), PodeExcluir = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhExclusao), PodeConsultar = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhConsulta), }); } } listaRetorno.Add(menuRetornoDto); } return(listaRetorno); }
public IEnumerable <MenuRetornoDto> ObterMenu() { var permissoes = servicoUsuario.ObterPermissoes(); var agrupamentos = permissoes.Where(c => Enum.IsDefined(typeof(Permissao), c)).GroupBy(item => new { Descricao = item.GetAttribute <PermissaoMenuAttribute>().Agrupamento, Ordem = item.GetAttribute <PermissaoMenuAttribute>().OrdemAgrupamento }).OrderBy(a => a.Key.Ordem) .ToList(); var listaRetorno = new List <MenuRetornoDto>(); foreach (var agrupamento in agrupamentos) { var permissao = agrupamento.First(); var atributoEnumerado = permissao.GetAttribute <PermissaoMenuAttribute>(); var menuRetornoDto = new MenuRetornoDto() { Codigo = (int)permissao, Descricao = atributoEnumerado.Agrupamento, Icone = atributoEnumerado.Icone, EhMenu = atributoEnumerado.EhMenu }; var permissoesMenu = agrupamento.GroupBy(item => new { item.GetAttribute <PermissaoMenuAttribute>().Menu, Ordem = item.GetAttribute <PermissaoMenuAttribute>().OrdemMenu }).OrderBy(a => a.Key.Ordem) .ToList(); foreach (var permissaoMenu in permissoesMenu) { var menu = permissaoMenu.First(); var menuEnumerado = menu.GetAttribute <PermissaoMenuAttribute>(); if (menuEnumerado.EhSubMenu) { var menuPai = new MenuPermissaoDto() { Codigo = (int)menu, Descricao = menuEnumerado.Menu, }; foreach (var subMenu in permissaoMenu.GroupBy(a => a.GetAttribute <PermissaoMenuAttribute>().Url)) { if (menuEnumerado.EhSubMenu) { var menuSubEnumerado = subMenu.FirstOrDefault(); var menuSubEnumeradoComAtributo = menuSubEnumerado.GetAttribute <PermissaoMenuAttribute>(); var url = ObterUrlComRedirect(menuSubEnumeradoComAtributo); menuPai.SubMenus.Add(new MenuPermissaoDto() { Codigo = (int)menuSubEnumerado, Url = url, Descricao = menuSubEnumeradoComAtributo.SubMenu, Ordem = menuSubEnumeradoComAtributo.OrdemSubMenu, PodeConsultar = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhConsulta), PodeAlterar = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhAlteracao), PodeIncluir = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhInclusao), PodeExcluir = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhExclusao) }); } } menuRetornoDto.Menus.Add(menuPai); } else { var url = ObterUrlComRedirect(menuEnumerado); menuRetornoDto.Menus.Add(new MenuPermissaoDto() { Codigo = (int)menu, Url = url, Descricao = menuEnumerado.Menu, PodeAlterar = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhAlteracao), PodeIncluir = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhInclusao), PodeExcluir = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhExclusao), PodeConsultar = permissaoMenu.Any(a => a.GetAttribute <PermissaoMenuAttribute>().EhConsulta), }); } } menuRetornoDto.Menus = menuRetornoDto.Menus.OrderBy(a => a.Ordem).ToList(); listaRetorno.Add(menuRetornoDto); } return(listaRetorno); }