USP_REGISTRANT_ADDUNKNOWNGUESTS

Checks the registration count for each registration against the number of guests being added. If there are not enough guests an unnamed guest record is created.

Parameters

Parameter Parameter Type Mode Description
@CHANGEAGENTID uniqueidentifier IN
@REGISTRANTID uniqueidentifier IN
@EVENTID uniqueidentifier IN

Definition

Copy


            CREATE procedure dbo.USP_REGISTRANT_ADDUNKNOWNGUESTS(@CHANGEAGENTID uniqueidentifier, @REGISTRANTID uniqueidentifier, @EVENTID uniqueidentifier = null)
            with execute as caller
            as            
                declare @GUESTCOUNT int
                declare @REGISTRATIONCOUNT int    

                if @EVENTID is null
                    select 
                        @EVENTID = REGISTRANT.EVENTID
                    from
                        dbo.REGISTRANT
                    where
                        REGISTRANT.ID = @REGISTRANTID;

                if @CHANGEAGENTID is null  
                    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;

                select 
                    @REGISTRATIONCOUNT = sum(EVENTPRICE.REGISTRATIONCOUNT * REGISTRANTREGISTRATION.QUANTITY)
                from
                    dbo.EVENTPRICE
                    inner join dbo.REGISTRANTREGISTRATION on REGISTRANTREGISTRATION.EVENTPRICEID = EVENTPRICE.ID
                where
                    REGISTRANTREGISTRATION.REGISTRANTID = @REGISTRANTID;                    

                select
                    @GUESTCOUNT = count(ID) 
                from 
                    dbo.REGISTRANT
                where
                    GUESTOFREGISTRANTID = @REGISTRANTID;

                if @REGISTRATIONCOUNT > (@GUESTCOUNT + 1) begin
                    declare @i int
                    declare @ID uniqueidentifier
                    declare @CURRENTDATE datetime
                    declare @total as int

                    set @total = (@REGISTRATIONCOUNT - (@GUESTCOUNT + 1));
                    set @i = 1;

                    while (@i <= @total) begin

                        set @CURRENTDATE = getdate();
                        set @ID = newid();

                        insert into dbo.REGISTRANT
                            (ID, GUESTOFREGISTRANTID, EVENTID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED)
                        values
                            (@ID, @REGISTRANTID, @EVENTID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE);                            

                        set @i = @i + 1;
                    end
                end