UFN_EVENT_ISONSALEBYDATETIMEOFFSET_INLINE

Return

Return Type
table

Parameters

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

Definition

Copy


create function dbo.UFN_EVENT_ISONSALEBYDATETIMEOFFSET_INLINE
(
    @EVENTID uniqueidentifier,
    @SALEDATETIMEWITHOFFSET datetimeoffset,
    @SALESMETHODTYPECODE tinyint
)
returns table
as return

    select isnull((
        select
            case
                when EVENTSALESMETHOD.ONSALEDATETIMEWITHOFFSET <= @SALEDATETIMEWITHOFFSET and (OFFSALECALCULATION.OFFSALEDATETIMEWITHOFFSET is null or @SALEDATETIMEWITHOFFSET <= OFFSALECALCULATION.OFFSALEDATETIMEWITHOFFSET) then
                    1
                else
                    0
            end as ISONSALE
        from
            dbo.EVENTSALESMETHOD
        inner join
            dbo.EVENT on EVENTSALESMETHOD.EVENTID = EVENT.ID
        inner join
            dbo.SALESMETHOD on SALESMETHOD.ID = EVENTSALESMETHOD.SALESMETHODID
        left join dbo.PROGRAMSALESMETHOD on 
            EVENTSALESMETHOD.SALESMETHODID    = PROGRAMSALESMETHOD.SALESMETHODID and
            EVENT.PROGRAMID = PROGRAMSALESMETHOD.PROGRAMID
        outer apply (
            select
                case PROGRAMSALESMETHOD.ONSALEENDTYPECODE
                    when 0 then  -- Event start time

                        EVENT.STARTDATETIMEWITHOFFSET
                    when 1 then  -- Minutes before start

                        dateadd(mi, -[PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIMEWITHOFFSET])
                    when 2 then  -- Hours before start

                        dateadd(hh, -[PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIMEWITHOFFSET])
                    when 3 then  -- Minutes after start

                        dateadd(mi, [PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIMEWITHOFFSET])
                end as OFFSALEDATETIMEWITHOFFSET
        ) as OFFSALECALCULATION
        where
            EVENTID = @EVENTID
            and SALESMETHOD.TYPECODE = @SALESMETHODTYPECODE
    ), 0) as ISONSALE