spUserPrivs

Parameters

Parameter Parameter Type Mode Description
@ClientUsersID int IN
@ClientsID int IN
@ObjectTypeFilter int IN

Definition

Copy

                CREATE PROCEDURE [dbo].[spUserPrivs]
    (
    @ClientUsersID int,
    @ClientsID int,
    @ObjectTypeFilter int
    )

    AS
    begin

    CREATE TABLE #Temp (ObjectTypeID int, ClientRolesID int, canView bit, canAdd bit, canEdit bit, canDelete bit, canSecure bit, ObjectGuid uniqueidentifier)--, unique(ObjectGuid, ClientRolesID))

    create nonclustered index IX_Temp on #Temp(ObjectGuid)

    INSERT INTO #Temp
    SELECT OP.ObjectTypesID, OP.ClientRolesID, OP.CanView, OP.CanAdd, OP.CanEdit, OP.CanDelete, OP.CanSecure, OP.ObjectGuid
    FROM dbo.fnUserRoles(@ClientUsersID,@ClientsID) UR
    INNER JOIN [dbo].RoleObjectPrivs OP ON OP.ClientRolesID = UR.ClientRolesID

    SELECT
    O.Guid ObjectGuid,
    1 ObjectTypeID,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canView,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    O.ClientSitesID ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN SiteContent O on O.GUID = OP.ObjectGUID
    WHERE @ObjectTypeFilter IN (0,1) AND O.DELETED = 0 AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.OwnerID,O.ID,O.ClientSitesID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    2 ObjectTypeID,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canView,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    O.ClientSitesID ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN SitePages O on O.GUID = OP.ObjectGUID
    WHERE @ObjectTypeFilter IN (0,2,3) AND O.DELETED = 0 AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.OwnerID,O.ID,O.ClientSitesID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    4 ObjectTypeID,
    CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
    CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    O.ClientSitesID ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN SiteImages O on O.GUID = OP.ObjectGUID
    WHERE @ObjectTypeFilter IN (0,4) AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.ID,O.ClientSitesID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    5 ObjectTypeID,
    CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
    CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    0 ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN ApplicationTasks O on O.GUID = OP.ObjectGUID
    WHERE @ObjectTypeFilter IN (0,5) AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.ID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    8 ObjectTypeID,
    CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
    CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    O.ID ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN ClientSites O on O.GUID = OP.ObjectGUID
    WHERE @ObjectTypeFilter IN (0,8) AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.ID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    12 ObjectTypeID,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canView,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    0 ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN EmailList O on O.GUID = OP.ObjectGUID
    WHERE @ObjectTypeFilter IN (0,12) AND O.DELETED = 0 AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.OwnerID,O.ID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    14 ObjectTypeID,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canView,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    O.ClientSitesID ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN EmailTemplate O on O.GUID = OP.ObjectGUID
    WHERE @ObjectTypeFilter IN (0,14) AND O.DELETED = 0 AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.OwnerID,O.ID, O.ClientSitesID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    18 ObjectTypeID,
    CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
    CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    0 ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN ClientClassYears O on O.GUID = OP.ObjectGUID
    WHERE @ObjectTypeFilter IN (0,18) AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.ID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    20 ObjectTypeID,
    CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
    CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    sc.ClientSitesID ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN DocUploadPart O on O.GUID = OP.ObjectGUID
    INNER JOIN SiteContent sc on O.SiteContentID = sc.ID
    WHERE @ObjectTypeFilter IN (0,20) AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.ID,sc.ClientSitesID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    21 ObjectTypeID,
    CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
    CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    sc.ClientSitesID ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN DiscussionGroups O on O.GUID = OP.ObjectGUID
    INNER JOIN SiteContent sc on O.SiteContentID = sc.ID
    WHERE @ObjectTypeFilter IN (0,21) AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.ID,sc.ClientSitesID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    22 ObjectTypeID,
    CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
    CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    sc.ClientSitesID ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN JobBoards O on O.GUID = OP.ObjectGUID
    INNER JOIN SiteContent sc on O.SiteContentID = sc.ID
    WHERE @ObjectTypeFilter IN (0,22) AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.ID,sc.ClientSitesID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    25 ObjectTypeID,
    CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
    CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    sc.ClientSitesID ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN GivingHistory O on O.GUID = OP.ObjectGUID
    INNER JOIN SiteContent sc on O.SiteContentID = sc.ID
    WHERE @ObjectTypeFilter IN (0,25) AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.ID,sc.ClientSitesID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    26 ObjectTypeID,
    CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
    CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    sc.ClientSitesID ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN NewsReaders O on O.GUID = OP.ObjectGUID
    INNER JOIN SiteContent sc on O.SiteContentID = sc.ID
    WHERE @ObjectTypeFilter IN (0,26) AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.ID,sc.ClientSitesID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    27 ObjectTypeID,
    CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
    CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    sc.ClientSitesID ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN NewsChannels O on O.GUID = OP.ObjectGUID
    INNER JOIN SiteContent sc on O.SiteContentID = sc.ID
    WHERE @ObjectTypeFilter IN (0,27) AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.ID,sc.ClientSitesID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    30 ObjectTypeID,
    CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
    CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    O.ClientSitesID ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN SiteStylesheets O on O.GUID = OP.ObjectGUID
    WHERE @ObjectTypeFilter IN (0,30) AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.ID,O.ClientSitesID

    UNION ALL

    SELECT
    O.CalendarCategoryPicksID ObjectGuid,
    31 ObjectTypeID,
    CASE WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canView,
    CASE WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1) ELSE CONVERT(bit,0) END canSecure,
    O.EventCalendarID  RecordID,
    sc.ClientSitesID ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN CalendarEvtCategoryPicks O on O.CalendarCategoryPicksID = OP.ObjectGUID
    INNER JOIN EventCalendar ec on O.EventCalendarID = ec.ID
    INNER JOIN SiteContent sc on ec.SiteContentID = sc.ID
    WHERE @ObjectTypeFilter IN (0,31) AND O.CalendarCategoryPicksID IS NOT NULL
    GROUP BY O.CalendarCategoryPicksID,O.EventCalendarID,sc.ClientSitesID

    UNION ALL

    SELECT
    O.Guid ObjectGuid,
    33 ObjectTypeID,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanView,1)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canView,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanEdit,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canEdit,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanAdd,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canAdd,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanDelete,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canDelete,
    CASE WHEN O.OwnerID=NULLIF(@ClientUsersID,0) THEN CONVERT(bit,1) WHEN SUM(coalesce(CanSecure,0)) > 0 THEN CONVERT(bit,1)
    ELSE CONVERT(bit,0) END canSecure,
    O.ID RecordID,
    0 ClientSitesID
    FROM #Temp OP
    RIGHT OUTER JOIN EmailProject O on O.GUID = OP.ObjectGUID
    WHERE @ObjectTypeFilter IN (0,33) AND O.DELETED = 0 AND O.GUID IS NOT NULL
    GROUP BY O.GUID,O.OwnerID,O.ID

    drop table #Temp
    end