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); }
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); }