USP_DATALIST_CONSTITUENTGROUP_RECENTINTERACTIONSUMMARY

List of four most recent completed interactions for a constituent group.

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.
@SECURITYFEATUREID uniqueidentifier IN Input parameter indicating the ID of the feature to use for site security checking.
@SECURITYFEATURETYPE tinyint IN Input parameter indicating the type of the feature to use for site security checking.

Definition

Copy


                CREATE procedure dbo.USP_DATALIST_CONSTITUENTGROUP_RECENTINTERACTIONSUMMARY
                (
                    @GROUPID uniqueidentifier,
                    @CURRENTAPPUSERID uniqueidentifier = null,
                    @SECURITYFEATUREID uniqueidentifier = null,
                    @SECURITYFEATURETYPE tinyint = null
                )
                as
                    set nocount on;

                    declare @CURRENTDATE date;
                    set @CURRENTDATE = getdate();

                    with INTERACTIONS_CTE as
                    (
                            select
                            I.ID,
                            I.CONSTITUENTID,
                            I.DATE,
                            I.INTERACTIONTYPECODEID,
                            I.PROSPECTPLANID,
                            I.FUNDINGREQUESTID
                        from dbo.INTERACTION I
                            inner join dbo.GROUPMEMBER GM on I.CONSTITUENTID = GM.MEMBERID
                            left join dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
                        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))
                            and I.COMPLETED = 1

                        union all

                        select
                            I.ID,
                            I.CONSTITUENTID,
                            I.DATE,
                            I.INTERACTIONTYPECODEID,
                            I.PROSPECTPLANID,
                            I.FUNDINGREQUESTID
                        from dbo.INTERACTION I
                        where I.CONSTITUENTID = @GROUPID
                            and I.COMPLETED = 1
                    )
                    select top(4)
                        I.ID,
                        NF.NAME,
                        I.DATE,
                        dbo.UFN_INTERACTIONTYPECODE_GETDESCRIPTION(I.INTERACTIONTYPECODEID) as 'TYPETRANSLATION'
                    from INTERACTIONS_CTE I
                    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(I.CONSTITUENTID) NF
                    where exists (
                            select 1
                            from 
                            (
                                -- Not using UFN_SITEID_MAPFROM_INTERACTIONID so we can avoid hitting the interaction table again.  Any 

                                -- updates to this site check should also be made to UFN_SITEID_MAPFROM_INTERACTIONID

                                select coalesce(PROSPECTPLANSITE.SITEID, FUNDINGPLAN.SITEID, INTERACTIONSITE.SITEID) as SITEID
                                from (select I.ID, I.PROSPECTPLANID, I.FUNDINGREQUESTID) as INTERACTION
                                left outer join dbo.PROSPECTPLANSITE on INTERACTION.PROSPECTPLANID = PROSPECTPLANSITE.PROSPECTPLANID
                                -- Checking if INTERACTION.PROSPECTPLANID is null is the same as calling UFN_INTERACTION_ISPLANSTEP but is much faster

                                left outer join dbo.INTERACTIONSITE on INTERACTIONSITE.INTERACTIONID = INTERACTION.ID and INTERACTION.PROSPECTPLANID is null
                                left outer join dbo.FUNDINGREQUEST on FUNDINGREQUEST.ID = INTERACTION.FUNDINGREQUESTID
                                left outer join dbo.FUNDINGPLAN on FUNDINGPLAN.ID = FUNDINGREQUEST.FUNDINGPLANID
                            ) as INTERACTIONSITE
                            where (dbo.UFN_APPUSER_ISSYSADMIN(@CURRENTAPPUSERID) = 1 or exists (select 1 from dbo.UFN_SITESFORUSERONFEATURE(@CURRENTAPPUSERID,@SECURITYFEATUREID,@SECURITYFEATURETYPE) where SITEID=[INTERACTIONSITE].[SITEID] or (SITEID is null and [INTERACTIONSITE].[SITEID] is null)))
                        )
                    order by I.DATE desc