USP_DATALIST_EVENTINVITATIONINVITEES
Displays the invitees for the given event and invitation.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@MAXROWS | int | IN | Input parameter indicating the maximum number of rows to return. |
@INVITATIONID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@INVITEEID | uniqueidentifier | IN | Constituent |
@STATUSCODE | tinyint | IN | Status |
@INCLUDEINSEND | tinyint | IN | Include in next send |
@CURRENTAPPUSERID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.[USP_DATALIST_EVENTINVITATIONINVITEES]
(
@MAXROWS int,
@INVITATIONID uniqueidentifier,
@INVITEEID uniqueidentifier = null,
@STATUSCODE tinyint = null,
@INCLUDEINSEND tinyint = null,
@CURRENTAPPUSERID uniqueidentifier = null
)
as
set nocount on;
declare @ISSYSADMIN bit = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
declare @INVITEES table
(
ID uniqueidentifier,
CONSTITUENTID uniqueidentifier,
DECLINED bit,
EXCLUDEDFROMLASTSEND bit,
SENTON datetime,
INVITEERESENDID uniqueidentifier,
REGISTRANTID uniqueidentifier
);
insert into @INVITEES
select
[INVITEE].[ID],
[INVITEE].[CONSTITUENTID],
[INVITEE].[DECLINED],
[INVITEE].[EXCLUDEDFROMLASTSEND],
--This sub-select mimics the functionality of the scalar function: UFN_INVITATION_SENTONMOSTRECENT
(
select top (1)
[INVITATIONHISTORY].[DATECHANGED]
from dbo.[INVITATIONHISTORY]
--Join on all 3 fields here so that it uses the index on this table...
inner join dbo.[INVITEEHISTORY] on [INVITEEHISTORY].[INVITATIONHISTORYID] = [INVITATIONHISTORY].[ID]
and [INVITEEHISTORY].[CONSTITUENTID] = [INVITEE].[CONSTITUENTID]
and [INVITEEHISTORY].[EVENTID] = [INVITEE].[EVENTID]
where [INVITATIONHISTORY].[PARAMETERSETID] = cast(@INVITATIONID as nvarchar(36)) --cast to string so that it can use the index
order by [INVITATIONHISTORY].[DATECHANGED] desc
) as [SENTON],
[INVITEERESEND].[ID] as [INVITEERESENDID],
[REGISTRANT].[ID] as [REGISTRANTID]
from dbo.[INVITEE]
left join dbo.[INVITEERESEND] on [INVITEERESEND].[INVITEEID] = [INVITEE].[ID] and [INVITEERESEND].[INVITATIONID] = [INVITEE].[INVITATIONID]
left join dbo.[REGISTRANT] on [REGISTRANT].[CONSTITUENTID] = [INVITEE].[CONSTITUENTID] and [REGISTRANT].[EVENTID] = [INVITEE].[EVENTID]
where [INVITEE].[INVITATIONID] = @INVITATIONID
and (@INVITEEID is null or [INVITEE].[ID] = @INVITEEID)
and (
@STATUSCODE is null
or (
@STATUSCODE = 0
and [REGISTRANT].[ID] is not null
)
or (
@STATUSCODE = 1
and [INVITEE].[DECLINED] = 1
)
or (
@STATUSCODE = 2
and [REGISTRANT].[ID] is not null
and [INVITEE].[DECLINED] = 1
)
or (
@STATUSCODE = 3
and [REGISTRANT].[ID] is null
and [INVITEE].[DECLINED] = 0
)
);
if @ISSYSADMIN = 0
begin
delete INVITEES
from @INVITEES INVITEES
where
not exists
( select 1 from dbo.UFN_SITEID_MAPFROM_CONSTITUENTID(INVITEES.CONSTITUENTID) CONSTITUENTSITES
where exists
( select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID, '20EF266D-A1B2-4345-947C-206ACA5A1103', 2) SITES
where SITES.SITEID = CONSTITUENTSITES.SITEID
or (SITES.SITEID is null and CONSTITUENTSITES.SITEID is null)
)
);
end
select top (@MAXROWS)
[INVITEES].[ID],
[INVITEES].[CONSTITUENTID],
dbo.UFN_NAMEFORMAT_08(null, [CONSTITUENT].[KEYNAME], [CONSTITUENT].[FIRSTNAME], [CONSTITUENT].[MIDDLENAME], null, null, null, null, null, null, null) as [CONSTITUENTNAME],
[INVITEES].[SENTON],
cast((case when [INVITEES].[REGISTRANTID] is null then 0 else 1 end) as bit) as [REGISTERED],
(case when [INVITEES].[REGISTRANTID] is null then
N'Not registered'
else
N'Registered'
end) as [REGISTEREDCAPTION],
[INVITEES].[INVITEERESENDID],
(case when [INVITEES].[SENTON] is null then
'False'
else
'True'
end) as [HASRECEIVEDINVITATION],
[INVITEES].[DECLINED],
(case when [INVITEES].[DECLINED] = 0 then
'Not declined'
else
'Declined'
end) as [DECLINEDCAPTION],
cast
(
(case when ([INVITEES].[INVITEERESENDID] is not null or ([INVITEES].[DECLINED] = 0 and [INVITEES].[SENTON] is null)) then
1
else
0
end)
as bit
) as [INCLUDEINSEND],
(case when ([INVITEES].[INVITEERESENDID] is not null or ([INVITEES].[DECLINED] = 0 and [INVITEES].[SENTON] is null)) then
N'Include in next send'
else
N'Do not include in next send'
end) as [INCLUDEINSENDCAPTION],
[INVITEES].[EXCLUDEDFROMLASTSEND],
(case when [INVITEES].[EXCLUDEDFROMLASTSEND] = 1 then
'Excluded from last send'
else
'Included in last send'
end) as [EXCLUDEDFROMLASTSENDCAPTION]
from @INVITEES [INVITEES]
left join dbo.[CONSTITUENT] on [CONSTITUENT].[ID] = [INVITEES].[CONSTITUENTID]
where (
@INCLUDEINSEND is null
or (
@INCLUDEINSEND = 0
and
not ([INVITEES].[INVITEERESENDID] is not null or ([INVITEES].[DECLINED] = 0 and [INVITEES].[SENTON] is null))
)
or (
@INCLUDEINSEND = 1
and
([INVITEES].[INVITEERESENDID] is not null or ([INVITEES].[DECLINED] = 0 and [INVITEES].[SENTON] is null))
)
)
order by [INCLUDEINSEND] desc, [CONSTITUENTNAME] asc;
return 0;