USP_DATALIST_EVENTTICKETSELECT

Lists events available for sale.

Parameters

Parameter Parameter Type Mode Description
@SALESMETHODTYPECODE tinyint IN Input parameter indicating the context ID for the data list.
@CONSTITUENTID uniqueidentifier IN Constituent ID
@DATESELECTTYPE tinyint IN Date
@STARTDATE datetime IN From
@ENDDATE datetime IN To
@NAME nvarchar(512) IN Name
@SHOWPAST bit IN Show past events

Definition

Copy


                CREATE procedure dbo.USP_DATALIST_EVENTTICKETSELECT
                (
                    @SALESMETHODTYPECODE tinyint,
                    @CONSTITUENTID uniqueidentifier = null,
                    @DATESELECTTYPE tinyint = null,
                    @STARTDATE datetime = null,
                    @ENDDATE datetime = null,
                    @NAME nvarchar(512) = null,
                    @SHOWPAST bit = null
                )
                as
                set nocount on;

                declare @SALESMETHODID uniqueidentifier 
                set @SALESMETHODID = [dbo].[UFN_SALESMETHOD_GETIDFROMTYPECODE] (@SALESMETHODTYPECODE)

                set @NAME = '%' + replace(replace(@NAME, '*', '%'), '?', '_') + '%';

                declare @CURRENTDATETIMEOFFSET datetimeoffset = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(sysutcdatetime(), 1)
                declare @STARTDATETIMEOFFSET as datetimeoffset = TODATETIMEOFFSET(@STARTDATE, DATEPART(tz, SYSDATETIMEOFFSET()))
                declare @ENDDATETIMEOFFSET as datetimeoffset = TODATETIMEOFFSET(@ENDDATE, DATEPART(tz, SYSDATETIMEOFFSET()))

                if @DATESELECTTYPE is null
                    set @DATESELECTTYPE = 1;

                set @STARTDATETIMEOFFSET = case @DATESELECTTYPE
                    when 1 then dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATETIMEOFFSET)
                    when 2 then dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATETIMEOFFSET)
                    when 3 then dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATETIMEOFFSET)
                    when 4 then dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATETIMEOFFSET)
                end;

                set @ENDDATETIMEOFFSET = case @DATESELECTTYPE
                    when 1 then dbo.UFN_DATE_GETLATESTTIME(@CURRENTDATETIMEOFFSET)
                    when 2 then dbo.UFN_DATE_GETLATESTTIME(dateadd(week,1, @CURRENTDATETIMEOFFSET))
                    when 3 then dbo.UFN_DATE_GETLATESTTIME(@STARTDATETIMEOFFSET)
                    when 4 then dbo.UFN_DATE_GETLATESTTIME(@ENDDATETIMEOFFSET)
                end;

                --If past events shouldn't be shown and the start date is before now, fix start date to now

                if (@SHOWPAST = 0 or @SHOWPAST is null) and (@STARTDATETIMEOFFSET < @CURRENTDATETIMEOFFSET)
                    set @STARTDATETIMEOFFSET = @CURRENTDATETIMEOFFSET;

                --For online orders, we are going to avoid showing undeliverable event tickets

                declare @HASDELIVERYMETHOD bit = 0
                declare @HASUNRESTRICTEDDELIVERYMETHOD bit = 0
                declare @EARLIESTVALIDEVENTDATETIMEWITHOFFSET datetimeoffset = null
                if @SALESMETHODTYPECODE = 2
                begin
                    exec dbo.USP_DELIVERYMETHOD_INFO_BYSALESMETHODID 
                        @SALESMETHODID
                        @HASDELIVERYMETHOD output
                        @HASUNRESTRICTEDDELIVERYMETHOD output
                        @EARLIESTVALIDEVENTDATETIMEWITHOFFSET output
                end

                select 
                  [ID], 
                  [PROGRAMID],
                  [NAME],
                  [AVAILABILITY],
                  [STARTDATE],
                  [STARTTIME], 
                  [ENDTIME],
                  [PROGRAMCATEGORY],                    
                  [ISDAILYADMISSION],
                  [ISCOMBINATION],
                  [EVENTSTATUSCODE]
                from dbo.UFN_SALESORDER_PROGRAMTICKETSELECT_DATETIMEOFFSET
                      (
                        @SALESMETHODID,
                        @CONSTITUENTID,
                        @DATESELECTTYPE,
                        @STARTDATETIMEOFFSET,
                        @ENDDATETIMEOFFSET,
                        @NAME,
                        @SHOWPAST,
                        @CURRENTDATETIMEOFFSET
                      ) 
                where 
                    @SALESMETHODTYPECODE <> 2 or
                    @HASUNRESTRICTEDDELIVERYMETHOD = 1 or
                    (([ISCOMBINATION] = 1 or [ISDAILYADMISSION] = 1) and @HASDELIVERYMETHOD = 1) or
                    ([EVENTSTARTDATETIMEWITHOFFSET] > @EARLIESTVALIDEVENTDATETIMEWITHOFFSET)