USP_DATALIST_CONSTITUENT_INTERACTIONS
List of interactions for a given constituent.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CONSTITUENTID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@DATEFILTER | tinyint | IN | Date |
@STARTDATE | datetime | IN | Start date |
@ENDDATE | datetime | IN | End date |
@TYPEFILTER | uniqueidentifier | IN | Type |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_CONSTITUENT_INTERACTIONS(
@CONSTITUENTID uniqueidentifier,
@DATEFILTER tinyint = 0,
@STARTDATE datetime = null,
@ENDDATE datetime = null,
@TYPEFILTER uniqueidentifier = null
)
as begin
set nocount on;
declare @DATE datetime;
set @DATE = getdate();
if @DATEFILTER = 0 -- all
begin
set @STARTDATE = null;
set @ENDDATE = null;
end
if @DATEFILTER = 1 -- this year
begin
set @STARTDATE = dbo.UFN_DATE_THISCALENDARYEAR_FIRSTDAY(@DATE, 0);
set @ENDDATE = dbo.UFN_DATE_THISCALENDARYEAR_LASTDAY(@DATE, 0);
end
if @DATEFILTER = 2 -- this quarter
begin
set @STARTDATE = dbo.UFN_DATE_THISQUARTER_FIRSTDAY(@DATE, 0);
set @ENDDATE = dbo.UFN_DATE_THISQUARTER_LASTDAY(@DATE, 0);
end
if @DATEFILTER = 3 -- this month
begin
set @STARTDATE = dbo.UFN_DATE_THISMONTH_FIRSTDAY(@DATE, 0);
set @ENDDATE = dbo.UFN_DATE_THISMONTH_LASTDAY(@DATE, 0);
end
if @DATEFILTER = 4 -- this week
begin
set @STARTDATE = dbo.UFN_DATE_THISWEEK_FIRSTDAY(@DATE, 0);
set @ENDDATE = dbo.UFN_DATE_THISWEEK_LASTDAY(@DATE, 0);
end
if @DATEFILTER = 5 -- next week
begin
set @STARTDATE = dbo.UFN_DATE_NEXTWEEK_FIRSTDAY(@DATE, 0);
set @ENDDATE = dbo.UFN_DATE_NEXTWEEK_LASTDAY(@DATE, 0);
end
if @DATEFILTER = 6 -- next month
begin
set @STARTDATE = dbo.UFN_DATE_NEXTMONTH_FIRSTDAY(@DATE, 0);
set @ENDDATE = dbo.UFN_DATE_NEXTMONTH_LASTDAY(@DATE, 0);
end
if @DATEFILTER = 7 -- next quarter
begin
set @STARTDATE = dbo.UFN_DATE_NEXTQUARTER_FIRSTDAY(@DATE, 0);
set @ENDDATE = dbo.UFN_DATE_NEXTQUARTER_LASTDAY(@DATE, 0);
end
if @DATEFILTER = 8 -- next year
begin
set @STARTDATE = dbo.UFN_DATE_NEXTCALENDARYEAR_FIRSTDAY(@DATE, 0);
set @ENDDATE = dbo.UFN_DATE_NEXTCALENDARYEAR_LASTDAY(@DATE, 0);
end;
with INTERACTION_CTE as
(
select
I.ID,
I.DATE,
case I.COMPLETED when 1 then 'Completed' else I.STATUS end STATUS,
I.OBJECTIVE,
dbo.UFN_INTERACTIONTYPECODE_GETDESCRIPTION(I.INTERACTIONTYPECODEID) TYPE,
case when I.PROSPECTPLANID is null then 0 else 1 end ISSTEP,
I.FUNDRAISERID,
I.PROSPECTPLANID,
I.ISINTERACTION,
I.STATUSCODE,
I.INTERACTIONTYPECODEID,
I.EVENTID,
I.INTERACTIONSUBCATEGORYID
from
dbo.INTERACTION I
where
I.CONSTITUENTID = @CONSTITUENTID
union
select
I.ID,
I.DATE,
case I.COMPLETED when 1 then 'Completed' else I.STATUS end,
I.OBJECTIVE,
dbo.UFN_INTERACTIONTYPECODE_GETDESCRIPTION(I.INTERACTIONTYPECODEID),
case when I.PROSPECTPLANID is null then 0 else 1 end,
I.FUNDRAISERID,
I.PROSPECTPLANID,
I.ISINTERACTION,
I.STATUSCODE,
I.INTERACTIONTYPECODEID,
I.EVENTID,
I.INTERACTIONSUBCATEGORYID
from
dbo.INTERACTION I
inner join
dbo.INTERACTIONPARTICIPANT IP on IP.INTERACTIONID = I.ID
where
IP.CONSTITUENTID = @CONSTITUENTID
)
select distinct
I.ID,
I.DATE,
I.STATUS,
FC.NAME,
FC.ID,
I.OBJECTIVE,
I.TYPE,
case when exists(select 1 from dbo.INTERACTIONNOTE where INTERACTIONNOTE.INTERACTIONID=I.ID)
or exists(select 1 from dbo.INTERACTIONATTACHMENT where INTERACTIONATTACHMENT.INTERACTIONID=I.ID)
or exists(select 1 from dbo.INTERACTIONMEDIALINK where INTERACTIONMEDIALINK.INTERACTIONID=I.ID)
then convert(bit,1) else convert(bit,0) end,
I.ISSTEP,
dbo.UFN_EVENT_GETNAME(I.EVENTID),
case when exists(select 1 from dbo.INTERACTIONRESPONSE where INTERACTIONRESPONSE.INTERACTIONID=I.ID)
then convert(bit,1) else convert(bit,0) end,
IC.NAME,
ISC.NAME,
case when I.ISSTEP = 1 then '6ce4b0e8-cfcf-4f57-94c3-00eea94fb499'
else 'b525985b-be02-4f02-a9b8-c110411cf936'
end VIEWFORMID
from
INTERACTION_CTE I
left outer join
dbo.CONSTITUENT FC on FC.ID=I.FUNDRAISERID
left outer join
dbo.INTERACTIONSUBCATEGORY ISC on ISC.ID = I.INTERACTIONSUBCATEGORYID
left outer join
dbo.INTERACTIONCATEGORY IC on IC.ID = ISC.INTERACTIONCATEGORYID
where
I.ISINTERACTION = 1
and
I.STATUSCODE != 0
and
(
(I.DATE between @STARTDATE and @ENDDATE)
or
(@STARTDATE is null and @ENDDATE is null)
or
(I.DATE >= @STARTDATE and @ENDDATE is null)
or
(@STARTDATE is null and I.DATE <= @ENDDATE)
)
and (
(I.INTERACTIONTYPECODEID = @TYPEFILTER)
or
(@TYPEFILTER is null)
)
order by
I.DATE;
end