USP_DATALIST_PROGRAMREGISTRATIONINFORMATION

Parameters

Parameter Parameter Type Mode Description
@PROGRAMID uniqueidentifier IN
@REGISTRATIONINFORMATIONTYPECODE tinyint IN

Definition

Copy


CREATE procedure dbo.USP_DATALIST_PROGRAMREGISTRATIONINFORMATION (
    @PROGRAMID uniqueidentifier,
    @REGISTRATIONINFORMATIONTYPECODE tinyint = null
) as
    set nocount on;

    with REGINFO_CTE as (
        select 
            persri.ID,
            REGISTRATIONSECTIONCODE.DESCRIPTION as REGISTRATIONSECTIONCODEDESCRIPTION,
            ri.NAME,
            case ri.TYPECODE --0 = Announcement, 1 = Question

                when 0 then null
                when 1 then ONLINEHTML
            end as ONLINEHTML,
            case ri.TYPECODE
                when 0 then 'Notice/disclaimer'
                when 1 then ri.RESPONSETYPE
            end as TYPE,
            case ri.TYPECODE
                when 0 then null 
                when 1 then 
                    case ri.RESPONSETYPECODE
                        when 3 then null
                        else persri.[REQUIRED]
                    end
            end as [REQUIRED],
            case ri.RESPONSETYPECODE 
                when 2 then --delimited list of the options

                    stuff(
                        (select '; ' + rio.NAME  
                        from dbo.REGISTRATIONINFORMATIONOPTION as rio
                        where rio.REGISTRATIONINFORMATIONID = persri.REGISTRATIONINFORMATIONID 
                        order by rio.SEQUENCE 
                        for xml path(''), TYPE).value('.', 'nvarchar(max)')
                    , 1, 2, '')--replace the leading semicolon with an empty string  

            end as [OPTIONS],
            dense_rank() over (order by pers.SEQUENCE, REGISTRATIONSECTIONCODE.DESCRIPTION) as RANKNUMBER,
            pers.SEQUENCE as SECTIONSEQUENCE,
            persri.SEQUENCE as REGINFOSEQUENCE
        from dbo.PROGRAMEVENTREGISTRATIONSECTION as pers
        inner join dbo.PROGRAMEVENTREGISTRATIONSECTIONREGISTRATIONINFORMATION as persri
            on pers.ID = persri.PROGRAMEVENTREGISTRATIONSECTIONID 
        inner join dbo.REGISTRATIONINFORMATION as ri
            on persri.REGISTRATIONINFORMATIONID = ri.ID 
        inner join dbo.REGISTRATIONSECTIONCODE
            on REGISTRATIONSECTIONCODE.ID = pers.REGISTRATIONSECTIONCODEID
        where
            pers.PROGRAMID = @PROGRAMID
            and (@REGISTRATIONINFORMATIONTYPECODE is null or ri.TYPECODE = @REGISTRATIONINFORMATIONTYPECODE)
    )
    select
        REGINFO_CTE.ID,
        PREFIXSECTION.PREFIXDESCRIPTION as REGISTRATIONSECTIONCODEDESCRIPTION,
        REGINFO_CTE.NAME,
        REGINFO_CTE.ONLINEHTML,
        REGINFO_CTE.TYPE,
        REGINFO_CTE.REQUIRED,
        REGINFO_CTE.OPTIONS
    from
        REGINFO_CTE
    outer apply
        dbo.UFN_PROGRAMEVENTREGISTRATIONSECTION_PREFIXSECTIONINLINE(REGINFO_CTE.RANKNUMBER, REGISTRATIONSECTIONCODEDESCRIPTION) as PREFIXSECTION
    order by
        REGINFO_CTE.SECTIONSEQUENCE, REGINFO_CTE.REGINFOSEQUENCE;