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