private ClientScreenDo getMenuFromGroup(List <ClientScreenDo> menus, int?groupID) { foreach (ClientScreenDo menu in menus) { if (menu.groupID == groupID) { return(menu); } else if (menu.hasChildren) { ClientScreenDo m = getMenuFromGroup(menu.childrens, groupID); if (m != null) { return(m); } } } return(null); }
public async Task <IActionResult> GetScreenMenu() { return(await this.ControllerResult(async (Web.Models.ResultData result) => { Web.Models.User.ApplicationUser user = await _userManager.GetUserAsync(this.User); List <ClientScreenDo> menus = new List <ClientScreenDo>(); foreach (Web.Models.ScreenDo scn in Web.Constants.SCREEN_LIST) { if (Utils.CommonUtil.IsNullOrEmpty(scn.Path)) { continue; } if (scn.FlagPermission && await _userManager.IsInRoleAsync(user, string.Format("{0}:1", scn.ScreenID)) == false) { continue; } if (!scn.FlagMenu) { ClientScreenDo m = new ClientScreenDo(); m.screenID = scn.ScreenID; m.url = scn.Path; m.nameEN = scn.NameEN; m.nameLC = scn.NameLC; m.icon = scn.ImageIcon; m.isMenu = false; menus.Add(m); } else { if (Utils.CommonUtil.IsNullOrEmpty(scn.GroupID) == false) { ClientScreenDo mg = getMenuFromGroup(menus, scn.GroupID); if (mg == null) { mg = new ClientScreenDo(); mg.groupID = scn.GroupID; mg.nameEN = scn.GroupNameEN; mg.nameLC = scn.GroupNameLC; mg.icon = scn.GroupImageIcon; mg.isMenu = true; mg.childrens = new List <ClientScreenDo>(); menus.Add(mg); } ClientScreenDo smg = null; if (Utils.CommonUtil.IsNullOrEmpty(scn.SubGroupID) == false) { if (mg.childrens == null) { mg.childrens = new List <ClientScreenDo>(); } smg = mg.childrens.Find(x => x.groupID == scn.SubGroupID); if (smg == null) { smg = new ClientScreenDo(); smg.groupID = scn.SubGroupID; smg.nameEN = scn.SubGroupNameEN; smg.nameLC = scn.SubGroupNameLC; smg.icon = scn.SubGroupImageIcon; smg.isMenu = true; smg.childrens = new List <ClientScreenDo>(); mg.childrens.Add(smg); } } ClientScreenDo m = new ClientScreenDo(); m.screenID = scn.ScreenID; m.url = scn.Path; m.nameEN = scn.NameEN; m.nameLC = scn.NameLC; m.icon = scn.ImageIcon; m.isMenu = true; if (smg != null) { smg.childrens.Add(m); } else { mg.childrens.Add(m); } } else { ClientScreenDo m = new ClientScreenDo(); m.screenID = scn.ScreenID; m.url = scn.Path; m.nameEN = scn.NameEN; m.nameLC = scn.NameLC; m.icon = scn.ImageIcon; m.isMenu = true; menus.Add(m); } } } updateMenu1Children(menus); result.Data = menus; })); }