public static IEnumerable <DataRow> GetMenuStatusList( DbConnection sqlConnection, QPModelDataContext efContext, int userId, bool isAdmin, string menuCode, int entityId) { var useSecurity = !isAdmin; var databaseType = DatabaseTypeHelper.ResolveDatabaseType(sqlConnection); var menuId = efContext.ContextMenuSet.First(x => x.Code == menuCode).Id; string query; if (!useSecurity) { query = $@" SELECT ba.CODE, {SqlQuerySyntaxHelper.ToBoolSql(databaseType, true)} as visible FROM CONTEXT_MENU_ITEM cmi INNER JOIN BACKEND_ACTION ba on ba.ID = cmi.ACTION_ID WHERE cmi.context_menu_id = {menuId} "; } else { var level = GetEntityAccessLevel(sqlConnection, efContext, userId, 0, menuCode, entityId); var secQuery = PermissionHelper.GetActionPermissionsAsQuery(efContext, userId); var least = SqlQuerySyntaxHelper.Least(databaseType, "SEC.PERMISSION_LEVEL", level.ToString()); query = $@" SELECT ba.CODE, CAST(( CASE WHEN {least} >= PL.PERMISSION_LEVEL THEN 1 ELSE 0 END ) AS BIT) as visible FROM CONTEXT_MENU_ITEM cmi INNER JOIN BACKEND_ACTION ba on ba.ID = cmi.ACTION_ID INNER JOIN ACTION_TYPE at on ba.TYPE_ID = at.ID INNER JOIN PERMISSION_LEVEL PL ON PL.PERMISSION_LEVEL_ID = AT.REQUIRED_PERMISSION_LEVEL_ID INNER JOIN ({secQuery}) SEC ON SEC.BACKEND_ACTION_ID = ba.ID WHERE cmi.context_menu_id = {menuId} "; } return(Common.GetDataTableForQuery(sqlConnection, query)); }
public static IEnumerable <DataRow> GetActionStatusList(QPModelDataContext efContext, DbConnection sqlConnection, int userId, string actionCode, int?actionId, int entityId, string entityCode, bool isAdmin) { var useSecurity = !isAdmin; var databaseType = DatabaseTypeHelper.ResolveDatabaseType(sqlConnection); string query; if (!useSecurity) { query = $@" SELECT ba.CODE, {SqlQuerySyntaxHelper.ToBoolSql(databaseType, true)} as visible FROM ACTION_TOOLBAR_BUTTON atb INNER JOIN BACKEND_ACTION ba on ba.ID = atb.ACTION_ID INNER JOIN ACTION_TYPE at on ba.TYPE_ID = at.ID WHERE atb.PARENT_ACTION_ID = {actionId} AND at.items_affected = 1 "; } else { var level = GetEntityAccessLevel(sqlConnection, efContext, userId, 0, entityCode, entityId); var least = SqlQuerySyntaxHelper.Least(databaseType, "SEC.PERMISSION_LEVEL", level.ToString()); var secQuery = PermissionHelper.GetActionPermissionsAsQuery(efContext, userId); query = $@" SELECT ba.CODE, CAST(( CASE WHEN {least} >= PL.PERMISSION_LEVEL THEN 1 ELSE 0 END ) AS BIT) as visible FROM ACTION_TOOLBAR_BUTTON atb INNER JOIN BACKEND_ACTION ba on ba.ID = atb.ACTION_ID INNER JOIN ACTION_TYPE at on ba.TYPE_ID = at.ID INNER JOIN PERMISSION_LEVEL PL ON PL.PERMISSION_LEVEL_ID = AT.REQUIRED_PERMISSION_LEVEL_ID INNER JOIN ({secQuery}) SEC ON SEC.BACKEND_ACTION_ID = ba.ID WHERE atb.PARENT_ACTION_ID = {actionId} AND at.items_affected = 1 "; } return(Common.GetDataTableForQuery(sqlConnection, query)); }