UFN_CONSTITUENT_CORRESPONDENCE
Returns all correspondence for a given constituent.
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@SITEFILTERMODE | tinyint | IN | |
@SITESSELECTED | xml | IN | |
@SECURITYFEATUREID | uniqueidentifier | IN | |
@SECURITYFEATURETYPE | tinyint | IN | |
@CORRESPONDENCETYPECODE | smallint | IN | |
@STARTDATE | datetime | IN | |
@ENDDATE | datetime | IN | |
@CHANNEL | smallint | IN |
Definition
Copy
CREATE function dbo.UFN_CONSTITUENT_CORRESPONDENCE
(
@CONSTITUENTID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@SITEFILTERMODE tinyint,
@SITESSELECTED xml,
@SECURITYFEATUREID uniqueidentifier,
@SECURITYFEATURETYPE tinyint,
@CORRESPONDENCETYPECODE smallint,
@STARTDATE datetime,
@ENDDATE datetime,
@CHANNEL smallint -- MKTPACKAGE.CHANNELCODE: 0 - Mail, 1 - Email, 2 - Phone, 3 - Public media...Only mail/email current filter values
)
returns table
as
return
with CORRESPONDENCE_CTE as (
-- community emails
select
convert(nchar(36),BBNC.[CONSTITUENTID]) ID,
BBNC.[SENTDATE] DATESENT,
case
when A.ID is null then 11
else 10
end as CORRESPONDENCETYPECODE,
case
when A.ID is null then 'Online Confirmation'
else 'Appeal Mailing'
end as CORRESPONDENCETYPE,
BBNC.[EMAILNAME] as DETAILS,
CA.[USERNAME] as PROCESSOR,
'' as COMMENTS,
'' as RECORDID,
0 as FINDERNUMBER,
@CONSTITUENTID as CONSTITUENTID,
case
when BBNC.DONATED > 0 then convert(bit, 1)
else convert(bit, 0)
end as HASRESPONSES,
'c4479f6a-8b42-49fc-b302-e12215d05c12' as PREVIEWDATAFORM,
convert(nchar(36),BBNC.[ID]) as PREVIEWDATAFORMRECORDID,
A.SiteID as SITEID,
case
when A.SITEID is null
then 2
else 1
end as SITEENFORCEMENT,
1 as CHANNEL,
case when BBNC.BOUNCED = 1 or BBNC.SPAMCOMPLAINT =1 then 1 else 0 end as NOTSENT
from
dbo.[UFN_NETCOMMUNITYEMAILJOBRECIPIENT_EMAIL]() AS BBNC
left join dbo.[BBNCAPPEALIDMAP] BBNCA on BBNCA.[ID] = BBNC.[APPEALID]
left join dbo.[APPEAL] A on A.[ID] = BBNCA.[APPEALID]
left join dbo.[CHANGEAGENT] CA on CA.[ID] = BBNC.[ADDEDBYID]
where
BBNC.[CONSTITUENTID] = @CONSTITUENTID
and [BBNC].[UPDATEDATE] is not null --Newsletter subscriptions can generate incomplete email job recipient rows
and ((@CORRESPONDENCETYPECODE = 6 and A.ID is not null) or (@CORRESPONDENCETYPECODE = 11 and A.ID is null) or @CORRESPONDENCETYPECODE = 99)
and ((BBNC.[SENTDATE] >= @STARTDATE and BBNC.[SENTDATE] <= @ENDDATE) or BBNC.[SENTDATE] is null)
and (@CHANNEL = 1 or @CHANNEL = 99) and BBNC.EMAILTYPEID not in (15, 9, 16) -- filter out test emails with email type BlastTest = 15 and ProjectAppealSeed = 9, and BBDM = 16 for bug 168851
union all
select
convert(nchar(36),C.[ID]) ID,
C.[DATESENT] DATESENT,
0 CORRESPONDENCETYPECODE,
'General Correspondence' CORRESPONDENCETYPE,
CC.NAME DETAILS,
CA.[USERNAME] PROCESSOR,
C.[COMMENTS] COMMENTS,
convert(nchar(36), CORRESPONDENCEPROCESSSTATUS.PARAMETERSETID) RECORDID,
0 FINDERNUMBER,
@CONSTITUENTID as CONSTITUENTID,
case when exists(select 1 from dbo.CONSTITUENTCORRESPONDENCERESPONSE where CONSTITUENTCORRESPONDENCERESPONSE.CONSTITUENTCORRESPONDENCEID=C.ID)
then convert(bit,1) else convert(bit,0) end HASRESPONSES,
'E91F460E-43C0-40DF-BDA9-1D5346E6B535' PREVIEWDATAFORM,
convert(nchar(36),C.[ID]) as PREVIEWDATAFORMRECORDID,
CC.[SITEID] as SITEID,
case
when CC.ID is null
then 0
else 1
end as SITEENFORCEMENT,
99 as CHANNEL,
0 as NOTSENT
from
dbo.[CONSTITUENTCORRESPONDENCE] C
left join dbo.[CORRESPONDENCECODE] CC on CC.[ID] = C.[CORRESPONDENCECODEID]
left join dbo.[CORRESPONDENCEPROCESSRUNHISTORY] on C.CORRESPONDENCEPROCESSRUNHISTORYID = CORRESPONDENCEPROCESSRUNHISTORY.ID
left join dbo.[CORRESPONDENCEPROCESSSTATUS] on CORRESPONDENCEPROCESSSTATUS.ID = CORRESPONDENCEPROCESSRUNHISTORY.CORRESPONDENCEPROCESSSTATUSID
left join dbo.[CHANGEAGENT] CA on CA.[ID] = C.[ADDEDBYID]
where
C.[CONSTITUENTID] = @CONSTITUENTID
and (@CORRESPONDENCETYPECODE = 0 or @CORRESPONDENCETYPECODE = 99)
and (C.[DATESENT] >= @STARTDATE and C.[DATESENT] <= @ENDDATE)
and @CHANNEL = 99
union all
select
convert(nchar(36),R.[ID]),
RL.[ACKNOWLEDGEDATE],
1,
'Acknowledgement',
case when RL.MKTPACKAGEID is not null then
(select COMMUNICATIONLETTER.NAME from dbo.COMMUNICATIONLETTER where COMMUNICATIONLETTER.EMAILPACKAGEID = RL.MKTPACKAGEID or COMMUNICATIONLETTER.MAILPACKAGEID = RL.MKTPACKAGEID)
else
AP.[NAME] + case when AP.[NAME] is not null and AP.[NAME] <> '' and LC.[NAME] is not null and LC.[NAME] <> '' then ' - ' else '' end + LC.[NAME]
end,
case when AU.USERNAME is not null then AU.USERNAME else CA.[USERNAME] end,
'',
'',
0,
@CONSTITUENTID as CONSTITUENTID,
convert(bit,0),
'23c2a927-de76-4faa-b8c2-d4579f36c4fb',
convert(nchar(36),RL.[ID]) as PREVIEWDATAFORMRECORDID,
BPI.[SITEID] as SITEID,
case
when BPI.SITEID is null
then 2
else 1
end as SITEENFORCEMENT,
coalesce(MKTPACKAGE.CHANNELCODE, 99) as CHANNEL,
0 as NOTSENT
from
dbo.[REVENUELETTER] RL
left join dbo.[LETTERCODE] LC on LC.[ID] = RL.[LETTERCODEID]
left join dbo.[ACKNOWLEDGEMENTPROCESSSTATUS] APS on APS.[ID] = RL.[ACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS on BPS.[ID] = RL.[ACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[ACKNOWLEDGEMENTPROCESS] AP on AP.[ID] = APS.[PARAMETERSETID]
left join dbo.[REVENUE] R on R.[ID] = RL.[REVENUEID]
left join dbo.[APPUSER] AU on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT] CA on CA.[ID] = RL.[ADDEDBYID]
left join dbo.BUSINESSPROCESSINSTANCE BPI on AP.ID = BPI.BUSINESSPROCESSPARAMETERSETID
left join dbo.MKTPACKAGE on RL.MKTPACKAGEID = MKTPACKAGE.ID
where
RL.[ACKNOWLEDGEEID] = @CONSTITUENTID and
RL.[ACKNOWLEDGEDATE] is not null and
(@CORRESPONDENCETYPECODE = 1 or @CORRESPONDENCETYPECODE = 99) and
(RL.[ACKNOWLEDGEDATE] >= @STARTDATE and RL.[ACKNOWLEDGEDATE] <= @ENDDATE) and
(@CHANNEL = 99 or MKTPACKAGE.CHANNELCODE = @CHANNEL)
union all
select
convert(nchar(36),R.[ID]),
RECEIPT.[RECEIPTDATE],
2,
'Receipt',
RP.[NAME],
AU.USERNAME,
'',
'',
0,
@CONSTITUENTID as CONSTITUENTID,
convert(bit,0),
'44E05002-D3C8-491F-AE69-C71594AE8C4C',
convert(nchar(36),R.[ID]) as PREVIEWDATAFORMRECORDID,
BPI.[SITEID] as SITEID,
case
when BPI.SITEID is null
then 2
else 1
end as SITEENFORCEMENT,
99 as CHANNEL,
0 as NOTSENT
from
dbo.[REVENUE] R
inner join dbo.[REVENUERECEIPT] RECEIPT on R.ID = RECEIPT.REVENUEID
left join dbo.[RECEIPTINGPROCESSSTATUS] RPS on RPS.[ID] = RECEIPT.[RECEIPTINGPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS on BPS.[ID] = RECEIPT.[RECEIPTINGPROCESSSTATUSID]
left join dbo.[APPUSER] AU on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[RECEIPTINGPROCESS] RP on RP.[ID] = RPS.[PARAMETERSETID]
left join dbo.BUSINESSPROCESSINSTANCE BPI on RP.ID = BPI.BUSINESSPROCESSPARAMETERSETID
where
R.[CONSTITUENTID] = @CONSTITUENTID
and RECEIPT.[RECEIPTDATE] is not null
and (@CORRESPONDENCETYPECODE = 2 or @CORRESPONDENCETYPECODE = 99)
and (RECEIPT.[RECEIPTDATE] >= @STARTDATE and RECEIPT.[RECEIPTDATE] <= @ENDDATE)
and @CHANNEL = 99
union all
select
convert(nchar(36),R.[ID]),
PRS.[SENTDATE],
3,
'Reminder',
PRP.[NAME],
case when AU.USERNAME is not null then AU.USERNAME else CA.[USERNAME] end,
'',
'',
0,
@CONSTITUENTID as CONSTITUENTID,
convert(bit,0),
'A5F58EB7-5775-4B6F-9C69-CD91CD5A0103',
convert(nchar(36),R.[ID]) as PREVIEWDATAFORMRECORDID,
BPI.[SITEID] as SITEID,
case
when BPI.SITEID is null
then 2
else 1
end as SITEENFORCEMENT,
coalesce(MKTPACKAGE.CHANNELCODE, 99) as CHANNEL,
0 as NOTSENT
from
dbo.[PLEDGEREMINDERSENT] PRS
left join dbo.[PLEDGEREMINDERPROCESSSTATUS] PRPS on PRPS.[ID] = PRS.[PLEDGEREMINDERPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS on BPS.[ID] = PRS.[PLEDGEREMINDERPROCESSSTATUSID]
left join dbo.[PLEDGEREMINDERPROCESS] PRP on PRP.[ID] = PRPS.[PARAMETERSETID]
left join dbo.[REVENUE] R on R.[ID] = PRS.[REVENUEID]
left join dbo.[APPUSER] AU on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT] CA on CA.[ID] = PRS.[ADDEDBYID]
left join dbo.BUSINESSPROCESSINSTANCE BPI on PRP.ID = BPI.BUSINESSPROCESSPARAMETERSETID
left join dbo.MKTPACKAGE on PRS.PACKAGEID = MKTPACKAGE.ID
where
R.[CONSTITUENTID] = @CONSTITUENTID and
PRS.[SENTDATE] is not null and
(@CORRESPONDENCETYPECODE = 3 or @CORRESPONDENCETYPECODE = 99) and
(PRS.[SENTDATE] >= @STARTDATE and PRS.[SENTDATE] <= @ENDDATE) and
(@CHANNEL = 99 or MKTPACKAGE.CHANNELCODE = @CHANNEL)
union all
select
convert(nchar(36),PG.[ID]),
PGL.[ACKNOWLEDGEDATE],
4,
'Planned Gift Acknowledgement',
PGAP.[NAME] + case when PGAP.[NAME] is not null and PGAP.[NAME] <> '' and PGLC.[NAME] is not null and PGLC.[NAME] <> '' then ' - ' else '' end + PGLC.[NAME],
case when AU.USERNAME is not null then AU.USERNAME else CA.[USERNAME] end,
'',
'',
0,
@CONSTITUENTID as CONSTITUENTID,
convert(bit,0),
'33afa0f2-b15a-45e3-9c91-dec2c2ef94eb',
convert(nchar(36),PGL.[ID]) as PREVIEWDATAFORMRECORDID,
BPI.[SITEID] as SITEID,
case
when BPI.SITEID is null
then 2
else 1
end as SITEENFORCEMENT,
99 as CHANNEL,
0 as NOTSENT
from
dbo.[PLANNEDGIFTLETTER] PGL
left join dbo.[PLANNEDGIFTLETTERCODE] PGLC on PGLC.[ID] = PGL.[PLANNEDGIFTLETTERCODEID]
left join dbo.[PLANNEDGIFTACKNOWLEDGEMENTPROCESSSTATUS] PGAPS on PGAPS.[ID] = PGL.[PLANNEDGIFTACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS on BPS.[ID] = PGL.[PLANNEDGIFTACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[PLANNEDGIFTACKNOWLEDGEMENTPROCESS] PGAP on PGAP.[ID] = PGAPS.[PARAMETERSETID]
left join dbo.[PLANNEDGIFT] PG on PG.[ID] = PGL.[PLANNEDGIFTID]
left join dbo.[APPUSER] AU on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT] CA on CA.[ID] = PGL.[ADDEDBYID]
left join dbo.BUSINESSPROCESSINSTANCE BPI on PGAP.ID = BPI.BUSINESSPROCESSPARAMETERSETID
where
PG.[CONSTITUENTID] = @CONSTITUENTID
and PGL.[ACKNOWLEDGEDATE] is not null
and (@CORRESPONDENCETYPECODE = 4 or @CORRESPONDENCETYPECODE = 99)
and (PGL.[ACKNOWLEDGEDATE] >= @STARTDATE and PGL.[ACKNOWLEDGEDATE] <= @ENDDATE)
and @CHANNEL = 99
union all
select
upper(IVH.[PARAMETERSETID]),
isnull(IVH.MAILDATE, IVH.[DATECHANGED]),
5,
'Event Invitation',
IVH.[NAME] + case when IVH.[NAME] is not null and IVH.[NAME] <> '' and E.[NAME] is not null and E.[NAME] <> '' then ' - ' else '' end + E.[NAME],
case when AU.USERNAME is not null then AU.USERNAME else CA.[USERNAME] end,
'',
'',
0,
@CONSTITUENTID as CONSTITUENTID,
convert(bit,0),
'0084565a-9858-4670-ade0-7381b11d304b',
upper(IH.ID) as PREVIEWDATAFORMRECORDID,
null as SITEID,
0 as SITEENFORCEMENT,
coalesce(MKTPACKAGE.CHANNELCODE, -1) as CHANNEL,
0 as NOTSENT
from
dbo.[INVITEEHISTORY] IH
left join dbo.[INVITATIONHISTORY] IVH on IVH.[ID] = IH.[INVITATIONHISTORYID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS on BPS.[ID] = IVH.[BUSINESSPROCESSSTATUSID]
left join dbo.[EVENT] E on E.[ID] = IH.[EVENTID]
left join dbo.[APPUSER] AU on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT] CA on CA.[ID] = IH.[ADDEDBYID]
left join dbo.MKTPACKAGE on IH.MKTPACKAGEID = MKTPACKAGE.ID
where
IH.[CONSTITUENTID] = @CONSTITUENTID and
(@CORRESPONDENCETYPECODE = 5 or @CORRESPONDENCETYPECODE = 99) and
(IVH.[DATECHANGED] >= @STARTDATE and IVH.[DATECHANGED] <= @ENDDATE) and
(@CHANNEL = 99 or MKTPACKAGE.CHANNELCODE = @CHANNEL)
union all
-- Appeal and membership mailings
select
convert(nchar(36),MS.[ID]),
CA.[DATESENT],
case
when MS.MAILINGTYPECODE = 2 then 8
when MS.MAILINGTYPECODE = 0 and APPEALMAILING.ID is not null then 9
else 6
end as [CORRESPONDANCETYPECODE],
case
when MS.MAILINGTYPECODE = 2 then 'Membership Renewal'
else 'Appeal Mailing'
end as [CORRESPONDANCETYPE],
A.[NAME] + case when A.[NAME] is not null and A.[NAME] <> '' and MS.[NAME] is not null and MS.[NAME] <> '' then ' - ' else '' end + coalesce(MS.[NAME], '') as [DETAILS],
CHA.[USERNAME],
CA.[COMMENTS],
convert(nchar(36),CA.[ID]),
CA.[FINDERNUMBER],
@CONSTITUENTID as CONSTITUENTID,
case when exists(select 1 from dbo.CONSTITUENTAPPEALRESPONSE where CONSTITUENTAPPEALRESPONSE.CONSTITUENTAPPEALID=CA.ID)
then convert(bit,1) else convert(bit,0) end,
'F37F65F4-B9BC-4F70-9FF9-F40493EBAE6C',
convert(nchar(36),CA.[ID]) as PREVIEWDATAFORMRECORDID,
A.SITEID as SITEID,
case
when A.SITEID is null
then 2
else 1
end as SITEENFORCEMENT,
coalesce(PAC.CHANNELCODE, 99) as CHANNEL,
0 as NOTSENT
from
dbo.[CONSTITUENTAPPEAL] CA
left join dbo.[APPEAL] A on A.[ID] = CA.[APPEALID]
left join dbo.[MKTSEGMENTATION] MS on MS.[ID] = CA.[MKTSEGMENTATIONID]
left join dbo.[CHANGEAGENT] CHA on CHA.[ID] = CA.[ADDEDBYID]
left join dbo.APPEALMAILING on APPEALMAILING.ID = MS.ID
left join dbo.MKTPACKAGE PAC on PAC.ID = CA.MKTPACKAGEID
where
CA.[CONSTITUENTID] = @CONSTITUENTID and
((@CORRESPONDENCETYPECODE = 6 and isnull(MS.MAILINGTYPECODE,0) = 0) or (@CORRESPONDENCETYPECODE = 8 and MS.MAILINGTYPECODE = 2) or @CORRESPONDENCETYPECODE = 99) and
((CA.[DATESENT] >= @STARTDATE and CA.[DATESENT] <= @ENDDATE) or CA.[DATESENT] is null) and
(@CHANNEL = 99 or PAC.CHANNELCODE = @CHANNEL)
union all
select
convert(nchar(36),R.[ID]),
RTL.[ACKNOWLEDGEDATE],
7,
'Tribute Acknowledgement',
TAP.[NAME] + case when TAP.[NAME] is not null and TAP.[NAME] <> '' and TLC.[NAME] is not null and TLC.[NAME] <> '' then ' - ' else '' end + TLC.[NAME],
case when AU.USERNAME is not null then AU.USERNAME else CA.[USERNAME] end,
'',
'',
0,
@CONSTITUENTID as CONSTITUENTID,
convert(bit,0),
'f4dcc1d3-0c5b-478c-aa6d-6ec8ea36a2b2',
convert(nchar(36),RTL.[ID]) as PREVIEWDATAFORMRECORDID,
BPI.[SITEID] as SITEID,
case
when BPI.SITEID is null
then 2
else 1
end as SITEENFORCEMENT,
99 as CHANNEL,
0 as NOTSENT
from
dbo.[REVENUETRIBUTELETTER] RTL
left join dbo.[REVENUETRIBUTE] RT on RTL.[REVENUETRIBUTEID] = RT.[ID]
left join dbo.[TRIBUTELETTERCODE] TLC on TLC.[ID] = RTL.[TRIBUTELETTERCODEID]
left join dbo.[TRIBUTEACKNOWLEDGEMENTPROCESSSTATUS] TAPS on TAPS.[ID] = RTL.[TRIBUTEACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[BUSINESSPROCESSSTATUS] BPS on BPS.[ID] = RTL.[TRIBUTEACKNOWLEDGEMENTPROCESSSTATUSID]
left join dbo.[TRIBUTEACKNOWLEDGEMENTPROCESS] TAP on TAP.[ID] = TAPS.[PARAMETERSETID]
left join dbo.[REVENUE] R on R.[ID] = RT.[REVENUEID]
left join dbo.[APPUSER] AU on AU.[ID] = BPS.[STARTEDBYUSERID]
left join dbo.[CHANGEAGENT] CA on CA.[ID] = RTL.[ADDEDBYID]
left join dbo.BUSINESSPROCESSINSTANCE BPI on TAP.ID = BPI.BUSINESSPROCESSPARAMETERSETID
where
RTL.[CONSTITUENTID] = @CONSTITUENTID
and RTL.[ACKNOWLEDGEDATE] is not null
and (@CORRESPONDENCETYPECODE = 7 or @CORRESPONDENCETYPECODE = 99)
and (RTL.[ACKNOWLEDGEDATE] >= @STARTDATE and RTL.[ACKNOWLEDGEDATE] <= @ENDDATE)
and @CHANNEL = 99
)
select
C.ID,
C.DATESENT,
C.CORRESPONDENCETYPECODE,
C.CORRESPONDENCETYPE,
C.DETAILS,
C.PROCESSOR,
C.COMMENTS,
C.RECORDID,
C.FINDERNUMBER,
C.CONSTITUENTID,
C.HASRESPONSES,
C.PREVIEWDATAFORM,
C.PREVIEWDATAFORMRECORDID,
case
when C.DATESENT >= dbo.UFN_DATE_THISMONTH_LASTDAY(getdate(), 1) then 'Future'
when C.DATESENT >= dbo.UFN_DATE_THISMONTH_FIRSTDAY(getdate(), 0) and C.DATESENT <= dbo.UFN_DATE_THISMONTH_LASTDAY(getdate(), 1) then 'This month'
when C.DATESENT >= dateadd(month, -1, dbo.UFN_DATE_THISMONTH_FIRSTDAY(getdate(), 0)) then 'Last month'
when C.DATESENT >= dateadd(month, -2, dbo.UFN_DATE_THISMONTH_FIRSTDAY(getdate(), 0)) then 'Two months ago'
else 'Older'
end TIMEFRAMETEXT,
case
when C.DATESENT >= dbo.UFN_DATE_THISMONTH_LASTDAY(getdate(), 1) then '0'
when C.DATESENT >= dbo.UFN_DATE_THISMONTH_FIRSTDAY(getdate(), 0) then '1'
when C.DATESENT >= dateadd(month, -1, dbo.UFN_DATE_THISMONTH_FIRSTDAY(getdate(), 0)) then '2'
when C.DATESENT >= dateadd(month, -2, dbo.UFN_DATE_THISMONTH_FIRSTDAY(getdate(), 0)) then '4'
else '6'
end TIMEFRAMEGROUPSORT,
case C.SITEENFORCEMENT
when 0 then 'N/A' --Type not secured
when 2 then coalesce(SITE.NAME, 'All sites') --Type is site secured, but null site means all sites
else coalesce(SITE.NAME, '') --Normal site security
end SITE,
case C.CHANNEL
when 0 then 'Mail'
when 1 then 'Email'
when 2 then 'Phone'
when -1 then 'Unknown'
end CHANNEL,
C.NOTSENT
from CORRESPONDENCE_CTE C
left join dbo.SITE on SITE.ID = C.SITEID
where ( C.SITEENFORCEMENT = 0 --Type not site secured
or( C.SITEENFORCEMENT = 2 and C.SITEID is null ) --Type is site secured, but null site means all sites
or( --SITEEXTENTION
(dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[C].[SITEID] or (SITEID is null and [C].[SITEID] is null)))
) --Normal site security
)
and ( --Apply site filter
@SITEFILTERMODE = 0
or C.SITEID in (
select SITEID
from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED)
)
);