UFN_EVENT_GETREGISTRATIONINFORMATION

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@EVENTID uniqueidentifier IN
@PRICETYPECODEID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_EVENT_GETREGISTRATIONINFORMATION
(
    @EVENTID uniqueidentifier,
    @PRICETYPECODEID uniqueidentifier = null
)
returns @REGISTRATIONINFORMATION table (REGISTRATIONINFORMATIONID uniqueidentifier, REQUIRED bit, NAME nvarchar(100), RESPONSETYPECODE tinyint, PERSONDETAILTYPECODE tinyint, TEXTVALUE nvarchar(max), REGISTRATIONINFORMATIONOPTIONID uniqueidentifier, SECTIONSEQUENCE int, SEQUENCE int, ALLPRICETYPES bit, REGISTRATIONINFORMATIONPRICETYPES xml)
as begin
    declare @PROGRAMID uniqueidentifier;
    declare @HASCUSTOMREGISTRATIONINFORMATION bit;

    select
        @PROGRAMID = EVENT.PROGRAMID,
        @HASCUSTOMREGISTRATIONINFORMATION = EVENT.HASCUSTOMREGISTRATIONINFORMATION
    from dbo.EVENT
    where ID = @EVENTID;

    declare @EVENTSECTIONS table (
        ID uniqueidentifier,
        SEQUENCE int
    );

    if @HASCUSTOMREGISTRATIONINFORMATION = 1 begin
        insert into @EVENTSECTIONS (ID, SEQUENCE)
        select ID, SEQUENCE
        from dbo.PROGRAMEVENTREGISTRATIONSECTION
        where EVENTID = @EVENTID;
    end else begin
        insert into @EVENTSECTIONS (ID, SEQUENCE)
        select ID, SEQUENCE
        from dbo.PROGRAMEVENTREGISTRATIONSECTION
        where PROGRAMID = @PROGRAMID;
    end

    insert into @REGISTRATIONINFORMATION
        (REGISTRATIONINFORMATIONID, REQUIRED, NAME, RESPONSETYPECODE, PERSONDETAILTYPECODE, TEXTVALUE, REGISTRATIONINFORMATIONOPTIONID, SECTIONSEQUENCE, SEQUENCE, ALLPRICETYPES, REGISTRATIONINFORMATIONPRICETYPES)
    select
        REGISTRATIONINFORMATION.ID,
        PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION.REQUIRED,
        REGISTRATIONINFORMATION.NAME,
        REGISTRATIONINFORMATION.RESPONSETYPECODE,
        0,
        '',
        case REGISTRATIONINFORMATION.RESPONSETYPECODE when 3 then '00000000-0000-0000-0000-000000000000' else null end,
        EVENTSECTIONS.SEQUENCE,
        PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION.SEQUENCE,
        REGISTRATIONINFORMATION.ALLPRICETYPES,
        dbo.UFN_REGISTRATIONINFORMATION_GETPRICETYPES_TOITEMLISTXML_NOROOT(REGISTRATIONINFORMATION.ID) as REGISTRATIONINFORMATIONPRICETYPES
    from @EVENTSECTIONS as EVENTSECTIONS
    inner join dbo.PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION
        on EVENTSECTIONS.ID = PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION.PROGRAMEVENTREGISTRATIONSECTIONID
    inner join dbo.REGISTRATIONINFORMATION
        on PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION.REGISTRATIONINFORMATIONID = REGISTRATIONINFORMATION.ID
            and REGISTRATIONINFORMATION.TYPECODE = 1                                                                                            -- Questions only

    where REGISTRATIONINFORMATION.RESPONSETYPECODE <> 4                                                                                        -- Name/phone/email

        and (
            @PRICETYPECODEID is null 
            or (REGISTRATIONINFORMATION.ALLPRICETYPES = 1 or exists (select ID from dbo.REGISTRATIONINFORMATIONPRICETYPE where REGISTRATIONINFORMATIONID = REGISTRATIONINFORMATION.ID and PRICETYPECODEID = @PRICETYPECODEID))
        );

    with REGISTRATIONINFO_CTE as (
        select
            REGISTRATIONINFORMATION.ID,
            REGISTRATIONINFORMATION.NAME,
            REGISTRATIONINFORMATION.RESPONSETYPECODE,
            REGISTRATIONINFORMATION.ASKPERSONPHONE2,
            REGISTRATIONINFORMATION.ASKPERSONEMAIL,
            EVENTSECTIONS.SEQUENCE as SECTIONSEQUENCE,
            PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION.SEQUENCE,
            PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION.REQUIRED,
            REGISTRATIONINFORMATION.ALLPRICETYPES,
            dbo.UFN_REGISTRATIONINFORMATION_GETPRICETYPES_TOITEMLISTXML_NOROOT(REGISTRATIONINFORMATION.ID) as REGISTRATIONINFORMATIONPRICETYPES
        from @EVENTSECTIONS as EVENTSECTIONS
        inner join dbo.PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION
            on EVENTSECTIONS.ID = PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION.PROGRAMEVENTREGISTRATIONSECTIONID
        inner join dbo.REGISTRATIONINFORMATION
            on PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION.REGISTRATIONINFORMATIONID = REGISTRATIONINFORMATION.ID
                and REGISTRATIONINFORMATION.TYPECODE = 1                                                                                            -- Questions only        

        where REGISTRATIONINFORMATION.RESPONSETYPECODE = 4                                                                                            -- Name/phone/email

            and (
                @PRICETYPECODEID is null 
                or (REGISTRATIONINFORMATION.ALLPRICETYPES = 1 or exists (select ID from dbo.REGISTRATIONINFORMATIONPRICETYPE where REGISTRATIONINFORMATIONID = REGISTRATIONINFORMATION.ID and PRICETYPECODEID = @PRICETYPECODEID))
            )
    )
    insert into @REGISTRATIONINFORMATION
        (REGISTRATIONINFORMATIONID, REQUIRED, NAME, RESPONSETYPECODE, PERSONDETAILTYPECODE, TEXTVALUE, REGISTRATIONINFORMATIONOPTIONID, SECTIONSEQUENCE, SEQUENCE, ALLPRICETYPES, REGISTRATIONINFORMATIONPRICETYPES)    
    select
        REGINFO.ID,
        REGINFO.REQUIRED,
        REGINFO.NAME,
        REGINFO.RESPONSETYPECODE,
        PERSONDETAIL.TYPECODE as PERSONALDETAILTYPECODE,
        '',
        null,
        REGINFO.SECTIONSEQUENCE,
        REGINFO.SEQUENCE,
        REGINFO.ALLPRICETYPES,
        REGINFO.REGISTRATIONINFORMATIONPRICETYPES
    from REGISTRATIONINFO_CTE REGINFO
    outer apply (
        select 1 as TYPECODE  -- First name


        union all
        select 2 as TYPECODE  -- Last name


        union all
        select 3 as TYPECODE  -- Phone


        union all
        select 4 as TYPECODE  -- Phone 2

        where REGINFO.ASKPERSONPHONE2 = 1

        union all
        select 5 as TYPECODE  -- Email

        where REGINFO.ASKPERSONEMAIL = 1
    ) as PERSONDETAIL;

    return;

end