USP_DATALIST_EVENTSWORKCENTERCALENDAREVENTSLIST2

Parameters

Parameter Parameter Type Mode Description
@INCLUDEINACTIVE bit IN
@STARTDATE datetime IN
@ENDDATE datetime IN
@CURRENTAPPUSERID uniqueidentifier IN
@EVENTCATEGORYCODEIDS xml IN
@EVENTLOCATIONIDS xml IN
@ONLYSHOWUSERSEVENTS bit IN
@SHOWTASKS bit IN
@SHOWCOMPLETEDTASKS bit IN
@SITEFILTERMODE tinyint IN
@SITESSELECTED xml IN
@LOCATIONFILTERMODE tinyint IN
@CATEGORYCODEFILTERMODE tinyint IN

Definition

Copy


CREATE procedure dbo.USP_DATALIST_EVENTSWORKCENTERCALENDAREVENTSLIST2
(
    @INCLUDEINACTIVE bit = 0,
    @STARTDATE datetime = null,
    @ENDDATE datetime = null,
    @CURRENTAPPUSERID uniqueidentifier = null,
    @EVENTCATEGORYCODEIDS xml = null,
    @EVENTLOCATIONIDS xml = null,
    @ONLYSHOWUSERSEVENTS bit = 0,
    @SHOWTASKS bit = 0,
    @SHOWCOMPLETEDTASKS bit = 0,
    @SITEFILTERMODE tinyint = 0,
    @SITESSELECTED xml = null,
    @LOCATIONFILTERMODE tinyint = 0,
    @CATEGORYCODEFILTERMODE tinyint = 0
)
as
    set nocount on;

    declare @CURRENT_CONSTITUENTID uniqueidentifier
    set @CURRENT_CONSTITUENTID = dbo.UFN_CONSTITUENT_GETIDFROMAPPUSERID(@CURRENTAPPUSERID)

    declare @CLIENTDATE date = dbo.UFN_TIMEZONEENTRY_GETSYSTEMDEFAULTDATEFROMUTC(getutcdate());

    declare @EVENTCATEGORYCODEIDSTABLE table (
        ID uniqueidentifier,
        SELECTED bit,
        COLORCODE int
    );

    insert into @EVENTCATEGORYCODEIDSTABLE
    select isnull(T.c.value('(EVENTCATEGORYCODEID)[1]','uniqueidentifier'), '00000000-0000-0000-0000-000000000000') as 'ID',
            T.c.value('(EVENTCATEGORYCODE)[1]','bit') as 'SELECTED',
            T.c.value('(EVENTCATEGORYCOLORCODE)[1]','integer') as 'COLORCODE'
    from @EVENTCATEGORYCODEIDS.nodes('/EVENTCATEGORYCODEIDS/ITEM') T(c);

    declare @INCLUDEALLEVENTCATEGORIES bit = 0

    if not exists (select 1 from @EVENTCATEGORYCODEIDSTABLE where SELECTED = 1) begin
        set @INCLUDEALLEVENTCATEGORIES = 1;
    end

    declare @EVENTLOCATIONIDSTABLE table (
        ID uniqueidentifier
    );

    declare @INCLUDEALLEVENTLOCATIONS bit = 0;
    declare @NOEVENTLOCATIONOPTIONSELECTED bit = 0;

    insert into @EVENTLOCATIONIDSTABLE
    select isnull(T.c.value('(EVENTLOCATIONID)[1]','uniqueidentifier'), '00000000-0000-0000-0000-000000000000') as 'ID'
    from @EVENTLOCATIONIDS.nodes('/EVENTLOCATIONIDS/ITEM') T(c)
    where T.c.value('(EVENTLOCATION)[1]','bit') = 1;

    if @@rowcount = 0 begin
        set @INCLUDEALLEVENTLOCATIONS = 1;
    end
    else begin
        select @NOEVENTLOCATIONOPTIONSELECTED = 1
        from @EVENTLOCATIONIDSTABLE
        where ID = '00000000-0000-0000-0000-000000000000';
    end

    declare @RESULT table (
        ID uniqueidentifier,
        EVENTID uniqueidentifier,
        NAME nvarchar(100),
        STARTDATE datetime,
        STARTTIME nvarchar(10),
        ENDDATE datetime,
        ENDTIME nvarchar(10),
        DESCRIPTION nvarchar(300),
        EVENTCATEGORYCODE nvarchar(100),
        EVENTLOCATION nvarchar(500),
        AVAILABILITY integer,
        EVENTTYPE integer,
        COLORCODE integer,
        CAPACITY integer,
        EVENTORTASK tinyint, -- 1 = event, 2 = task

        TASKID uniqueidentifier,
        TASKCOMPLETED tinyint,
        TASKOVERDUE tinyint,
        RSSPUBLISHDATE datetime
    );

    with FILTEREDEVENTS as (
        select
            EVENT.ID,
            EVENT.NAME,
            EVENT.STARTDATE,
            EVENT.STARTTIME,
            EVENT.ENDDATE,
            EVENT.ENDTIME,
            EVENT.DESCRIPTION,
            dbo.UFN_EVENT_GETCATEGORY(EVENT.ID, EVENT.PROGRAMID) as EVENTCATEGORYCODE,
            dbo.UFN_EVENT_GETLOCATIONNAME(EVENT.ID) as EVENTLOCATION,
            case 
                when EVENTAUCTION.ID is not null then 5 -- Auction

                when EVENT.PROGRAMID is not null then 10 -- Program event

                else 1 -- Event

            end as EVENTTYPE,
            (select COLORCODE from @EVENTCATEGORYCODEIDSTABLE C where C.ID = coalesce(EVENT.EVENTCATEGORYCODEID, PROGRAM.PROGRAMCATEGORYCODEID, '00000000-0000-0000-0000-000000000000')) as COLORCODE,
            coalesce(EVENT.CAPACITY, PROGRAM.CAPACITY) as CAPACITY,
            EVENT.DATECHANGED as RSSPUBLISHDATE
        from
            dbo.EVENT
        left outer join
            dbo.EVENTAUCTION on EVENTAUCTION.ID = EVENT.ID
        left outer join
            dbo.PROGRAM on PROGRAM.ID = EVENT.PROGRAMID
        where
            (
                @INCLUDEINACTIVE = 1
                or (
                    EVENT.ISACTIVE = 1
                    and (EVENT.PROGRAMID is null or PROGRAM.ISACTIVE = 1)
                )
            )
            and (
                @INCLUDEALLEVENTCATEGORIES = 1
                or (
                    EVENT.PROGRAMID is null
                    and isnull(EVENT.EVENTCATEGORYCODEID, '00000000-0000-0000-0000-000000000000') in (select ID from @EVENTCATEGORYCODEIDSTABLE where SELECTED = 1)
                )
                or (
                    EVENT.PROGRAMID is not null
                    and isnull(PROGRAM.PROGRAMCATEGORYCODEID, '00000000-0000-0000-0000-000000000000') in (select ID from @EVENTCATEGORYCODEIDSTABLE where SELECTED = 1)
                )
            )
            and (
                @INCLUDEALLEVENTLOCATIONS = 1
                or (
                    EVENT.PROGRAMID is null
                    and isnull(EVENT.EVENTLOCATIONID, '00000000-0000-0000-0000-000000000000') in (select ID from @EVENTLOCATIONIDSTABLE)
                )
                or (
                    EVENT.PROGRAMID is not null
                    and (
                        (@NOEVENTLOCATIONOPTIONSELECTED = 1 and not exists (select 1 from dbo.PROGRAMEVENTLOCATION where PROGRAMEVENTLOCATION.EVENTID = EVENT.ID))
                        or exists (
                            select 1
                            from dbo.PROGRAMEVENTLOCATION
                            inner join @EVENTLOCATIONIDSTABLE on [@EVENTLOCATIONIDSTABLE].ID = PROGRAMEVENTLOCATION.EVENTLOCATIONID
                            where PROGRAMEVENTLOCATION.EVENTID = EVENT.ID
                        )
                    )
                )
            )
            and dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, EVENT.ID) = 1
            and (
                @SITEFILTERMODE = 0
                or exists (
                    select 1
                    from dbo.EVENTSITE with (nolock)
                    inner join dbo.UFN_SITE_BUILDDATALISTSITEFILTER(@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) on UFN_SITE_BUILDDATALISTSITEFILTER.SITEID = EVENTSITE.SITEID  
                    where EVENTSITE.EVENTID = EVENT.ID
                )
            )
            and EVENT.HIDEFROMCALENDAR = 0
    )
    insert into @RESULT
    select
        newid() as ID,
        FILTEREDEVENTS.ID as EVENTID,
        FILTEREDEVENTS.NAME,
        FILTEREDEVENTS.STARTDATE,
        FILTEREDEVENTS.STARTTIME,
        FILTEREDEVENTS.ENDDATE,
        FILTEREDEVENTS.ENDTIME,
        FILTEREDEVENTS.DESCRIPTION,
        FILTEREDEVENTS.EVENTCATEGORYCODE,
        FILTEREDEVENTS.EVENTLOCATION,
        dbo.UFN_EVENT_GETCAPACITY(FILTEREDEVENTS.ID) as AVAILABILITY,
        FILTEREDEVENTS.EVENTTYPE,
        FILTEREDEVENTS.COLORCODE,
        FILTEREDEVENTS.CAPACITY,
        1 as EVENTORTASK,  -- Event

        null as TASKID,
        null as TASKCOMPLETED,
        null as TASKOVERDUE,
        FILTEREDEVENTS.RSSPUBLISHDATE
    from
        FILTEREDEVENTS
    where
        (
            (@STARTDATE is null and @ENDDATE is null)
            or (not (FILTEREDEVENTS.STARTDATE > @ENDDATE or FILTEREDEVENTS.ENDDATE < @STARTDATE))
        )
        and (
            @ONLYSHOWUSERSEVENTS = 0
            or exists (select 1 from dbo.EVENT inner join dbo.EVENTCOORDINATOR on EVENTCOORDINATOR.EVENTID = FILTEREDEVENTS.ID where EVENTCOORDINATOR.CONSTITUENTID = @CURRENT_CONSTITUENTID)
        )

    union all

    select
        newid() as ID,
        FILTEREDEVENTS.ID as EVENTID,
        EVENTTASK.NAME,
        EVENTTASK.COMPLETEBYDATE as STARTDATE,
        null as    STARTTIME,
        EVENTTASK.COMPLETEBYDATE as ENDDATE,
        null as ENDTIME,
        ('Owner:' + NF.NAME + (CHAR(10) + CHAR(13))+ 'Status:'+ EVENTTASK.STATUS + (CHAR(10) + CHAR(13)) + EVENTTASK.COMMENT) as DESCRIPTION,
        FILTEREDEVENTS.EVENTCATEGORYCODE,
        FILTEREDEVENTS.EVENTLOCATION,
        0 as AVAILABILITY,
        FILTEREDEVENTS.EVENTTYPE,
        FILTEREDEVENTS.COLORCODE,
        0 as CAPACITY,
        2 as EVENTORTASK,  -- Task

        EVENTTASK.ID as TASKID,
        EVENTTASK.STATUSCODE as TASKCOMPLETED,
        case
            when (EVENTTASK.STATUSCODE = 0 and (datediff(day, @CLIENTDATE, EVENTTASK.COMPLETEBYDATE) < 0)) then 1
            else 0
        end as TASKOVERDUE,
        FILTEREDEVENTS.RSSPUBLISHDATE
    from
        FILTEREDEVENTS
    inner join
        dbo.EVENTTASK on EVENTTASK.EVENTID = FILTEREDEVENTS.ID
    outer apply
        dbo.UFN_CONSTITUENT_DISPLAYNAME(EVENTTASK.OWNERID) as NF
    where
        @SHOWTASKS = 1
        and (@SHOWCOMPLETEDTASKS = 1 or EVENTTASK.STATUSCODE = 0)
        and (
            (@STARTDATE is null and @ENDDATE is null)
            or (EVENTTASK.COMPLETEBYDATE <= @ENDDATE and EVENTTASK.COMPLETEBYDATE >= @STARTDATE)
        )
        and (
            @ONLYSHOWUSERSEVENTS = 0
            or exists (select 1 from dbo.EVENT inner join dbo.EVENTCOORDINATOR on EVENTCOORDINATOR.EVENTID = FILTEREDEVENTS.ID where EVENTCOORDINATOR.CONSTITUENTID = @CURRENT_CONSTITUENTID)
            or EVENTTASK.OWNERID = @CURRENT_CONSTITUENTID
        )

    select
        ID,
        EVENTID,
        NAME,
        STARTDATE,
        STARTTIME,
        ENDDATE,
        ENDTIME,
        DESCRIPTION,
        EVENTCATEGORYCODE,
        EVENTLOCATION,
        AVAILABILITY,
        EVENTTYPE,
        COLORCODE,
        CAPACITY,
        EVENTORTASK,
        TASKID,
        TASKCOMPLETED,
        TASKOVERDUE,
        RSSPUBLISHDATE
    from @RESULT
    order by
        RSSPUBLISHDATE desc,
        NAME,
        STARTDATE,
        STARTTIME,
        ENDDATE,
        ENDTIME;