USP_SIMPLEDATALIST_RESCHEDULETICKETSAVAILABLEEVENTS

Parameters

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

Definition

Copy


CREATE procedure dbo.USP_SIMPLEDATALIST_RESCHEDULETICKETSAVAILABLEEVENTS
(
    @EVENTID uniqueidentifier = null,
    @PRICETYPECODEID uniqueidentifier = null
)
as begin

    if @EVENTID is null
    begin
        select null VALUE, null LABEL;
        return;
    end;

    with UPCOMINGEVENTS_CTE as (
        select top 5
            UPCOMINGEVENT.ID as VALUE,
            dbo.UFN_TRANSLATIONFUNCTION_RESCHEDULETICKETSAVAILABLEEVENT(UPCOMINGEVENT.ID) as LABEL
        from dbo.[EVENT]
            inner join dbo.[EVENT] UPCOMINGEVENT on (UPCOMINGEVENT.PROGRAMID = [EVENT].PROGRAMID and UPCOMINGEVENT.ID <> [EVENT].ID)
            cross apply dbo.UFN_PROGRAM_GETEVENTSANDPRICETYPES([EVENT].PROGRAMID, 0) PRICETYPES
        where UPCOMINGEVENT.STARTDATETIMEWITHOFFSET >= sysdatetimeoffset()  -- SQL Server knows how to correctly compare datetimeoffsets with different offsets

            and [EVENT].ID = @EVENTID
            and PRICETYPES.EVENTID = UPCOMINGEVENT.ID
            and PRICETYPES.PRICETYPECODEID = @PRICETYPECODEID
        order by UPCOMINGEVENT.STARTDATETIMEWITHOFFSET
    )
    select
        @EVENTID as VALUE,
        dbo.UFN_TRANSLATIONFUNCTION_RESCHEDULETICKETSAVAILABLEEVENT(@EVENTID) as LABEL

    union all

    select
        '00000000-0000-0000-0000-000000000000' as VALUE,
        case when (select count(*) from UPCOMINGEVENTS_CTE) = 0 then
            case 
                when not exists (
                    select 1
                    from dbo.[EVENT] GIVENEVENT
                        inner join dbo.[EVENT] OTHEREVENTSFORPROGRAM on OTHEREVENTSFORPROGRAM.PROGRAMID = GIVENEVENT.PROGRAMID and OTHEREVENTSFORPROGRAM.ID <> GIVENEVENT.ID
                    where GIVENEVENT.ID = @EVENTID
                )
                    then 'NOMOREEVENTS'
                when (
                        select ACTIVE 
                        from dbo.PRICETYPECODE 
                        where ID = @PRICETYPECODEID
                    ) = 0
                    or not exists(
                        select * from dbo.EVENT 
                            inner join dbo.PROGRAMPRICE on PROGRAMPRICE.PROGRAMID = EVENT.PROGRAMID
                        where event.ID=@EVENTID
                            and PROGRAMPRICE.PRICETYPECODEID = @PRICETYPECODEID
                    )
                    then 'UNAVAILABLEPRICETYPE'
            end
        else
            'SUCCESS'
        end as LABEL

    union all

    select VALUE, LABEL from UPCOMINGEVENTS_CTE;
end