USP_REPORT_EVENTREGISTRANTS

Registrants data source for event revenue report.

Parameters

Parameter Parameter Type Mode Description
@EVENTID uniqueidentifier IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@INCLUDESUBEVENTS bit IN

Definition

Copy


            CREATE procedure dbo.USP_REPORT_EVENTREGISTRANTS
            (
                @EVENTID uniqueidentifier = null,
                @STARTDATE datetime = null,
                @ENDDATE datetime = null,
                @INCLUDESUBEVENTS bit = 0
            )
            as
                set nocount on;

                begin try
                    declare @TOTALREGISTRANTS int
                    declare @NEWREGISTRANTS int
                    declare @RECURRINGREGISTRANTS int


                    declare @EVENTS table
                    (
                        ID uniqueidentifier
                    )

                    declare @MAINEVENTID uniqueidentifier = (select MAINEVENTID from dbo.EVENT where ID = @EVENTID)

                    declare @EVENTSINHIERARCHY table (ID uniqueidentifier)
                    insert into @EVENTSINHIERARCHY select ID from dbo.UFN_EVENT_GETALLEVENTSINHIERARCHY(case when @MAINEVENTID is null then @EVENTID else @MAINEVENTID end)

                    if @INCLUDESUBEVENTS = 0
                    begin
                        insert into @EVENTS
                        select @EVENTID
                    end
                    else
                    begin
                        insert into @EVENTS
                            select RELATEDEVENT.ID
                            from dbo.EVENTHIERARCHY as RELATEDEVENT
                                inner join dbo.EVENTHIERARCHY as SOURCEEVENT on SOURCEEVENT.ID = @EVENTID
                            where RELATEDEVENT.HIERARCHYPATH.IsDescendantOf(SOURCEEVENT.HIERARCHYPATH) = 1
                    end

                    select 
                        @TOTALREGISTRANTS = count(distinct R.CONSTITUENTID) 
                    from 
                        dbo.REGISTRANT R
                    where 
                        R.EVENTID in (select ID from @EVENTS) and
                        R.CONSTITUENTID is not null

                    select
                        @TOTALREGISTRANTS = @TOTALREGISTRANTS + isnull(sum(LARGESTUNNAMEDGUESTCOUNTBYHOST.MAXGUESTCOUNTPERHOST), 0)
                    from (
                        select
                            isnull(max(UNNAMEDGUESTCOUNTBYHOSTANDEVENT.NUMBEROFGUESTS), 0) MAXGUESTCOUNTPERHOST
                        from (
                            select
                                HOST.CONSTITUENTID HOSTCONSTITUENTID, 
                                isnull(count(UNNAMEDGUEST.ID), 0) NUMBEROFGUESTS
                            from 
                                dbo.REGISTRANT UNNAMEDGUEST
                                inner join dbo.REGISTRANT HOST on UNNAMEDGUEST.GUESTOFREGISTRANTID = HOST.ID
                            where 
                                HOST.ID is not null
                                and UNNAMEDGUEST.CONSTITUENTID is null
                                and (
                                    HOST.EVENTID = @EVENTID
                                    or HOST.EVENTID in (select ID from @EVENTS)
                                )
                            group by HOST.CONSTITUENTID, HOST.EVENTID
                            ) UNNAMEDGUESTCOUNTBYHOSTANDEVENT
                        group by UNNAMEDGUESTCOUNTBYHOSTANDEVENT.HOSTCONSTITUENTID
                        ) LARGESTUNNAMEDGUESTCOUNTBYHOST

                    select 
                        @RECURRINGREGISTRANTS = count(distinct R.CONSTITUENTID)
                    from 
                        dbo.REGISTRANT R
                        inner join dbo.REGISTRANT CURRENTEVENT
                            on R.CONSTITUENTID = CURRENTEVENT.CONSTITUENTID and
                            CURRENTEVENT.EVENTID in (select ID from @EVENTS) and
                            CURRENTEVENT.CONSTITUENTID is not null
                    where 
                        R.EVENTID not in (select ID from @EVENTSINHIERARCHY) and
                        R.DATEADDED < CURRENTEVENT.DATEADDED

                    set @NEWREGISTRANTS = @TOTALREGISTRANTS - @RECURRINGREGISTRANTS

                    select 
                        @NEWREGISTRANTS as NEWREGISTRANT, 
                        @RECURRINGREGISTRANTS as RECURRINGREGISTRANT, 
                        @TOTALREGISTRANTS as TOTALREGISTRANTS

                end try
                begin catch
                    exec dbo.USP_RAISE_ERROR;
                    return 1;
                end catch

                return 0;