USP_DATALIST_EVENTCALENDARITEM
Displays event items for the organization's calendar.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@STARTDATE | datetime | IN | Start date |
@ENDDATE | datetime | IN | End date |
@ONLYSHOWUSERSEVENTS | bit | IN | Only show my events |
@EVENTLOCATIONID | uniqueidentifier | IN | Location |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@INCLUDEINVITATIONS | bit | IN | Include invitations |
@SHOWTASKS | bit | IN | |
@SHOWCOMPLETEDTASKS | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_EVENTCALENDARITEM
(
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@ONLYSHOWUSERSEVENTS bit = 0,
@EVENTLOCATIONID uniqueidentifier = null,
@CURRENTAPPUSERID uniqueidentifier,
@INCLUDEINVITATIONS bit = null,
@SHOWTASKS bit = 0,
@SHOWCOMPLETEDTASKS bit = 0
)
as
set nocount on;
declare @EVENT table(
ID uniqueidentifier,
NAME nvarchar(150),
STARTDATE datetime,
STARTTIME UDT_HOURMINUTE,
ENDDATE datetime,
ENDTIME UDT_HOURMINUTE,
DESCRIPTION nvarchar(255),
EVENTLOCATIONID uniqueidentifier,
HIDEFROMCALENDAR bit,
DATEADDED datetime,
ADDEDBYID uniqueidentifier
)
declare @TASKS table(
TASKID uniqueidentifier,
EVENTID uniqueidentifier,
COMPLETEBYDATE datetime,
STATUSCODE int,
TASKOVERDUE tinyint,
TASKNAME nvarchar(100),
DESCRIPTION nvarchar(300)
)
declare @RESULTS table(
ID uniqueidentifier,
EVENTID uniqueidentifier,
TASKCOMPLETED tinyint, -- 0 = active, 1 - completed
TASKOVERDUE tinyint, -- 0 = current , 1 = overdue
EVENTNAME nvarchar(100),
STARTDATE datetime,
STARTTIME nvarchar(10),
ENDDATE datetime,
ENDTIME nvarchar(10),
TYPECODE tinyint, -- 0 = Event, 1 = Invitation, 2 = Task
DESCRIPTION nvarchar(300),
LOCATION nvarchar(255) null,
DATEADDED datetime null,
ADDEDBY nvarchar(255) null
)
declare @CURRENT_CONSTITUENTID uniqueidentifier
set @CURRENT_CONSTITUENTID = dbo.UFN_CONSTITUENT_GETIDFROMAPPUSERID(@CURRENTAPPUSERID)
insert into @EVENT(
ID, NAME, STARTDATE, STARTTIME, ENDDATE, ENDTIME, DESCRIPTION, EVENTLOCATIONID, HIDEFROMCALENDAR, DATEADDED, ADDEDBYID
)
(
select distinct
EVENT.ID,
EVENT.NAME,
--The "GETEARLIESTTIME" date function has been inlined here for performance (the part with "cast(@DATE as date)")...
cast(EVENT.STARTDATE as date),
EVENT.STARTTIME,
--The "GETEARLIESTTIME" date function has been inlined here for performance (the part with "cast(@DATE as date)")...
cast(EVENT.ENDDATE as date),
EVENT.ENDTIME,
EVENT.DESCRIPTION,
EVENT.EVENTLOCATIONID,
EVENT.HIDEFROMCALENDAR,
EVENT.DATEADDED,
EVENT.ADDEDBYID
from dbo.EVENT
left outer join dbo.EVENTCOORDINATOR on EVENTCOORDINATOR.EVENTID = EVENT.ID
where
(
(@EVENTLOCATIONID is null)
or (EVENT.EVENTLOCATIONID = @EVENTLOCATIONID)
)
and EVENT.ISACTIVE = 1
and (
(@ONLYSHOWUSERSEVENTS = 0)
or (EVENTCOORDINATOR.CONSTITUENTID = dbo.UFN_CONSTITUENT_GETIDFROMAPPUSERID(@CURRENTAPPUSERID))
)
and EVENT.PROGRAMID is null
and dbo.UFN_EVENT_USERHASSITEACCESS(@CURRENTAPPUSERID, EVENT.ID) = 1
)
insert into @RESULTS(
ID, EVENTID, TASKCOMPLETED, TASKOVERDUE, EVENTNAME, STARTDATE, STARTTIME, ENDDATE, ENDTIME, TYPECODE, DESCRIPTION, LOCATION, DATEADDED, ADDEDBY
)
(
select distinct
EVENT.ID as ID,
EVENT.ID,
0,
0,
EVENT.NAME,
--The "GETEARLIESTTIME" date function has been inlined here for performance (the part with "cast(@DATE as date)")...
cast(EVENT.STARTDATE as date),
EVENT.STARTTIME,
--The "GETEARLIESTTIME" date function has been inlined here for performance (the part with "cast(@DATE as date)")...
cast(EVENT.ENDDATE as date),
EVENT.ENDTIME,
0 as TYPECODE,
EVENT.DESCRIPTION,
EVENTLOCATION.NAME,
EVENT.DATEADDED,
CHANGEAGENT.USERNAME
from @EVENT EVENT
inner join dbo.CHANGEAGENT on EVENT.ADDEDBYID = CHANGEAGENT.ID
left join dbo.EVENTLOCATION on EVENTLOCATION.ID = EVENT.EVENTLOCATIONID
where
(
(@STARTDATE is null and @ENDDATE is null)
or ((@STARTDATE is not null and @ENDDATE is not null) and (EVENT.STARTDATE <= @ENDDATE and @STARTDATE <= EVENT.ENDDATE))
or ( (EVENT.STARTDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
or ( (EVENT.ENDDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
)
and EVENT.HIDEFROMCALENDAR = 0
)
if @INCLUDEINVITATIONS = 1
begin
insert into @RESULTS(
ID, EVENTID, TASKCOMPLETED, TASKOVERDUE, EVENTNAME, STARTDATE, STARTTIME, ENDDATE, ENDTIME, TYPECODE, DESCRIPTION, LOCATION, DATEADDED, ADDEDBY
)
(
select distinct
INVITATION.ID,
INVITATION.EVENTID,
0,
0,
INVITATION.NAME,
INVITATION.MAILDATE,
'' as STARTTIME,
INVITATION.MAILDATE as ENDDATE,
'' as ENDTIME,
1 as TYPECODE,
INVITATION.DESCRIPTION,
EVENTLOCATION.NAME,
INVITATION.DATEADDED,
CHANGEAGENT.USERNAME
from dbo.INVITATION
inner join @EVENT EVENT on EVENT.ID = INVITATION.EVENTID
inner join dbo.CHANGEAGENT on INVITATION.ADDEDBYID = CHANGEAGENT.ID
left join dbo.EVENTLOCATION on EVENTLOCATION.ID = EVENT.EVENTLOCATIONID
where
(
( (INVITATION.MAILDATE between @STARTDATE and @ENDDATE) or (@STARTDATE is null and @ENDDATE is null) )
or ( (INVITATION.MAILDATE >= @STARTDATE) and (@ENDDATE is null and @STARTDATE is not null) )
or ( (INVITATION.MAILDATE <= @ENDDATE) and (@STARTDATE is null and @ENDDATE is not null) )
)
)
end
if @SHOWTASKS = 1
begin
if @ONLYSHOWUSERSEVENTS = 1
begin
insert into @TASKS
select
TASKS.ID,
TASKS.EVENTID,
TASKS.COMPLETEBYDATE,
TASKS.STATUSCODE,
(case when (TASKS.STATUSCODE = 0 and (datediff(day, GETDATE(), TASKS.COMPLETEBYDATE) < 0)) then
1
else
0
end) OVERDUE, --OVERDUE
TASKS.NAME,
('Owner:' + NF.NAME + (CHAR(10) + CHAR(13))+ 'Status:'+ TASKS.STATUS + (CHAR(10) + CHAR(13)) + TASKS.COMMENT) DESCRIPTION
from dbo.EVENTTASK TASKS
left join @EVENT ET on TASKS.EVENTID = ET.ID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(TASKS.OWNERID) NF
where ((TASKS.STATUSCODE = 0) or (@SHOWCOMPLETEDTASKS = 1))
and (TASKS.OWNERID = @CURRENT_CONSTITUENTID
or exists(SELECT * from EVENTCOORDINATOR EC
inner join EVENT EV ON EC.EVENTID = EV.ID
inner join EVENTTASK ET ON EV.ID = ET.EVENTID
where ET.ID = TASKS.ID
and (TASKS.OWNERID = @CURRENT_CONSTITUENTID
or EC.CONSTITUENTID = @CURRENT_CONSTITUENTID)
)
)
end
else
begin
insert into @TASKS
select
TASKS.ID,
TASKS.EVENTID,
TASKS.COMPLETEBYDATE,
TASKS.STATUSCODE,
(case when (TASKS.STATUSCODE = 0 and (datediff(day, GETDATE(), TASKS.COMPLETEBYDATE) < 0)) then
1
else
0
end) OVERDUE,
TASKS.NAME,
('Owner:' + NF.NAME + (CHAR(10) + CHAR(13))+ 'Status:'+ TASKS.STATUS + (CHAR(10) + CHAR(13)) + TASKS.COMMENT) DESCRIPTION
from dbo.EVENTTASK TASKS
inner join dbo.EVENT ET ON ET.ID = TASKS.EVENTID
outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(TASKS.OWNERID) NF
where ((TASKS.STATUSCODE = 0) or (@SHOWCOMPLETEDTASKS = 1))
and
(
(@EVENTLOCATIONID is null)
or
(ET.EVENTLOCATIONID = @EVENTLOCATIONID)
)
end
insert into @RESULTS(
ID, EVENTID, TASKCOMPLETED, TASKOVERDUE, EVENTNAME, STARTDATE, STARTTIME, ENDDATE, ENDTIME, TYPECODE, DESCRIPTION
)
select
TASKS.TASKID,
TASKS.EVENTID,
TASKS.STATUSCODE,
TASKS.TASKOVERDUE,
TASKS.TASKNAME,
TASKS.COMPLETEBYDATE,
NULL,
TASKS.COMPLETEBYDATE,
NULL,
2 as TYPECODE,
TASKS.DESCRIPTION
from @TASKS TASKS
end
select
ID,
EVENTNAME as NAME,
STARTDATE,
STARTTIME,
ENDDATE,
ENDTIME,
TYPECODE,
FORMATTEDDESCRIPTION.VALUE,
DATEADDED,
ADDEDBY,
EVENTID,
TASKCOMPLETED,
TASKOVERDUE
from
@RESULTS
outer apply (
select case when LEN(LOCATION) > 50 then
DESCRIPTION + char(10) + LEFT(LOCATION, 50) + '...'
else
DESCRIPTION + char(10) + LOCATION
end as VALUE
) as FORMATTEDDESCRIPTION
order by
DATEADDED desc;