USP_DATALIST_CONSTITUENTGROUPINTERACTION
List of interactions belonging to a constituent group and its current members.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@GROUPID | uniqueidentifier | IN | Input parameter indicating the context ID for the data list. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@DATEFILTER | tinyint | IN | Date |
@STARTDATE | datetime | IN | Start date |
@ENDDATE | datetime | IN | End date |
@TYPEFILTER | uniqueidentifier | IN | Contact method |
Definition
Copy
CREATE procedure dbo.USP_DATALIST_CONSTITUENTGROUPINTERACTION
(
@GROUPID uniqueidentifier,
@CURRENTAPPUSERID 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
declare @DATALISTID uniqueidentifier;
set @DATALISTID = '9dbf2aca-66da-443d-bfc9-89cad0d53e72';
with INTERACTION_CTE as
(
-- group interactions
select
I.ID,
I.DATE DATE,
case I.COMPLETED when 1 then 'Completed' else I.STATUS end STATUS,
I.OBJECTIVE OBJECTIVE,
dbo.UFN_INTERACTIONTYPECODE_GETDESCRIPTION(I.INTERACTIONTYPECODEID) INTERACTIONTYPE,
case when I.PROSPECTPLANID is null then 0 else 1 end ISSTEP,
case
when dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 then 1
else dbo.UFN_SECURITY_APPUSER_GRANTED_DATALIST_FORCONSTIT(@CURRENTAPPUSERID, @DATALISTID, I.CONSTITUENTID)
end HASPERMISSIONS,
I.FUNDRAISERID FUNDRAISERID,
I.CONSTITUENTID CONSTITUENTID,
I.ISINTERACTION,
I.STATUSCODE,
I.INTERACTIONTYPECODEID,
I.INTERACTIONSUBCATEGORYID,
'0' GROUPORPRIMARYSORT,
C.NAME GROUPORPRIMARYSORTVALUE
from
dbo.INTERACTION I
left outer join
dbo.CONSTITUENT C on C.ID = I.CONSTITUENTID
where
I.CONSTITUENTID = @GROUPID
union all
-- group as an interaction participant
select
I.ID,
I.DATE DATE,
case I.COMPLETED when 1 then 'Completed' else I.STATUS end STATUS,
I.OBJECTIVE OBJECTIVE,
dbo.UFN_INTERACTIONTYPECODE_GETDESCRIPTION(I.INTERACTIONTYPECODEID) INTERACTIONTYPE,
case when I.PROSPECTPLANID is null then 0 else 1 end ISSTEP,
case
when dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 then 1
else dbo.UFN_SECURITY_APPUSER_GRANTED_DATALIST_FORCONSTIT(@CURRENTAPPUSERID, @DATALISTID, IP.CONSTITUENTID)
end HASPERMISSIONS,
I.FUNDRAISERID FUNDRAISERID,
I.CONSTITUENTID CONSTITUENTID,
I.ISINTERACTION,
I.STATUSCODE,
I.INTERACTIONTYPECODEID,
I.INTERACTIONSUBCATEGORYID,
'0' GROUPORPRIMARYSORT,
C.NAME GROUPORPRIMARYSORTVALUE
from
dbo.INTERACTION I
inner join
dbo.INTERACTIONPARTICIPANT IP on IP.INTERACTIONID = I.ID
left outer join
dbo.CONSTITUENT C on C.ID = I.CONSTITUENTID
where
IP.CONSTITUENTID = @GROUPID
union all
-- group member interactions
select
I.ID,
I.DATE DATE,
case I.COMPLETED when 1 then 'Completed' else I.STATUS end STATUS,
I.OBJECTIVE OBJECTIVE,
dbo.UFN_INTERACTIONTYPECODE_GETDESCRIPTION(I.INTERACTIONTYPECODEID) INTERACTIONTYPE,
case when I.PROSPECTPLANID is null then 0 else 1 end ISSTEP,
case
when dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 then 1
else dbo.UFN_SECURITY_APPUSER_GRANTED_DATALIST_FORCONSTIT(@CURRENTAPPUSERID, @DATALISTID, GM.MEMBERID)
end HASPERMISSIONS,
I.FUNDRAISERID FUNDRAISERID,
I.CONSTITUENTID CONSTITUENTID,
I.ISINTERACTION,
I.STATUSCODE,
I.INTERACTIONTYPECODEID,
I.INTERACTIONSUBCATEGORYID,
case
when GM.ISPRIMARY = 1 then '1'
else '2' + (select CONSTITUENT.KEYNAME + ' ' + CONSTITUENT.FIRSTNAME + ' ' + cast(CONSTITUENT.ID as nvarchar(36)) from dbo.CONSTITUENT where ID=GM.MEMBERID)
end GROUPORPRIMARYSORT,
C.NAME GROUPORPRIMARYSORTVALUE
from
dbo.INTERACTION I
inner join
dbo.GROUPMEMBER GM on GM.MEMBERID = I.CONSTITUENTID
left outer join
dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
left outer join
dbo.CONSTITUENT C on C.ID = GM.MEMBERID
where
GM.GROUPID = @GROUPID
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > I.DATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= I.DATE))
or (GMDR.DATEFROM <= I.DATE and GMDR.DATETO > I.DATE))
union all
-- group members as interaction participants
select
I.ID,
I.DATE DATE,
case I.COMPLETED when 1 then 'Completed' else I.STATUS end STATUS,
I.OBJECTIVE OBJECTIVE,
dbo.UFN_INTERACTIONTYPECODE_GETDESCRIPTION(I.INTERACTIONTYPECODEID) INTERACTIONTYPE,
case when I.PROSPECTPLANID is null then 0 else 1 end ISSTEP,
case
when dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 then 1
else dbo.UFN_SECURITY_APPUSER_GRANTED_DATALIST_FORCONSTIT(@CURRENTAPPUSERID, @DATALISTID, GM.MEMBERID)
end HASPERMISSIONS,
I.FUNDRAISERID FUNDRAISERID,
I.CONSTITUENTID CONSTITUENTID,
I.ISINTERACTION,
I.STATUSCODE,
I.INTERACTIONTYPECODEID,
I.INTERACTIONSUBCATEGORYID,
case
when GM.ISPRIMARY = 1 then '1'
else '2' + (select CONSTITUENT.KEYNAME + ' ' + CONSTITUENT.FIRSTNAME + ' ' + cast(CONSTITUENT.ID as nvarchar(36)) from dbo.CONSTITUENT where ID=GM.MEMBERID)
end GROUPORPRIMARYSORT,
C.NAME GROUPORPRIMARYSORTVALUE
from
dbo.INTERACTION I
inner join
dbo.INTERACTIONPARTICIPANT IP on IP.INTERACTIONID = I.ID
inner join
dbo.GROUPMEMBER GM on GM.MEMBERID = IP.CONSTITUENTID
left outer join
dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
left outer join
dbo.CONSTITUENT C on C.ID = GM.MEMBERID
where
GM.GROUPID = @GROUPID
and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > I.DATE))
or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= I.DATE))
or (GMDR.DATEFROM <= I.DATE and GMDR.DATETO > I.DATE))
)
select
I.ID ID,
I.DATE DATE,
I.GROUPORPRIMARYSORTVALUE,
I.STATUS,
FC.ID OWNERID,
FC.NAME FUNDRAISER,
I.OBJECTIVE OBJECTIVE,
I.INTERACTIONTYPE,
cast(I.ISSTEP as bit) ISSTEP,
case when (INOTE.ID is not null) or (IA.ID is not null) or (IML.ID is not null)
then convert(bit,1) else convert(bit,0) end HASDOCUMENTATION,
I.HASPERMISSIONS,
I.GROUPORPRIMARYSORT,
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.INTERACTIONNOTE INOTE on INOTE.INTERACTIONID = I.ID
left outer join
dbo.INTERACTIONATTACHMENT IA on IA.INTERACTIONID = I.ID
left outer join
dbo.INTERACTIONMEDIALINK IML on IML.INTERACTIONID = I.ID
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.GROUPORPRIMARYSORT asc, I.DATE asc
end