예제 #1
0
        public List <menuFunctionGroupView> getUserRole(string userId)
        {
            using (var ctx = new ConXContext())
            {
                //List<su_menu> menu = ctx.menu.SqlQuery("select  LEVEL , MENU_ID, MENU_NAME , MENU_TYPE, LINK_NAME , MAIN_MENU , ICON_NAME from su_menu where EXISTS   (select MENU_ID  from su_role_menu  WHERE MENU_ID= SU_MENU.MENU_ID AND EXISTS (select role_id from su_user_role  WHERE ROLE_ID= SU_ROLE_MENU.ROLE_ID  and user_id = :param1)) CONNECT BY PRIOR MENU_ID = MAIN_MENU START WITH  menu_id ='MOB0000000' ORDER BY MENU_ID", new OracleParameter("param1", userId)).ToList();
                string sql = "select  level , menu_id, menu_name , menu_type, main_menu , icon_name , link_name from su_menu where EXISTS   (select MENU_ID  from su_role_menu  WHERE MENU_ID= SU_MENU.MENU_ID AND EXISTS (select role_id from su_user_role  WHERE ROLE_ID= SU_ROLE_MENU.ROLE_ID  and user_id = :param1)) CONNECT BY PRIOR MENU_ID = MAIN_MENU START WITH  menu_id ='MOB0000000' ORDER BY MENU_ID";

                List <menuView> menu = ctx.Database.SqlQuery <menuView>(sql, new OracleParameter("param1", userId)).ToList();

                List <menuFunctionView> functionViews = new List <menuFunctionView>();


                foreach (var x in menu)
                {
                    menuFunctionView view = new menuFunctionView()
                    {
                        menuFunctionGroupId = x.main_menu,
                        menuFunctionId      = x.menu_id,
                        menuFunctionName    = x.menu_name,
                        iconName            = x.icon_name,
                        menuURL             = x.link_name,
                    };


                    functionViews.Add(view);
                }



                List <menuFunctionGroupView> groupView = new List <menuFunctionGroupView>();

                foreach (var x in menu)
                {
                    menuFunctionGroupView view = new menuFunctionGroupView()
                    {
                        menuFunctionGroupId   = x.menu_id,
                        menuFunctionGroupName = x.menu_name,
                        iconName         = x.icon_name,
                        menuFunctionList = functionViews
                                           .Where(o => o.menuFunctionGroupId == x.menu_id)
                                           .ToList()
                    };

                    if (x.menu_type == "M" && x.menu_id != "MOB0000000")
                    {
                        groupView.Add(view);
                    }
                }

                return(groupView);
            }
        }
예제 #2
0
        public List <menuFunctionGroupView> getUserRole(long userRoleId)
        {
            using (var ctx = new ConXContext())
            {
                List <UserRoleFunctionAuthorization> role = ctx.UserRoleFunctionAuthorizations
                                                            .Include("menuFunction")
                                                            .Include("userRoleFunctionAccessList")
                                                            .Include("userRoleFunctionAccessList.menuFunctionAction")
                                                            .Where(x => x.userRoleId == userRoleId)
                                                            .ToList();


                List <menuFunctionView> functionViews = new List <menuFunctionView>();

                foreach (var x in role)
                {
                    menuFunctionView view = new menuFunctionView()
                    {
                        menuFunctionGroupId = x.menuFunction.menuFunctionGroupId,
                        menuFunctionId      = x.menuFunctionId,
                        menuFunctionName    = x.menuFunction.menuFunctionName,
                        iconName            = x.menuFunction.iconName,
                        menuURL             = x.menuFunction.menuURL,
                        orderDisplay        = x.menuFunction.orderDisplay,
                        actions             = new Dictionary <string, bool>()
                    };

                    foreach (var y in x.userRoleFunctionAccessList)
                    {
                        if (!view.actions.ContainsKey(y.menuFunctionAction.action))
                        {
                            view.actions.Add(y.menuFunctionAction.action, true);
                        }
                    }

                    functionViews.Add(view);
                }

                List <string> allowGroup = functionViews.Select(x => x.menuFunctionGroupId).Distinct().ToList();
                var           groups     = ctx.MenuFunctionGroups
                                           .Where(x => allowGroup.Contains(x.menuFunctionGroupId))
                                           .OrderBy(o => o.orderDisplay)
                                           .ToList();

                List <menuFunctionGroupView> groupView = new List <menuFunctionGroupView>();

                foreach (var x in groups)
                {
                    menuFunctionGroupView view = new menuFunctionGroupView()
                    {
                        menuFunctionGroupId   = x.menuFunctionGroupId,
                        menuFunctionGroupName = x.menuFunctionGroupName,
                        iconName         = x.iconName,
                        menuGroup        = x.menuGroup,
                        orderDisplay     = x.orderDisplay,
                        menuFunctionList = functionViews
                                           .Where(o => o.menuFunctionGroupId == x.menuFunctionGroupId)
                                           .ToList()
                    };

                    groupView.Add(view);
                }

                return(groupView);
            }
        }