using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FrameworkDAL.Query.RoleVsMenu { /// /// RoleVsMenuQB /// public static class RoleVsMenuQB { /// /// SAVE_ROLEVSMENU /// public const string SAVE_ROLEVSMENU = @"INSERT INTO MROLEVSMENU ( ROLEVSMENUID, ROLEID, MENUID, SLNO, ALLOW ) VALUES ( @RoleVsMenuId, @RoleVsMenuRoleId, @RoleVsMenuMenuId, @RoleVsMenuSlNo, @RoleVsMenuAllow ); "; /// /// UPDATE_ROLEVSMENU — diff-save path: reuses the existing ROLEVSMENUID for a /// (RoleId, MenuId) pair that already exists, instead of delete+reinsert, so /// CREATEDON/audit history on unrelated rows survives a save. /// public const string UPDATE_ROLEVSMENU = @" UPDATE MROLEVSMENU SET SLNO = @RoleVsMenuSlNo, ALLOW = @RoleVsMenuAllow WHERE ROLEVSMENUID = @RoleVsMenuId"; /// /// GET_EXISTING_ROLEVSMENU_FOR_MODULE — existing (RoleVsMenuId, MenuId) pairs for a /// role, scoped to a module's menus (same join MMODULEVSMENU shape as the legacy /// DeleteRoleVsMenu), used by the diff-save to compute add/update/delete sets. /// public const string GET_EXISTING_ROLEVSMENU_FOR_MODULE = @" SELECT rv.ROLEVSMENUID AS RoleVsMenuId, rv.MENUID AS RoleVsMenuMenuId FROM MROLEVSMENU rv WHERE rv.ROLEID = @RoleId AND rv.MENUID IN (SELECT DISTINCT MENUID FROM MMODULEVSMENU WHERE MODULEID = @ModuleId)"; /// /// GET_EXISTING_ROLEVSMENU_FOR_MENUIDS — existing (RoleVsMenuId, MenuId) pairs for a /// role, scoped to the specific menu ids in this save batch (PageId != -1 case). /// public const string GET_EXISTING_ROLEVSMENU_FOR_MENUIDS = @" SELECT ROLEVSMENUID AS RoleVsMenuId, MENUID AS RoleVsMenuMenuId FROM MROLEVSMENU WHERE ROLEID = @RoleId AND MENUID IN @MenuIds"; public const string DELETE_ROLEVSMENU_BY_IDS = "DELETE FROM MROLEVSMENU WHERE ROLEVSMENUID IN @Ids"; /// /// GET_ROLE_VS_MENU /// public const string GET_ROLE_VS_MENU = @"SELECT rolevsmenu.ROLEVSMENUID AS RoleVsMenuId, modulevsmenu.MENUID AS RoleVsMenuMenuId, menu.MENUCODE AS RoleVsMenuMenuCode, menu.MENUDISPLAYNAME AS RoleVsMenuMenuName, modulevsmenu.PARENTID AS RoleVsMenuMenuParentId, rolevsmenu.SLNO AS RoleVsMenuSlNo, rolevsmenu.ALLOW AS RoleVsMenuAllow, rolevsmenu.MAXDAYSNORMAL AS RoleVsMenuMaxDaysNormal, rolevsmenu.DAYSLIMIT AS RoleVsMenuDaysLimit, rolevsmenu.MAXRECORDSNORMAL AS RoleVsMenuMaxRecordsNormal, rolevsmenu.RECORDSLIMIT AS RoleVsMenuRecordsLimit FROM MROLEVSMENU rolevsmenu JOIN MMODULEVSMENU modulevsmenu ON rolevsmenu.MENUID = modulevsmenu.MENUID AND modulevsmenu.MODULEID = @moduleid JOIN MMENU menu ON menu.MENUID = rolevsmenu.MENUID WHERE rolevsmenu.ROLEID = @roleid"; /// /// GET_ROLE_VS_MENU_BY_ROLE_ID /// public const string GET_ROLE_VS_MENU_BY_ROLE_ID = @"SELECT rvm.ROLEVSMENUID AS RoleVsMenuId, rvm.ROLEID AS RoleVsMenuRoleId, r.ROLECODE AS RoleVsMenuRoleCode, r.ROLENAME AS RoleVsMenuRoleName, rvm.MENUID AS RoleVsMenuMenuId, m.MENUCODE AS RoleVsMenuMenuCode, m.MENUDISPLAYNAME AS RoleVsMenuMenuName, mvs.PARENTID AS RoleVsMenuMenuParentId, mvs.MODULEID AS RoleVsMenuMenuModuleId, rvm.SLNO AS RoleVsMenuSlNo, rvm.ALLOW AS RoleVsMenuAllow FROM MROLEVSMENU rvm JOIN MMENU m ON m.MENUID = rvm.MENUID JOIN MROLE r ON r.ROLEID = rvm.ROLEID JOIN MMODULEVSMENU mvs ON mvs.MENUID = rvm.MENUID WHERE rvm.ROLEID = @RoleId"; /// /// GET_ROLE_VS_MENU_DETAIL /// public const string GET_ROLE_VS_MENU_DETAIL = @"SELECT rvm.ROLEVSMENUID AS RoleVsMenuId, rvm.ROLEID AS RoleId, r.ROLECODE AS RoleCode, r.ROLENAME AS RoleName, rvm.SLNO AS RoleVsMenuSlNo, rvm.MENUID AS MenuId, m.MENUCODE AS MenuCode, m.MENUDISPLAYNAME AS MenuDisplayName, m.MENUNAME AS MenuName, CASE m.MENUTYPE WHEN 0 THEN 'Master' WHEN 1 THEN 'Transaction' WHEN 2 THEN 'Report' WHEN 3 THEN 'Others' WHEN 4 THEN 'Bot' ELSE '' END AS MenuType, m.MENUNATURE AS MenuNature, m.SECTION AS Section, mvs.MODULEID AS ModuleId, mod.MODULECODE AS ModuleCode, mod.MODULENAME AS ModuleName, mvs.PARENTID AS ParentMenuId, pm.MENUCODE AS ParentMenuCode, pm.MENUNAME AS ParentMenuName, pm.MENUDISPLAYNAME AS ParentDisplayName, rvm.ALLOW AS RoleVsMenuAllow, rvm.ALLOW AS Allow FROM MROLEVSMENU rvm JOIN MMENU m ON m.MENUID = rvm.MENUID JOIN MROLE r ON r.ROLEID = rvm.ROLEID JOIN MMODULEVSMENU mvs ON mvs.MENUID = rvm.MENUID JOIN MMODULE mod ON mod.MODULEID = mvs.MODULEID LEFT JOIN MMENU pm ON pm.MENUID = mvs.PARENTID WHERE (@SearchKeyword IS NULL OR r.ROLENAME LIKE '%' + @SearchKeyword + '%' OR m.MENUCODE LIKE '%' + @SearchKeyword + '%') AND (@MenuId IS NULL OR rvm.MENUID = @MenuId) AND (@RoleId IS NULL OR rvm.ROLEID = @RoleId) AND (@ModuleId IS NULL OR mvs.MODULEID = @ModuleId) AND (@ParentMenuId IS NULL OR mvs.PARENTID = @ParentMenuId) ORDER BY r.ROLENAME, mod.MODULENAME, m.MENUCODE OFFSET @FirstNumber ROWS FETCH NEXT @MaxResult ROWS ONLY"; /// /// GET_ROLE_VS_MENU_REPORT_DETAIL /// public const string GET_ROLE_VS_MENU_REPORT_DETAIL = @"SELECT rvm.ROLEVSMENUID AS RoleVsMenuId, rvm.ROLEID AS RoleId, r.ROLECODE AS RoleCode, r.ROLENAME AS RoleName, rvm.SLNO AS RoleVsMenuSlNo, rvm.MENUID AS MenuId, m.MENUCODE AS MenuCode, m.MENUDISPLAYNAME AS MenuDisplayName, m.MENUNAME AS MenuName, CASE m.MENUTYPE WHEN 0 THEN 'Master' WHEN 1 THEN 'Transaction' WHEN 2 THEN 'Report' WHEN 3 THEN 'Others' WHEN 4 THEN 'Bot' ELSE '' END AS MenuType, m.MENUNATURE AS MenuNature, m.SECTION AS Section, mvs.MODULEID AS ModuleId, mod.MODULECODE AS ModuleCode, mod.MODULENAME AS ModuleName, mvs.PARENTID AS ParentMenuId, pm.MENUCODE AS ParentMenuCode, pm.MENUNAME AS ParentMenuName, pm.MENUDISPLAYNAME AS ParentDisplayName, rvm.ALLOW AS RoleVsMenuAllow, rvm.ALLOW AS Allow FROM MROLEVSMENU rvm JOIN MMENU m ON m.MENUID = rvm.MENUID JOIN MROLE r ON r.ROLEID = rvm.ROLEID JOIN MMODULEVSMENU mvs ON mvs.MENUID = rvm.MENUID JOIN MMODULE mod ON mod.MODULEID = mvs.MODULEID LEFT JOIN MMENU pm ON pm.MENUID = mvs.PARENTID WHERE (@SearchKeyword IS NULL OR r.ROLENAME LIKE '%' + @SearchKeyword + '%' OR m.MENUCODE LIKE '%' + @SearchKeyword + '%') AND (@MenuId IS NULL OR rvm.MENUID = @MenuId) AND (@RoleId IS NULL OR rvm.ROLEID = @RoleId) AND (@ModuleId IS NULL OR mvs.MODULEID = @ModuleId) AND (@ParentMenuId IS NULL OR mvs.PARENTID = @ParentMenuId) ORDER BY r.ROLENAME, mod.MODULENAME, m.MENUCODE OFFSET @FirstNumber ROWS FETCH NEXT @MaxResult ROWS ONLY"; /// /// GET_ROLE_VS_MENU_FOR_MENU /// public const string GET_ROLE_VS_MENU_FOR_MENU = @"SELECT rvm_mod.ROLEID AS RoleId, r.ROLENAME AS RoleName, CASE WHEN MAX(CASE WHEN rvm.MENUID IS NULL THEN 0 ELSE 1 END) = 0 THEN CAST(1 AS TINYINT) ELSE CAST(0 AS TINYINT) END AS IsAvailable, MAX(rvm.ALLOW) AS Allow FROM MROLEVSMODULES rvm_mod JOIN MROLE r ON r.ROLEID = rvm_mod.ROLEID LEFT JOIN MROLEVSMENU rvm ON rvm.ROLEID = rvm_mod.ROLEID AND rvm.MENUID = @MenuId WHERE rvm_mod.ROLEID <> -1 AND rvm_mod.MODULEID = @ModuleId GROUP BY rvm_mod.ROLEID, r.ROLENAME ORDER BY r.ROLENAME"; /// /// GET_MENU_FROM_MODULEMENU /// public const string GET_MENU_FROM_MODULEMENU = @"Select" + "\r\n" + " distinct menusetdetail.MenuId as RoleVsMenuMenuId," + "\r\n" + " Menu.MENUCODE as RoleVsMenuMenuCode," + "\r\n" + " Menu.MenuDisplayName as RoleVsMenuMenuName," + "\r\n" + " modulevsmenu.ParentId as RoleVsMenuMenuParentId" + "\r\n" + " from " + "\r\n" + " mMenuSetDetail menusetdetail,mMenuSet menuset,mModuleVsMenu modulevsmenu, MMENU menu" + "\r\n" + " where " + "\r\n" + " menuset.MENUSETID=menusetdetail.MenuSetId " + "\r\n" + " and modulevsmenu.MenuId=menusetdetail.MenuId " + "\r\n" + " and menusetdetail.MENUID = menu.MENUID" + "\r\n" + " and menusetdetail.ISVISIBLE = 0 " + "\r\n" + " and menusetdetail.MenuId NOT IN ( " + "\r\n" + " select rolevsmenu.MenuId as RoleVsMenuMenuId from " + "\r\n" + " MRoleVsMenu rolevsmenu where rolevsmenu.RoleId=@roleid) " + "\r\n" + " and modulevsmenu.ModuleId=@moduleid " + "\r\n"; } }