USP_DATAFORMTEMPLATE_VIEW_REGISTRANTLODGING

The load procedure used by the view dataform template "Registrant Lodging View"

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN The input ID parameter used to load the fields defined on the form.
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@LODGINGLOCATION nvarchar(100) INOUT Lodging location
@PHONENUMBER nvarchar(50) INOUT Phone number
@ROOMTYPE nvarchar(100) INOUT Room type
@CAPACITY int INOUT - sleeps
@ROOMNUMBER nvarchar(10) INOUT Room number
@CONFIRMATIONNUMBER nvarchar(10) INOUT Confirmation number
@CHECKINDATE datetime INOUT Check-in date/time
@CHECKINTIME UDT_HOURMINUTE INOUT at
@CHECKOUTDATE datetime INOUT Check-out date/time
@CHECKOUTTIME UDT_HOURMINUTE INOUT at

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_REGISTRANTLODGING
(
    @ID uniqueidentifier,
    @DATALOADED bit = 0 output,
    @LODGINGLOCATION nvarchar(100) = null output,
    @PHONENUMBER nvarchar(50) = null output,
    @ROOMTYPE nvarchar(100) = null output,
    @CAPACITY integer = null output,
    @ROOMNUMBER nvarchar(10) = null output,
    @CONFIRMATIONNUMBER nvarchar(10) = null output,
    @CHECKINDATE datetime = null output,
    @CHECKINTIME dbo.UDT_HOURMINUTE = null output,
    @CHECKOUTDATE datetime = null output,
    @CHECKOUTTIME dbo.UDT_HOURMINUTE = null output
)
as
    set nocount on;

    -- be sure to set this, in case the select returns no rows

    set @DATALOADED = 0;

    declare @REGISTRANTCONSTITUENTID uniqueidentifier = null;
    declare @MAINEVENTID uniqueidentifier = null;
    declare @REGISTRANTCANLODGE bit = 0;

    -- Lodging information is unique to a constituent and a main event coupling, 

    -- not to a registrant record.

    select
        @REGISTRANTCANLODGE = 1,
        @REGISTRANTCONSTITUENTID = REGISTRANT.CONSTITUENTID,
        @MAINEVENTID =    case    
                            when EVENT.MAINEVENTID is null then EVENT.ID
                            else EVENT.MAINEVENTID 
                        end
    from
        dbo.REGISTRANT
    inner join    
        dbo.EVENT on EVENT.ID = REGISTRANT.EVENTID
    where
        REGISTRANT.ID = @ID;

    select 
        @DATALOADED = 1,
        @LODGINGLOCATION = EVENTLODGINGLOCATION.NAME,
        @PHONENUMBER = REGISTRANTLODGING.PHONENUMBER,
        @ROOMTYPE = EVENTLODGINGROOMTYPECODE.DESCRIPTION,
        @CAPACITY = EVENTLODGINGROOM.SLEEPS,
        @ROOMNUMBER = EVENTLODGINGROOMINSTANCE.ROOMNUMBER,
        @CONFIRMATIONNUMBER = REGISTRANTLODGING.CONFIRMATIONNUMBER,
        @CHECKINDATE = REGISTRANTLODGING.CHECKINDATE,
        @CHECKINTIME = REGISTRANTLODGING.CHECKINTIME,
        @CHECKOUTDATE = REGISTRANTLODGING.CHECKOUTDATE,
        @CHECKOUTTIME = REGISTRANTLODGING.CHECKOUTTIME
    from 
        dbo.REGISTRANTLODGING
    left join
        dbo.EVENTLODGINGROOMINSTANCE on REGISTRANTLODGING.EVENTLODGINGROOMINSTANCEID = EVENTLODGINGROOMINSTANCE.ID
    left join
        dbo.EVENTLODGINGROOM on EVENTLODGINGROOM.ID = EVENTLODGINGROOMINSTANCE.EVENTLODGINGROOMID
    left join
        dbo.EVENTLODGING on EVENTLODGING.ID = REGISTRANTLODGING.EVENTLODGINGID
    left join
        dbo.EVENTLODGINGLOCATION on EVENTLODGINGLOCATION.ID = EVENTLODGING.EVENTLODGINGLOCATIONID
    left join
        dbo.EVENTLODGINGROOMTYPECODE on EVENTLODGINGROOMTYPECODE.ID = EVENTLODGINGROOM.ROOMTYPECODEID
    where 
        REGISTRANTLODGING.REGISTRANTCONSTITUENTID = @REGISTRANTCONSTITUENTID
        and
        REGISTRANTLODGING.MAINEVENTID = @MAINEVENTID;

    -- Nulls are acceptable if the registrant can have lodging information, 

    -- but doesn't have a record for it yet.

    if @DATALOADED = 0 and @REGISTRANTCANLODGE = 1
        set @DATALOADED = 1;

    return 0;