USP_DATAFORMTEMPLATE_VIEW_CONSTITUENTSUMMARYDOCSINTERACTIONSTILE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@CURRENTAPPUSERID | uniqueidentifier | IN | |
@DATALOADED | bit | INOUT | |
@ISGROUP | bit | INOUT | |
@NOTECOUNT | int | INOUT | |
@MEDIALINKCOUNT | int | INOUT | |
@ATTACHMENTCOUNT | int | INOUT | |
@INTERACTIONCOUNT | int | INOUT |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_CONSTITUENTSUMMARYDOCSINTERACTIONSTILE
(
@ID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@DATALOADED bit = 0 output,
@ISGROUP bit = null output,
@NOTECOUNT int = null output,
@MEDIALINKCOUNT int = null output,
@ATTACHMENTCOUNT int = null output,
@INTERACTIONCOUNT int = null output
)
as
set nocount on;
declare @ISSYSADMIN bit = 0;
select @ISSYSADMIN = dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID);
-- Drop temp table if needed
if object_id('tempdb..#TEMP_CODETABLEENTRYPERMISSIONS') is not null
drop table #TEMP_CODETABLEENTRYPERMISSIONS;
create table #TEMP_CODETABLEENTRYPERMISSIONS
(
CODETABLEENTRYID uniqueidentifier
);
if @ISSYSADMIN = 0
begin
-- Collect all relevant code table entries
insert into #TEMP_CODETABLEENTRYPERMISSIONS
select ID from dbo.CONSTITUENTNOTETYPECODE
union all
select ID from dbo.CONSTITUENTMEDIALINKTYPECODE
union all
select ID from dbo.CONSTITUENTATTACHMENTTYPECODE;
-- Remove denied entries
delete #TEMP_CODETABLEENTRYPERMISSIONS
from #TEMP_CODETABLEENTRYPERMISSIONS T
inner join dbo.V_SECURITY_SYSTEMROLEASSIGNMENT_USER_CODETABLEENTRY PERMISSIONS
with (NOEXPAND, INDEX(IX_V_SECURITY_SYSTEMROLEASSIGNMENT_USER_CODETABLEENTRY_CODETABLEENTRYID_APPUSERID))
on T.CODETABLEENTRYID = PERMISSIONS.CODETABLEENTRYID
where
APPUSERID = @CURRENTAPPUSERID and
ISDENIED = 1;
end
select
@DATALOADED = 1,
@ISGROUP = CONSTITUENT.ISGROUP
from dbo.CONSTITUENT
where CONSTITUENT.ID = @ID
--Count up all the documentation on the given constituent
if @ISSYSADMIN = 1
begin
select @NOTECOUNT = count(ID)
from dbo.CONSTITUENTNOTE
where CONSTITUENTNOTE.CONSTITUENTID = @ID;
end
else
begin
select @NOTECOUNT = count(ID)
from dbo.CONSTITUENTNOTE
inner join #TEMP_CODETABLEENTRYPERMISSIONS PERMISSIONS on CONSTITUENTNOTE.CONSTITUENTNOTETYPECODEID = PERMISSIONS.CODETABLEENTRYID
where CONSTITUENTNOTE.CONSTITUENTID = @ID;
end
if @ISSYSADMIN = 1
begin
select @MEDIALINKCOUNT = count(ID)
from dbo.CONSTITUENTMEDIALINK
where CONSTITUENTMEDIALINK.CONSTITUENTID = @ID;
end
else
begin
select @MEDIALINKCOUNT = count(ID)
from dbo.CONSTITUENTMEDIALINK
inner join #TEMP_CODETABLEENTRYPERMISSIONS PERMISSIONS on CONSTITUENTMEDIALINK.CONSTITUENTMEDIALINKTYPECODEID = PERMISSIONS.CODETABLEENTRYID
where CONSTITUENTMEDIALINK.CONSTITUENTID = @ID;
end
if @ISSYSADMIN = 1
begin
select @ATTACHMENTCOUNT = count(ID)
from dbo.CONSTITUENTATTACHMENT
where CONSTITUENTATTACHMENT.CONSTITUENTID = @ID;
end
else
begin
select @ATTACHMENTCOUNT = count(ID)
from dbo.CONSTITUENTATTACHMENT
inner join #TEMP_CODETABLEENTRYPERMISSIONS PERMISSIONS on CONSTITUENTATTACHMENT.CONSTITUENTATTACHMENTTYPECODEID = PERMISSIONS.CODETABLEENTRYID
where CONSTITUENTATTACHMENT.CONSTITUENTID = @ID;
end
--If the constituent is a group, add on any documentation on its members
if @ISGROUP = 1
begin
if @ISSYSADMIN = 1
begin
select @NOTECOUNT = @NOTECOUNT + count(CONSTITUENTNOTE.ID)
from dbo.CONSTITUENTNOTE
inner join dbo.GROUPMEMBER on GROUPMEMBER.MEMBERID = CONSTITUENTNOTE.CONSTITUENTID
left join dbo.GROUPMEMBERDATERANGE on GROUPMEMBER.ID = GROUPMEMBERDATERANGE.GROUPMEMBERID
where
GROUPMEMBER.GROUPID = @ID and
(
(
GROUPMEMBERDATERANGE.DATEFROM is null and
(
GROUPMEMBERDATERANGE.DATETO is null or
GROUPMEMBERDATERANGE.DATETO >= CONSTITUENTNOTE.DATEENTERED
)
) or
(
GROUPMEMBERDATERANGE.DATETO is null and
(
GROUPMEMBERDATERANGE.DATEFROM is null or
GROUPMEMBERDATERANGE.DATEFROM <= CONSTITUENTNOTE.DATEENTERED
)
) or
(
GROUPMEMBERDATERANGE.DATEFROM <= CONSTITUENTNOTE.DATEENTERED and
GROUPMEMBERDATERANGE.DATETO >= CONSTITUENTNOTE.DATEENTERED
)
);
end
else
begin
select @NOTECOUNT = @NOTECOUNT + count(CONSTITUENTNOTE.ID)
from dbo.CONSTITUENTNOTE
inner join dbo.GROUPMEMBER on GROUPMEMBER.MEMBERID = CONSTITUENTNOTE.CONSTITUENTID
inner join #TEMP_CODETABLEENTRYPERMISSIONS PERMISSIONS on CONSTITUENTNOTE.CONSTITUENTNOTETYPECODEID = PERMISSIONS.CODETABLEENTRYID
left join dbo.GROUPMEMBERDATERANGE on GROUPMEMBER.ID = GROUPMEMBERDATERANGE.GROUPMEMBERID
where
GROUPMEMBER.GROUPID = @ID and
(
(
GROUPMEMBERDATERANGE.DATEFROM is null and
(
GROUPMEMBERDATERANGE.DATETO is null or
GROUPMEMBERDATERANGE.DATETO >= CONSTITUENTNOTE.DATEENTERED
)
) or
(
GROUPMEMBERDATERANGE.DATETO is null and
(
GROUPMEMBERDATERANGE.DATEFROM is null or
GROUPMEMBERDATERANGE.DATEFROM <= CONSTITUENTNOTE.DATEENTERED
)
) or
(
GROUPMEMBERDATERANGE.DATEFROM <= CONSTITUENTNOTE.DATEENTERED and
GROUPMEMBERDATERANGE.DATETO >= CONSTITUENTNOTE.DATEENTERED
)
);
end
if @ISSYSADMIN = 1
begin
select @MEDIALINKCOUNT = @MEDIALINKCOUNT + count(CONSTITUENTMEDIALINK.ID)
from dbo.CONSTITUENTMEDIALINK
inner join dbo.GROUPMEMBER on GROUPMEMBER.MEMBERID = CONSTITUENTMEDIALINK.CONSTITUENTID
left join dbo.GROUPMEMBERDATERANGE on GROUPMEMBER.ID = GROUPMEMBERDATERANGE.GROUPMEMBERID
where
GROUPMEMBER.GROUPID = @ID and
(
(
GROUPMEMBERDATERANGE.DATEFROM is null and
(
GROUPMEMBERDATERANGE.DATETO is null or
GROUPMEMBERDATERANGE.DATETO >= CONSTITUENTMEDIALINK.DATEENTERED
)
) or
(
GROUPMEMBERDATERANGE.DATETO is null and
(
GROUPMEMBERDATERANGE.DATEFROM is null or
GROUPMEMBERDATERANGE.DATEFROM <= CONSTITUENTMEDIALINK.DATEENTERED
)
) or
(
GROUPMEMBERDATERANGE.DATEFROM <= CONSTITUENTMEDIALINK.DATEENTERED and
GROUPMEMBERDATERANGE.DATETO >= CONSTITUENTMEDIALINK.DATEENTERED
)
);
end
else
begin
select @MEDIALINKCOUNT = @MEDIALINKCOUNT + count(CONSTITUENTMEDIALINK.ID)
from dbo.CONSTITUENTMEDIALINK
inner join dbo.GROUPMEMBER on GROUPMEMBER.MEMBERID = CONSTITUENTMEDIALINK.CONSTITUENTID
inner join #TEMP_CODETABLEENTRYPERMISSIONS PERMISSIONS on CONSTITUENTMEDIALINK.CONSTITUENTMEDIALINKTYPECODEID = PERMISSIONS.CODETABLEENTRYID
left join dbo.GROUPMEMBERDATERANGE on GROUPMEMBER.ID = GROUPMEMBERDATERANGE.GROUPMEMBERID
where
GROUPMEMBER.GROUPID = @ID and
(
(
GROUPMEMBERDATERANGE.DATEFROM is null and
(
GROUPMEMBERDATERANGE.DATETO is null or
GROUPMEMBERDATERANGE.DATETO >= CONSTITUENTMEDIALINK.DATEENTERED
)
) or
(
GROUPMEMBERDATERANGE.DATETO is null and
(
GROUPMEMBERDATERANGE.DATEFROM is null or
GROUPMEMBERDATERANGE.DATEFROM <= CONSTITUENTMEDIALINK.DATEENTERED
)
) or
(
GROUPMEMBERDATERANGE.DATEFROM <= CONSTITUENTMEDIALINK.DATEENTERED and
GROUPMEMBERDATERANGE.DATETO >= CONSTITUENTMEDIALINK.DATEENTERED
)
);
end
if @ISSYSADMIN = 1
begin
select @ATTACHMENTCOUNT = @ATTACHMENTCOUNT + count(CONSTITUENTATTACHMENT.ID)
from dbo.CONSTITUENTATTACHMENT
inner join dbo.GROUPMEMBER on GROUPMEMBER.MEMBERID = CONSTITUENTATTACHMENT.CONSTITUENTID
left join dbo.GROUPMEMBERDATERANGE on GROUPMEMBER.ID = GROUPMEMBERDATERANGE.GROUPMEMBERID
where
GROUPMEMBER.GROUPID = @ID and
(
(
GROUPMEMBERDATERANGE.DATEFROM is null and
(
GROUPMEMBERDATERANGE.DATETO is null or
GROUPMEMBERDATERANGE.DATETO >= CONSTITUENTATTACHMENT.DATEENTERED
)
) or
(
GROUPMEMBERDATERANGE.DATETO is null and
(
GROUPMEMBERDATERANGE.DATEFROM is null or
GROUPMEMBERDATERANGE.DATEFROM <= CONSTITUENTATTACHMENT.DATEENTERED
)
) or
(
GROUPMEMBERDATERANGE.DATEFROM <= CONSTITUENTATTACHMENT.DATEENTERED and
GROUPMEMBERDATERANGE.DATETO >= CONSTITUENTATTACHMENT.DATEENTERED
)
);
end
else
begin
select @ATTACHMENTCOUNT = @ATTACHMENTCOUNT + count(CONSTITUENTATTACHMENT.ID)
from dbo.CONSTITUENTATTACHMENT
inner join dbo.GROUPMEMBER on GROUPMEMBER.MEMBERID = CONSTITUENTATTACHMENT.CONSTITUENTID
inner join #TEMP_CODETABLEENTRYPERMISSIONS PERMISSIONS on CONSTITUENTATTACHMENT.CONSTITUENTATTACHMENTTYPECODEID = PERMISSIONS.CODETABLEENTRYID
left join dbo.GROUPMEMBERDATERANGE on GROUPMEMBER.ID = GROUPMEMBERDATERANGE.GROUPMEMBERID
where
GROUPMEMBER.GROUPID = @ID and
(
(
GROUPMEMBERDATERANGE.DATEFROM is null and
(
GROUPMEMBERDATERANGE.DATETO is null or
GROUPMEMBERDATERANGE.DATETO >= CONSTITUENTATTACHMENT.DATEENTERED
)
) or
(
GROUPMEMBERDATERANGE.DATETO is null and
(
GROUPMEMBERDATERANGE.DATEFROM is null or
GROUPMEMBERDATERANGE.DATEFROM <= CONSTITUENTATTACHMENT.DATEENTERED
)
) or
(
GROUPMEMBERDATERANGE.DATEFROM <= CONSTITUENTATTACHMENT.DATEENTERED and
GROUPMEMBERDATERANGE.DATETO >= CONSTITUENTATTACHMENT.DATEENTERED
)
);
end
--Use interaction datalist logic to count up the number of rows that will appear there.
exec dbo.USP_CONSTITUENTGROUP_INTERACTIONCOUNT
@ID,
@CURRENTAPPUSERID,
'DC27B924-D2EC-4865-B5A6-77B52FDAA957',
2,
@INTERACTIONCOUNT output;
end
else
begin
-- If the constituent is not a group, use the appropriate interaction datalist
-- logic to count up the number of rows that will appear there.
select @INTERACTIONCOUNT = count(ID)
from dbo.UFN_CONSTITUENT_INTERACTIONS(
@ID,
null,
null,
null,
@CURRENTAPPUSERID,
0,
null,
'CBBAC8AF-4F55-4A6E-B94C-628CF44D240D', --Security feature: Constituent Interactions List2
2, --Security Feature Type: Datalist
null
);
end
-- Drop temp table
if object_id('tempdb..#TEMP_CODETABLEENTRYPERMISSIONS') is not null
drop table #TEMP_CODETABLEENTRYPERMISSIONS;