UFN_PROGRAMSALESMETHOD_ONSALEINFORMATION

Describes when tickets can go on sale using the given sales method

Return

Return Type
nvarchar(50)

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN

Definition

Copy


CREATE function dbo.UFN_PROGRAMSALESMETHOD_ONSALEINFORMATION
(
    @ID uniqueidentifier
) returns nvarchar(50)
as
begin
    declare @MESSAGE nvarchar(50);
    declare @PERIODBEGINSCODE tinyint;

    select @PERIODBEGINSCODE = ONSALETYPECODE from dbo.PROGRAMSALESMETHOD where ID = @ID;

    if @PERIODBEGINSCODE = 0
    begin
        set @MESSAGE = 'Immediately';
    end
    else
    begin
        declare @ONSALETIME char(4);
        declare @MESSAGEBEGINNING nvarchar(38);

        if @PERIODBEGINSCODE = 1
        begin
            declare @ONSALEDATE datetime;

            select
                @ONSALEDATE = ONSALEDATE
            from
                dbo.PROGRAMSALESMETHOD
            where
                ID = @ID;

            set @MESSAGEBEGINNING = convert(nvarchar(38), @ONSALEDATE, 107);
        end
        else --@PERIODBEGINSCODE = 2, 3 or 4

        begin
            declare @TIMEBEFOREVALUE int;

            select
                @TIMEBEFOREVALUE = ONSALETIMEBEFORE
            from
                dbo.PROGRAMSALESMETHOD
            where
                ID = @ID;

            set @MESSAGEBEGINNING = cast(@TIMEBEFOREVALUE as nvarchar(12)) + ' ' + dbo.UFN_PROGRAMSALESMETHOD_ONSALETYPECODE_GETDESCRIPTION(@PERIODBEGINSCODE);
        end

        --We need to do some fancypants parsing with the time field to get it to display correctly

        select @ONSALETIME = ONSALETIME from dbo.PROGRAMSALESMETHOD where ID = @ID;
        set @MESSAGE = @MESSAGEBEGINNING + ' at ' + dbo.UFN_HOURMINUTE_DISPLAYTIME(@ONSALETIME);
    end

    return @MESSAGE;
end