USP_DATALIST_REGISTRANTVIEW_2
List registrations for a given constituent.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@MAXROWS | int | IN | Input parameter indicating the maximum number of rows to return. |
@CONSTITUENTID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@SITEFILTERMODE | tinyint | IN | Sites |
@SITESSELECTED | xml | IN |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_REGISTRANTVIEW_2
(
@MAXROWS int,
@CONSTITUENTID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier = null,
@SITEFILTERMODE tinyint = 0,
@SITESSELECTED xml = null
)
as
set nocount on;
declare @REGISTRATIONS table
(
ISMAINEVENT bit,
ISSTANDALONEEVENT bit,
REGISTRANTID uniqueidentifier,
EVENTID uniqueidentifier,
EVENTNAME nvarchar(100),
EVENTSTARTDATE datetime,
EVENTENDDATE datetime,
REGISTRATIONOPTION nvarchar(100),
QUANTITY int,
REGISTRATIONFEE money,
RECEIPTAMOUNT money,
MAINEVENTNAME nvarchar(100),
MAINEVENTID uniqueidentifier,
SITEID uniqueidentifier,
EVENTBASECURRENCYID uniqueidentifier
)
insert into @REGISTRATIONS(ISMAINEVENT, ISSTANDALONEEVENT, REGISTRANTID, EVENTID, EVENTNAME, EVENTSTARTDATE, EVENTENDDATE, REGISTRATIONOPTION, QUANTITY, REGISTRATIONFEE, RECEIPTAMOUNT, MAINEVENTNAME, MAINEVENTID, EVENTBASECURRENCYID)
select top (@MAXROWS)
case when (select count(ID) from dbo.EVENT as [SUBEVENT] where [SUBEVENT].MAINEVENTID = EVENT.ID) > 0 then 1 else 0 end, --ISMAINEVENT
case when MAINEVENTID is null and (select count(ID) from dbo.EVENT as [SUBEVENT] where [SUBEVENT].MAINEVENTID = EVENT.ID) = 0 then 1 else 0 end, --ISSTANDALONEVENT
REGISTRANT.ID, --REGISTRANTID
EVENT.ID, --EVENTID
EVENT.NAME, --EVENTNAME
EVENT.STARTDATE, --EVENTSTARTDATE
EVENT.ENDDATE, --EVENTENDDATE
dbo.UFN_EVENTPRICE_GETDESCRIPTIONFROMID(REGISTRANTREGISTRATION.EVENTPRICEID), --REGISTRATIONOPTION
REGISTRANTREGISTRATION.QUANTITY, --QUANTITY
REGISTRANTREGISTRATION.AMOUNT, --REGISTRATIONFEE
REGISTRANTREGISTRATION.RECEIPTAMOUNT, --RECEIPTAMOUNT
case when not EVENT.MAINEVENTID is null then coalesce(dbo.UFN_EVENT_GETNAME(EVENT.MAINEVENTID), N'')
when (select count(ID) from dbo.EVENT as [SUBEVENT] where [SUBEVENT].MAINEVENTID = EVENT.ID) > 0 then EVENT.NAME
else N'' end, --MAINEVENTNAME
EVENT.MAINEVENTID, --MAINEVENTID
EVENT.BASECURRENCYID
from dbo.REGISTRANT
inner join dbo.EVENT on EVENT.ID = REGISTRANT.EVENTID
left join dbo.REGISTRANTREGISTRATION on REGISTRANTREGISTRATION.REGISTRANTID = REGISTRANT.ID
where REGISTRANT.CONSTITUENTID = @CONSTITUENTID
and EVENT.PROGRAMID is null;
select @MAXROWS = @MAXROWS - count(REGISTRANTID) from @REGISTRATIONS;
/* AKG CR297799-041008 do not show the main event when constituent is not registered to that event
insert into @REGISTRATIONS(ISMAINEVENT, ISSTANDALONEEVENT, REGISTRANTID, EVENTID, EVENTNAME, EVENTSTARTDATE, EVENTENDDATE, REGISTRATIONOPTION, QUANTITY, REGISTRATIONFEE, RECEIPTAMOUNT, MAINEVENTNAME, MAINEVENTID)
select distinct top (@MAXROWS)
1, --ISMAINEVENT
0, --ISSTANDALONEEVENT
null, --REGISTRANTID
EVENT.ID, --EVENTID
EVENT.NAME, --EVENTNAME
EVENT.STARTDATE, --EVENTSTARTDATE
EVENT.ENDDATE, --EVENTENDDATE
N'', --REGISTRATIONOPTION
0, --QUANTITIY
0, --REGISTRATIONFEE
0, --RECEIPTAMOUNT
EVENT.NAME, --MAINEVENTNAME -- This needs to be filled in for the MAINEVENTNAME so grouping works intelligently
null --MAINEVENTID
from @REGISTRATIONS as [REGISTRATIONS]
inner join dbo.EVENT on EVENT.ID = [REGISTRATIONS].MAINEVENTID
left join @REGISTRATIONS as [JOINREGISTRATIONS] on [JOINREGISTRATIONS].EVENTID = EVENT.ID
where [JOINREGISTRATIONS].EVENTID is null
and EVENT.PROGRAMID is null;
*/
select
ISMAINEVENT,
ISSTANDALONEEVENT,
REGISTRANTID,
r.EVENTID,
EVENTNAME,
EVENTSTARTDATE,
EVENTENDDATE,
REGISTRATIONOPTION,
QUANTITY,
REGISTRATIONFEE,
RECEIPTAMOUNT,
MAINEVENTNAME,
EVENTBASECURRENCYID,
ISFAFREGISTRANT =
Case IsNull(ee.EventType, '')
when '' then 0
else 1
End
from @REGISTRATIONS r
left join EVENTEXTENSION ee on r.EVENTID = ee.EVENTID
where
dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, r.EVENTID) = 1 and
(@SITEFILTERMODE = 0
or exists
(
select 1
from dbo.UFN_SITE_BUILDDATALISTSITEFILTER (@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
where SITEFILTER.SITEID in
(
select SITEID from dbo.UFN_EVENT_GETSITES(r.EVENTID)
)
)
)
order by MAINEVENTNAME, ISMAINEVENT desc, EVENTSTARTDATE, EVENTENDDATE, EVENTNAME;