UFN_EVENT_ISONSALE_DATETIMEOFFSET

Returns whether the specified event is on-sale information for a given date with time zone awareness

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@EVENTID uniqueidentifier IN
@SALEDATETIMEWITHOFFSET datetimeoffset IN
@SALESMETHODTYPECODE tinyint IN

Definition

Copy


        CREATE function dbo.UFN_EVENT_ISONSALE_DATETIMEOFFSET
        (
            @EVENTID uniqueidentifier,
            @SALEDATETIMEWITHOFFSET datetimeoffset,
            @SALESMETHODTYPECODE tinyint
        )
        returns bit
        with execute as caller
        as begin
            declare @ONSALE bit = 0            
            declare @ONSALEDATETIMEWITHOFFSET datetimeoffset
            declare @SALESMETHODID uniqueidentifier
            declare @SALEDATETIMECOMPAREWITHOFFSET datetimeoffset
            declare @OFFSALEDATETIMEWITHOFFSET datetimeoffset

            set @SALESMETHODID = dbo.UFN_SALESMETHOD_GETIDFROMTYPECODE(@SALESMETHODTYPECODE)

            select
                @ONSALEDATETIMEWITHOFFSET = EVENTSALESMETHOD.ONSALEDATETIMEWITHOFFSET,
                @OFFSALEDATETIMEWITHOFFSET = case PROGRAMSALESMETHOD.ONSALEENDTYPECODE 
                            when 0 then [EVENT].[STARTDATETIMEWITHOFFSET]
                            when 1 then dateadd(mi, -1 * [PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIMEWITHOFFSET])
                            when 2 then dateadd(hh, -1 * [PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIMEWITHOFFSET])
                            when 3 then dateadd(mi, [PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIMEWITHOFFSET])
                            end
            from
                dbo.EVENTSALESMETHOD
            inner join dbo.EVENT on EVENTSALESMETHOD.EVENTID = EVENT.ID
            left join dbo.PROGRAMSALESMETHOD on 
                EVENTSALESMETHOD.SALESMETHODID    = PROGRAMSALESMETHOD.SALESMETHODID and
                EVENT.PROGRAMID = PROGRAMSALESMETHOD.PROGRAMID
            where
                EVENTSALESMETHOD.SALESMETHODID = @SALESMETHODID and
                EVENTID = @EVENTID and
                (PROGRAMSALESMETHOD.SALESMETHODID is null or PROGRAMSALESMETHOD.SALESMETHODID = @SALESMETHODID)


            if @ONSALEDATETIMEWITHOFFSET is not null
            begin
                set @SALEDATETIMECOMPAREWITHOFFSET = @ONSALEDATETIMEWITHOFFSET;

                if @OFFSALEDATETIMEWITHOFFSET is null 
                    set @OFFSALEDATETIMEWITHOFFSET = @SALEDATETIMEWITHOFFSET;

                if @SALEDATETIMECOMPAREWITHOFFSET <= @SALEDATETIMEWITHOFFSET and @SALEDATETIMEWITHOFFSET <= @OFFSALEDATETIMEWITHOFFSET
                    set @ONSALE = 1
            end

            return @ONSALE
        end