namespace FrameworkDAL.Query.SysJobShare { public static class SysJobShareQB { /// /// Single share record with user name JOINs. /// public const string GET_SYSJOBSHARE = @" SELECT SH.SYSJOBSHAREID AS SysJobShareId, SH.SYSJOBID AS SysJobId, SH.SHAREDWITHUSERID AS SharedWithUserId, UW.USERNAME AS SharedWithUserName, SH.CANEXECUTE AS CanExecute, SH.CANVIEWRESULT AS CanViewResult, SH.SHAREDBYID AS SharedById, UB.USERNAME AS SharedByName, SH.SHAREDON AS SharedOn, SH.TENANTID AS TenantId FROM TSYSJOBSHARE SH LEFT JOIN MUSER UW ON UW.USERID = SH.SHAREDWITHUSERID LEFT JOIN MUSER UB ON UB.USERID = SH.SHAREDBYID WHERE SH.SYSJOBSHAREID = @SysJobShareId;"; /// /// All share records for a given job (who has access). /// Required index: IX_TSYSJOBSHARE_SysJobId /// public const string GET_LIST_SYSJOBSHARE = @" SELECT SH.SYSJOBSHAREID AS SysJobShareId, SH.SYSJOBID AS SysJobId, SH.SHAREDWITHUSERID AS SharedWithUserId, UW.USERNAME AS SharedWithUserName, SH.CANEXECUTE AS CanExecute, SH.CANVIEWRESULT AS CanViewResult, SH.SHAREDBYID AS SharedById, UB.USERNAME AS SharedByName, SH.SHAREDON AS SharedOn, SH.TENANTID AS TenantId FROM TSYSJOBSHARE SH LEFT JOIN MUSER UW ON UW.USERID = SH.SHAREDWITHUSERID LEFT JOIN MUSER UB ON UB.USERID = SH.SHAREDBYID WHERE SH.SYSJOBID = @SysJobId ORDER BY SH.SHAREDON DESC;"; public const string SAVE_SYSJOBSHARE = @" INSERT INTO TSYSJOBSHARE ( SYSJOBSHAREID, SYSJOBID, SHAREDWITHUSERID, CANEXECUTE, CANVIEWRESULT, SHAREDBYID, SHAREDON, TENANTID ) SELECT @SysJobShareId, @SysJobId, @SharedWithUserId, @CanExecute, @CanViewResult, @SharedById, @SharedOn, @TenantId WHERE EXISTS ( SELECT 1 FROM TSYSJOB WHERE SYSJOBID = @SysJobId AND SUBMITTEDBYID = @SharedById AND TENANTID = @TenantId ) AND NOT EXISTS ( SELECT 1 FROM TSYSJOBSHARE WHERE SYSJOBID = @SysJobId AND SHAREDWITHUSERID = @SharedWithUserId AND TENANTID = @TenantId );"; public const string UPDATE_SYSJOBSHARE = @"UPDATE TSYSJOBSHARE SET CANEXECUTE = @CanExecute, CANVIEWRESULT = @CanViewResult WHERE SYSJOBSHAREID = @SysJobShareId AND TENANTID = @TenantId AND SHAREDBYID = @SharedById;"; public const string DELETE_SYSJOBSHARE = @"DELETE FROM TSYSJOBSHARE WHERE SYSJOBSHAREID = @SysJobShareId AND TENANTID = @TenantId AND SHAREDBYID = @SharedById;"; /// /// Check if a specific user has CanViewResult access to a job. /// Returns 1 if owner or has share, 0 otherwise. /// public const string CHECK_RESULT_ACCESS = @" SELECT COUNT(1) FROM TSYSJOB S WHERE S.SYSJOBID = @SysJobId AND ( S.SUBMITTEDBYID = @UserId OR EXISTS ( SELECT 1 FROM TSYSJOBSHARE SH WHERE SH.SYSJOBID = S.SYSJOBID AND SH.SHAREDWITHUSERID = @UserId AND SH.CANVIEWRESULT = 1 ) );"; } }