Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
            }));
        }