USP_DATAFORMTEMPLATE_VIEW_EVENT_MICROSITE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@DATALOADED | bit | INOUT | |
@NAME | nvarchar(512) | INOUT | |
@URL | nvarchar(max) | INOUT | |
@ISACTIVE | bit | INOUT | |
@ISONLINE | bit | INOUT | |
@ISLIVE | bit | INOUT | |
@CAPACITY | int | INOUT | |
@AVAILABLECAPACITY | int | INOUT | |
@STARTDATE | datetime | INOUT | |
@ENDDATE | datetime | INOUT | |
@ISEXPIRED | bit | INOUT | |
@EVENTTYPECODE | tinyint | INOUT | |
@ISSALESMETHODSET | bit | INOUT | |
@ONSALEDATETIME | datetime | INOUT | |
@OFFSALEDATETIME | datetime | INOUT | |
@ISONSALE | bit | INOUT |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_EVENT_MICROSITE
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@NAME nvarchar(512) = null output,
@URL nvarchar(max) = null output,
@ISACTIVE bit = null output,
@ISONLINE bit = null output,
@ISLIVE bit = null output,
@CAPACITY integer = null output,
@AVAILABLECAPACITY integer =null output,
@STARTDATE datetime = null output,
@ENDDATE datetime = null output,
@ISEXPIRED bit = null output, --Is after the end of the on-sale window
@EVENTTYPECODE tinyint = null output,
@ISSALESMETHODSET bit = null output,
@ONSALEDATETIME datetime = null output,
@OFFSALEDATETIME datetime = null output,
@ISONSALE bit = null output --Is after the beginning of the on-sale window
)
as
begin
set nocount on;
set @DATALOADED = 0;
declare @CAPACITYRESERVED integer = 0
declare @ENDTIME dbo.UDT_HOURMINUTE = null
declare @SALESMETHODID uniqueidentifier = (select [ID] from dbo.[SALESMETHOD] where [TYPECODE] = 2)
declare @CURRENTDATETIMEOFFSET datetimeoffset = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(sysutcdatetime(), 1);
select
@DATALOADED = 1,
@NAME = [EVENT].[NAME],
@URL = [ONLINEINFO].[URL],
@ISACTIVE = case
when [PROGRAM].[ID] is null then [EVENT].[ISACTIVE]
else [PROGRAM].[ISACTIVE]
end,
@ISONLINE = isnull([ONLINEINFO].[ISONLINE],0),
@CAPACITY = [EVENT].[CAPACITY],
@STARTDATE = dbo.UFN_DATE_ADDHOURMINUTE([EVENT].[STARTDATE], [EVENT].[STARTTIME]),
@ENDDATE = dbo.UFN_DATE_ADDHOURMINUTE([EVENT].[ENDDATE], [EVENT].[ENDTIME]),
@ENDTIME = isnull([EVENT].[ENDTIME],''),
@EVENTTYPECODE = case when [EVENT].[PROGRAMID] is null then 0 else 1 end, --Preregistered: 1, Special: 0
@ISSALESMETHODSET = case when [EVENTSALESMETHOD].[ID] is null then 0 else 1 end,
@ONSALEDATETIME = [EVENTSALESMETHOD].[ONSALEDATETIME],
@OFFSALEDATETIME = [EVENTOFFSALESDATETIME].[TIME],
@ISONSALE = case
when
[PROGRAM].[ID] is null or --Special event
@CURRENTDATETIMEOFFSET >= [EVENTSALESMETHOD].[ONSALEDATETIMEWITHOFFSET] --Preregistered event
then 1
else 0
end
from dbo.[EVENT]
outer apply (
select
case when MICROSITEPAGE.SITEPAGESID is not null then 1 else 0 end as [ISONLINE],
dbo.UFN_BBNC_URL() + [VanityURL].[VanityURL] as [URL]
from dbo.[MICROSITEPAGE]
inner join dbo.VanityURL on
MICROSITEPAGE.SITEPAGESID = VanityURL.PageID
where MICROSITEPAGE.OBJECTID = EVENT.ID and MICROSITEPAGE.EXCLUDED = 0
) as [ONLINEINFO]
left join dbo.EVENTSALESMETHOD
on
[EVENT].ID = EVENTSALESMETHOD.EVENTID and
[EVENTSALESMETHOD].[SALESMETHODID] = @SALESMETHODID
left join dbo.[PROGRAM]
on [EVENT].[PROGRAMID] = [PROGRAM].[ID]
left join dbo.PROGRAMSALESMETHOD
on
[PROGRAM].[ID] = PROGRAMSALESMETHOD.PROGRAMID and
[PROGRAMSALESMETHOD].[SALESMETHODID] = @SALESMETHODID
outer apply (
select
case
when [PROGRAMSALESMETHOD].[ONSALEENDTYPECODE] is not null then
case [PROGRAMSALESMETHOD].[ONSALEENDTYPECODE]
when 0 then [EVENT].[STARTDATETIME]
when 1 then dateadd(mi, -1 * [PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIME])
when 2 then dateadd(hh, -1 * [PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIME])
when 3 then dateadd(mi, [PROGRAMSALESMETHOD].[ONSALEENDINTERVAL], [EVENT].[STARTDATETIME])
end
else [EVENT].[STARTDATETIME]
end as [TIME]
) [EVENTOFFSALESDATETIME]
where [EVENT].[ID] = @ID;
set @ISLIVE = case when @ISONLINE = 1 and @ISACTIVE = 1 then 1 else 0 end
declare @EXPIRATIONDATE datetime = null
if @EVENTTYPECODE = 0
begin
select @CAPACITYRESERVED = count(REGISTRANT.ID)
from dbo.[REGISTRANT]
where
[REGISTRANT].[EVENTID] = @ID and
[REGISTRANT].[ISCANCELLED] = 0 and
[REGISTRANT].[WILLNOTATTEND] = 0
set @AVAILABLECAPACITY = @CAPACITY - @CAPACITYRESERVED
--Calculate expiration from end of start date
if @STARTDATE > @ENDDATE
begin
set @ENDDATE = @STARTDATE
set @EXPIRATIONDATE = dbo.UFN_DATE_GETLATESTTIME(@STARTDATE)
end
else if @ENDTIME = ''
set @EXPIRATIONDATE = dbo.UFN_DATE_GETLATESTTIME(@ENDDATE)
else
set @EXPIRATIONDATE = @ENDDATE
end
else if @EVENTTYPECODE = 1
begin
select @AVAILABLECAPACITY = AVAILABILITY
from dbo.V_PROGRAMEVENT_TICKETCOUNTS
where ID = @ID
set @EXPIRATIONDATE = @OFFSALEDATETIME
end
if @AVAILABLECAPACITY < 0
set @AVAILABLECAPACITY = 0
declare @EXPIRATIONDATEWITHOFFSET datetimeoffset = null
set @EXPIRATIONDATEWITHOFFSET = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(@EXPIRATIONDATE, 0);
set @ISEXPIRED = case when @EXPIRATIONDATEWITHOFFSET < @CURRENTDATETIMEOFFSET then 1 else 0 end
return 0;
end