Example #1
0
        public MenuTreeDto GetNavigationItemV3(List <RoleUser> roleUsers)
        {
            var roleSql = string.Empty;

            for (var i = 0; i < roleUsers.Count; ++i)
            {
                roleSql += "'" + roleUsers[i].RoleID.ToString() + "'" + (i == roleUsers.Count - 1 ? "" : ",");
            }

            var list = _programRepository.SqlQuery <ProgramExDto>(@"WITH Tmp
                  AS(SELECT DISTINCT
                                PR.Access_Value AS Program_ID
                       FROM     dbo.tbLOG_Privilege PR
                       WHERE    Access_Master = 1
                                AND((PR.Privilege_Master = 1
                                        AND PR.Privilege_Value IN (" + roleSql + @")
                                      )
                                      OR(PR.Privilege_Master = 2
                                           AND PR.Privilege_Value = @p0
                                         )
                                    )
                                AND PR.Operation_ID <> 3
                     ),
                Sd
                  AS(SELECT   Program_ID AS ProgramID,
                                Program_Name AS ProgramName,
                                Icon,
                                Parent_ID  AS ParentID,
                                Priority,
                                Url,
                                3 AS Levels
                       FROM     dbo.tbLOG_Program
                       WHERE    Status_Flag = 0
                                AND Is_Visible = 0
                                AND Parent_ID <> 0
                                AND Program_ID IN(SELECT  Program_ID
                                                    FROM    Tmp)
                     ),
                S2
                  AS(SELECT   Program_ID AS ProgramID,
                                Program_Name AS ProgramName,
                                Icon,
                                Parent_ID AS ParentID,
                                Priority,
                                Url,
                                2 AS Levels
                       FROM     dbo.tbLOG_Program
                       WHERE    Status_Flag = 0
                                AND Is_Visible = 0
                                AND Program_ID IN(SELECT  ParentID
                                                    FROM    Sd)
                     ),
                S3 AS(SELECT   Program_ID AS ProgramID,
                                Program_Name AS ProgramName,
                                Icon,
                                Parent_ID AS ParentID,
                                Priority,
                                Url,
                                1 AS Levels
                       FROM     dbo.tbLOG_Program
                       WHERE    Status_Flag = 0
                                AND Is_Visible = 0
                                AND Program_ID IN(SELECT  ParentID
                                                    FROM    S2)
                     )
                SELECT ProgramID,
                        ProgramName,
                        Icon,
                        ParentID,
                        Priority,
                        Url,
                        Levels
                FROM S3
                UNION
                SELECT  ProgramID ,
                        ProgramName ,
                        Icon ,
                        ParentID ,
                        Priority ,
                        Url ,
                        Levels
                FROM    S2
                UNION
                SELECT ProgramID,
                        ProgramName,
                        Icon,
                        ParentID,
                        Priority,
                        Url,
                        Levels
                FROM Sd ORDER BY Levels,Priority,S3.ProgramID", roleUsers[0].UserID);

            var menu = new MenuTreeDto()
            {
                CurrentMenu = null, ChildMenus = new List <MenuTreeDto>()
            };

            foreach (var e in list)
            {
                if (e.Levels != 1)
                {
                    continue;
                }

                var secondMenuTree = new MenuTreeDto()
                {
                    CurrentMenu = new Program()
                    {
                        ProgramName = e.ProgramName,
                        ProgramID   = e.ProgramID,
                        Icon        = e.Icon,
                        ParentID    = e.ParentID,
                        Url         = e.Url
                    },
                    ChildMenus = new List <MenuTreeDto>()
                };

                foreach (var e1 in list)
                {
                    if (e1.Levels != 2 || e1.ParentID != e.ProgramID)
                    {
                        continue;
                    }


                    var threesecondMenuTree = new MenuTreeDto()
                    {
                        CurrentMenu = new Program()
                        {
                            ProgramName = e1.ProgramName,
                            ProgramID   = e1.ProgramID,
                            Icon        = e1.Icon,
                            ParentID    = e1.ParentID,
                            Url         = e1.Url
                        },
                        ChildMenus = new List <MenuTreeDto>()
                    };

                    foreach (var e2 in list)
                    {
                        if (e2.Levels != 3 || e2.ParentID != e1.ProgramID)
                        {
                            continue;
                        }

                        threesecondMenuTree.ChildMenus.Add(new MenuTreeDto()
                        {
                            CurrentMenu = new Program()
                            {
                                ProgramName = e2.ProgramName,
                                ProgramID   = e2.ProgramID,
                                Icon        = e2.Icon,
                                ParentID    = e2.ParentID,
                                Url         = e2.Url
                            },
                            ChildMenus = null
                        });
                    }

                    secondMenuTree.ChildMenus.Add(threesecondMenuTree);
                }

                menu.ChildMenus.Add(secondMenuTree);
            }

            return(menu);
        }
Example #2
0
        public MenuTreeDto GetNavigationItem(RoleUser user)
        {
            var list = _programRepository.SqlQuery <ProgramDto>(@"

    WITH    Tmp AS
            (SELECT DISTINCT
                        PR.Access_Value AS Program_ID
               FROM     dbo.tbLOG_Privilege PR
               WHERE    Access_Master = 1
                        AND((PR.Privilege_Master = 1 AND PR.Privilege_Value = @p0)
                              OR(PR.Privilege_Master = 2 AND PR.Privilege_Value = @p1))
                        AND PR.Operation_ID <> 3
             ), Sd AS
            (SELECT   Program_ID,
                        Program_Name,
                        Icon,
                        Parent_ID,
                        Priority,
                        Url
               FROM     dbo.tbLOG_Program
               WHERE    Status_Flag = 0
                        AND Is_Visible = 0
                        AND Parent_ID <> 0 AND Program_ID IN ( SELECT  Program_ID FROM    Tmp)
             )
            SELECT  Program_ID as ProgramID,
                    Program_Name as ProgramName,
                    Icon,
                    Parent_ID as ParentID,
                    Priority,
                    Url
            FROM dbo.tbLOG_Program
            WHERE   Status_Flag = 0
                    AND Is_Visible = 0
                    AND Parent_ID = 0
                    AND Program_ID IN(SELECT  Parent_ID FROM    Sd)
            UNION
            SELECT  Program_ID as ProgramID,
                    Program_Name as ProgramName,
                    Icon ,
                    Parent_ID as ParentID,
                    Priority,
                    Url
            FROM    Sd ORDER BY Priority; ", user.RoleID.ToString(), user.UserID);


            var menu = new MenuTreeDto()
            {
                CurrentMenu = null, ChildMenus = new List <MenuTreeDto>()
            };

            foreach (var e in list)
            {
                if (e.ParentID != 0)
                {
                    continue;
                }

                var secondMenuTree = new MenuTreeDto()
                {
                    CurrentMenu = new Program()
                    {
                        ProgramName = e.ProgramName,
                        ProgramID   = e.ProgramID,
                        Icon        = e.Icon,
                        ParentID    = e.ParentID,
                        Url         = e.Url
                    },
                    ChildMenus = new List <MenuTreeDto>()
                };

                foreach (var e1 in list)
                {
                    if (e1.ParentID == e.ProgramID && e1.ParentID != 0)
                    {
                        secondMenuTree.ChildMenus.Add(new MenuTreeDto()
                        {
                            CurrentMenu = new Program()
                            {
                                ProgramName = e1.ProgramName,
                                ProgramID   = e1.ProgramID,
                                Icon        = e1.Icon,
                                ParentID    = e1.ParentID,
                                Url         = e1.Url
                            },
                            ChildMenus = null
                        });
                    }
                }

                menu.ChildMenus.Add(secondMenuTree);
            }

            return(menu);
        }