USP_DATALIST_ORDERTICKETSELECT
Lists programs available for sale.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@DATESELECTTYPE | tinyint | IN | Date |
@STARTDATE | date | IN | From |
@ENDDATE | date | IN | To |
@NAME | nvarchar(512) | IN | Name |
@SHOWPAST | bit | IN | Show past events |
@CATEGORY | uniqueidentifier | IN | Category |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_ORDERTICKETSELECT
(
@ID uniqueidentifier,
@DATESELECTTYPE tinyint = null,
@STARTDATE date = null,
@ENDDATE date = null,
@NAME nvarchar(512) = null,
@SHOWPAST bit = null,
@CATEGORY uniqueidentifier = null
)
as
set nocount on;
--@STARTDATE and @ENDDATE must be passed in the default system time zone
-- Get sales method ID and constituent ID
declare @CONSTITUENTID uniqueidentifier
declare @SALESMETHODID uniqueidentifier
select
@CONSTITUENTID = SALESORDER.CONSTITUENTID,
@SALESMETHODID = SALESMETHOD.ID
from dbo.SALESORDER
inner join dbo.SALESMETHOD on SALESORDER.SALESMETHODTYPECODE = SALESMETHOD.TYPECODE
where SALESORDER.ID = @ID
set @NAME = '%' + replace(replace(@NAME, '*', '%'), '?', '_') + '%';
declare @CURRENTDATE date = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEFROMUTC(getutcdate())
if @SHOWPAST is null
set @SHOWPAST = 0
if @DATESELECTTYPE is null
set @DATESELECTTYPE = 1;
set @STARTDATE = case @DATESELECTTYPE
when 1 then @CURRENTDATE
when 2 then @CURRENTDATE
when 3 then @STARTDATE
when 4 then @STARTDATE
end;
set @ENDDATE = case @DATESELECTTYPE
when 1 then @CURRENTDATE
when 2 then dateadd(week,1, @CURRENTDATE)
when 3 then @STARTDATE
when 4 then @ENDDATE
end;
declare @FILTER nvarchar(110);
set @FILTER = isnull(convert(nvarchar(1), @DATESELECTTYPE), '') + '|' +
isnull(convert(nvarchar(50), @STARTDATE, 101), '') + '|' +
isnull(convert(nvarchar(50), @ENDDATE, 101), '') + '|' +
convert(nvarchar(36), @ID) + '|' +
convert(nvarchar(1), @SHOWPAST);
--If past events shouldn't be shown and the start date is before now, fix start date to now
if @SHOWPAST = 0 and (@STARTDATE < @CURRENTDATE)
set @STARTDATE = @CURRENTDATE;
declare @CURRENTDATETIMEWITHOFFSET datetimeoffset = sysdatetimeoffset();
declare @STARTDATETIMEWITHOFFSET datetimeoffset = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(@STARTDATE, 0);
declare @ENDDATETIMEWITHOFFSET datetimeoffset = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(@ENDDATE, 0);
set @STARTDATETIMEWITHOFFSET = dbo.UFN_DATETIMEOFFSET_GETEARLIESTTIME(@STARTDATETIMEWITHOFFSET);
set @ENDDATETIMEWITHOFFSET = dbo.UFN_DATETIMEOFFSET_GETLATESTTIME(@ENDDATETIMEWITHOFFSET);
select
[ID],
[PROGRAMID],
[NAME],
[AVAILABILITY],
[STARTDATE],
[STARTTIME],
[ENDTIME],
[PROGRAMCATEGORY],
[ISDAILYADMISSION],
[ISCOMBINATION],
[EVENTSTATUSCODE],
convert(nvarchar(50), [ID]) + '|' + @FILTER as [IDWITHFILTER]
from dbo.UFN_SALESORDER_PROGRAMTICKETSELECT_DATETIMEOFFSET
(
@SALESMETHODID,
@CONSTITUENTID,
@DATESELECTTYPE,
@STARTDATETIMEWITHOFFSET,
@ENDDATETIMEWITHOFFSET,
@NAME,
@SHOWPAST,
@CURRENTDATETIMEWITHOFFSET
)
order by
[ISCOMBINATION] desc,
[ISDAILYADMISSION] desc,
[NAME] asc,
[STARTDATE] asc,
[STARTTIME] asc;