USP_DATALIST_MICROSITE_EVENTS

Parameters

Parameter Parameter Type Mode Description
@ISLIVE bit IN
@NAME nvarchar(100) IN
@DATESELECTTYPE tinyint IN
@STARTDATE datetime IN
@ENDDATE datetime IN

Definition

Copy


                CREATE procedure dbo.USP_DATALIST_MICROSITE_EVENTS(
                    @ISLIVE bit = 0,
                    @NAME nvarchar(100) = '',
                    @DATESELECTTYPE tinyint = 2,
                    @STARTDATE datetime = null,
                    @ENDDATE datetime = null
                )
                as
                    set nocount on;

                    set @NAME = '%' + isnull(replace(replace(@NAME, '*', '%'), '?', '_'),'') + '%';
                    declare @BBNCURL nvarchar(1024) = dbo.UFN_BBNC_URL();

                    if @DATESELECTTYPE is null
                        set @DATESELECTTYPE = 2;

                    declare @CURRENTDATE date = getdate()

                    set @STARTDATE = case @DATESELECTTYPE
                        when 1 then @CURRENTDATE
                        when 2 then @CURRENTDATE
                        when 3 then dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE)
                        when 4 then dbo.UFN_DATE_GETEARLIESTTIME(@STARTDATE)
                        when 5 then dbo.UFN_DATE_GETEARLIESTTIME(@CURRENTDATE)
                    end

                    set @ENDDATE = case @DATESELECTTYPE
                        when 1 then dbo.UFN_DATE_GETLATESTTIME(dateadd(day, 10, @CURRENTDATE))
                        when 2 then dbo.UFN_DATE_GETLATESTTIME(dateadd(day, 30, @CURRENTDATE))
                        when 3 then dbo.UFN_DATE_GETLATESTTIME(@ENDDATE)
                        when 4 then dbo.UFN_DATE_GETLATESTTIME(@STARTDATE)
                        when 5 then dbo.UFN_DATE_GETLATESTTIME(@CURRENTDATE)
                    end

                    declare @CURRENTDATETIMEOFFSET datetimeoffset = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEWITHTIMEOFFSET(sysutcdatetime(), 1);

                    declare @EVENTS table (
                        ID uniqueidentifier,
                        NAME nvarchar(100),
                        STARTDATE datetime,
                        STARTTIME dbo.UDT_HOURMINUTE,
                        ISLIVE bit,
                        ISACTIVE bit,
                        ISAPPROVED bit,
                        PRIMARYCONTENTID int,
                        PROGRAMID uniqueidentifier,
                        EVENT_MICROSITEEMAILTEMPLATEID uniqueidentifier,
                        HASACTIVEEMAILTEMPLATE bit
                    )

                    insert into @EVENTS
                    select 
                        [EVENT].[ID],
                        [EVENT].[NAME],
                        [EVENT].[STARTDATE],
                        [EVENT].[STARTTIME],
                        [LIVESTATUS].[ISLIVE],
                        [ACTIVE].[IS] as [ISACTIVE],
                        [ONLINEINFO].[ISAPPROVED],
                        [ONLINEINFO].[PRIMARYCONTENTID],
                        [EVENT].[PROGRAMID],
                        [EVENT_MICROSITEEMAILTEMPLATE].[ID] as [EVENT_MICROSITEEMAILTEMPLATEID],
                        [EVENT_MICROSITEEMAILTEMPLATE].[ACTIVE] as [HASACTIVEEMAILTEMPLATE]
                    from dbo.[EVENT]
                    left join dbo.[EVENTMANAGEMENTOPTIONS]
                        on EVENTMANAGEMENTOPTIONS.EVENTID = EVENT.ID
                    left join dbo.[PROGRAM]
                        on [EVENT].[PROGRAMID] = [PROGRAM].[ID]
                    left outer join dbo.[EVENT_MICROSITEEMAILTEMPLATE]
                        on [EVENT].[ID] = [EVENT_MICROSITEEMAILTEMPLATE].[EVENTID]
                    outer apply (
                        select 
                            case when MICROSITEPAGE.SITEPAGESID is not null then 1 else 0 end as [ISAPPROVED],
                            MICROSITEPAGE.PRIMARYCONTENTID as [PRIMARYCONTENTID],
                            @BBNCURL + [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]
                    cross apply (
                        select case 
                            when [PROGRAM].[ID] is null then [EVENT].[ISACTIVE]
                            else [PROGRAM].[ISACTIVE]
                        end as [IS]
                    ) [ACTIVE]
                    cross apply (
                        select case when [ONLINEINFO].[ISAPPROVED] = 1 and [ACTIVE].[IS] = 1 then 1 else 0 end as [ISLIVE]
                    ) [LIVESTATUS]
                    where 
                        --Date filter

                        (
                            @DATESELECTTYPE = 0 or
                            [EVENT].[STARTDATE] between @STARTDATE and @ENDDATE
                        ) and
                        --Name filter

                        [EVENT].[NAME] like @NAME escape '/' and
                        --IsLive filter

                        (
                            @ISLIVE = 0 or
                            [LIVESTATUS].[ISLIVE] = 1
                        ) and
                        (
                            --Special events

                            (
                                [EVENT].[PROGRAMID] is null and
                                --Not multi-level

                                [EVENT].[MAINEVENTID] is null and
                                not exists(select 1 from dbo.[EVENT] as [E] where [E].[MAINEVENTID] = [EVENT].[ID]) and
                                [EVENTMANAGEMENTOPTIONS].[ID] is null
                            ) or
                            --Pre-registered

                            (
                                [PROGRAM].[ID] is not null and
                                [PROGRAM].[ISPREREGISTERED] = 1
                            )
                        )
                    order by 
                        coalesce([PROGRAM].[ISPREREGISTERED], 0) asc
                        [PROGRAM].[ID], 
                        [EVENT].[NAME],
                        [EVENT].[STARTDATETIME]

                    select
                        ID,
                        NAME,
                        STARTDATE,
                        STARTTIME,
                        ISLIVE,
                        ISACTIVE,
                        ISAPPROVED,
                        PRIMARYCONTENTID,
                        PROGRAMID,
                        'cfff2e8d-8f1b-481b-8beb-d52271095e83' as DETAILVIEWID,
                        1 as ISEVENT,
                        EVENT_MICROSITEEMAILTEMPLATEID as MICROSITEEMAILTEMPLATEID,
                        coalesce(HASACTIVEEMAILTEMPLATE, 0) as HASACTIVEACKNOWLEDGEMENTEMAIL
                    from @EVENTS

                    union all
                    select
                        ID,
                        NAME,
                        null STARTDATE,
                        null STARTTIME,
                        1 as ISLIVE,
                        ISACTIVE,
                        null ISAPPROVED,
                        null PRIMARYCONTENTID,
                        null as PROGRAMID,
                        'bfd26069-fbe5-4e65-8654-d203ad90e303' as DETAILVIEWID,
                        0 as ISEVENT,
                        MICROSITEEMAILTEMPLATEID,
                        coalesce(HASACTIVEEMAILTEMPLATE , 0) as HASACTIVEACKNOWLEDGEMENTEMAIL
                    from (
                        select top 1000 --Need to specify a limit to use 'order by'

                            [PROGRAM].ID,
                            [PROGRAM].NAME,
                            [PROGRAM].ISACTIVE,
                            [PROGRAM_MICROSITEEMAILTEMPLATE].[ID] as [MICROSITEEMAILTEMPLATEID],
                            [PROGRAM_MICROSITEEMAILTEMPLATE].[ACTIVE] as HASACTIVEEMAILTEMPLATE
                        from dbo.[PROGRAM]
                        left outer join dbo.[PROGRAM_MICROSITEEMAILTEMPLATE]
                            on [PROGRAM].[ID] = [PROGRAM_MICROSITEEMAILTEMPLATE].[PROGRAMID]
                        where exists(select 1 from @EVENTS where [PROGRAMID] = [PROGRAM].[ID])
                        order by NAME
                    ) [PROGRAM]