public List<AdminMenuViewModel> GetChilds(int ParentId) { var childsList = _adminMenuService.GetMany(m => m.Parent == ParentId).ToList(); var childsListVM = new List<AdminMenuViewModel>(); foreach (var menu in childsList) { var menuResult = new AdminMenuViewModel() { Name = menu.Name, Url = menu.Url, CssIcon = menu.CssIcon, LabelCss = menu.LabelCss, Type = menu.Type, Parent = menu.Parent, Order = menu.Order, Available = menu.Available, Childs = GetChilds(menu.Id) }; childsListVM.Add(menuResult); } return childsListVM; }
// GET: api/AdminMenu public HttpResponseMessage GetMenus() { try { if (User.Identity.IsAuthenticated) { var userId = User.Identity.GetUserId(); var menuResultList = new List<AdminMenuViewModel>(); var parentMenuList = new List<AdminMenu>(); if (UserManager.IsInRole(userId, "Admin")) parentMenuList = _adminMenuService.GetMany(m => m.Parent == 0 && m.Available == true) .OrderBy(m => m.Order).ToList(); else parentMenuList = _adminMenuService.GetMany(m => m.Parent == 0 && m.IsAdmin == false && m.Available == true) .OrderBy(m => m.Order).ToList(); foreach (var menu in parentMenuList) { var menuResult = new AdminMenuViewModel() { Name = menu.Name, Url = menu.Url, CssIcon = menu.CssIcon, LabelCss = menu.LabelCss, Type = menu.Type, Parent = menu.Parent, Order = menu.Order, Available = menu.Available, Childs = GetChilds(menu.Id) }; menuResultList.Add(menuResult); } return Request.CreateResponse(HttpStatusCode.OK, menuResultList); } else { return Request.CreateResponse(HttpStatusCode.InternalServerError); } } catch (Exception) { return Request.CreateResponse(HttpStatusCode.InternalServerError); throw; } }