UFN_GROUPINTERACTIONLIST2_QUERY

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@GROUPID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@SITEFILTERMODE tinyint IN
@SITESSELECTED xml IN
@SECURITYFEATUREID uniqueidentifier IN
@SECURITYFEATURETYPE tinyint IN

Definition

Copy


CREATE function dbo.UFN_GROUPINTERACTIONLIST2_QUERY (
    @GROUPID uniqueidentifier,
    @CURRENTAPPUSERID uniqueidentifier,
    @SITEFILTERMODE tinyint = 0,
    @SITESSELECTED xml = null,
    @SECURITYFEATUREID uniqueidentifier = 'E6317D90-8D21-4647-B9BD-4D391A747809',
    @SECURITYFEATURETYPE tinyint = 10
    )
returns @INTERACTIONS table (
    ID uniqueidentifier,
    DATE datetime,
    GROUPORPRIMARYSORTVALUE nvarchar(200),
    STATUS nvarchar(200),
    OWNERID uniqueidentifier,
    FUNDRAISER nvarchar(200),
    OBJECTIVE nvarchar(200),
    INTERACTIONTYPE nvarchar(200),
    ISSTEP bit,
    HASDOCUMENTATION bit,
    HASPERMISSIONS bit,
    GROUPORPRIMARYSORT nvarchar(200),
    CATEGORY nvarchar(200),
    SUBCATEGORY nvarchar(200),
    VIEWFORMID uniqueidentifier,
    SITES nvarchar(200),
    STARTTIME nvarchar(4),
    ENDTIME nvarchar(4),
    TIMEZONE nvarchar(200),
    ISSTEWARDSHIPSTEP bit,
    ISINDIVIDUALSTEP bit,
    EXPECTEDDATE datetime,
    ACTUALDATE datetime,
    EXPECTEDSTARTTIME nvarchar(4),
    ACTUALSTARTTIME nvarchar(4),
    EXPECTEDENDTIME nvarchar(4),
    ACTUALENDTIME nvarchar(4),
    COMMENT nvarchar(max),
    HASPARTICIPANTS bit,
    LOCATION nvarchar(300)
    )
as
begin
    declare @QUERYVIEWID uniqueidentifier = '2d55a6fb-adeb-4b9d-a0dc-ddac51b39b8e';

    declare @ISSYSADMIN bit = 0;
    select @ISSYSADMIN = ISSYSADMIN from dbo.APPUSER where ID = @CURRENTAPPUSERID;

    declare @USERGRANTEDALLCONSTITUENTS bit = 0;
    set @USERGRANTEDALLCONSTITUENTS = dbo.UFN_SECURITY_APPUSER_GRANTED_QUERYVIEW_IN_NONRACROLE(@CURRENTAPPUSERID, @QUERYVIEWID);

    declare @ASOFDATE datetime = getdate();

    declare @CONSTITUENTGROUPINTERACTION2_GROUPORMEMBERCONSTITUENT table (
        ID uniqueidentifier,
        DATEFROM datetime,
        DATETO datetime,
        ISGROUP bit,
        ISPRIMARY bit
        );

    insert into @CONSTITUENTGROUPINTERACTION2_GROUPORMEMBERCONSTITUENT
    select CONSTITUENT.ID as ID,
        GMDR.DATEFROM,
        GMDR.DATETO,
        0 as ISGROUP,
        GROUPMEMBER.ISPRIMARY
    from dbo.GROUPMEMBER
    inner join dbo.CONSTITUENT
        on CONSTITUENT.ID = GROUPMEMBER.MEMBERID
    left join dbo.GROUPMEMBERDATERANGE GMDR
        on GMDR.GROUPMEMBERID = GROUPMEMBER.ID
    where GROUPMEMBER.GROUPID = @GROUPID

    union all

    select @GROUPID,
        null as DATEFROM,
        null as DATETO,
        1 as ISGROUP,
        0 as ISPRIMARY;

    declare @INTERACTIONFORGROUPORMEMBER table (
        ID uniqueidentifier,
        LINKEDTHROUGHCONSTITUENTID uniqueidentifier
        );

    insert into @INTERACTIONFORGROUPORMEMBER (
        ID,
        LINKEDTHROUGHCONSTITUENTID
        )
    select V_CONSTITUENT_INTERACTION.ID,
        GROUPORMEMBERCONSTITUENT.ID as LINKEDTHROUGHCONSTITUENTID
    from dbo.V_CONSTITUENT_INTERACTION
    inner join @CONSTITUENTGROUPINTERACTION2_GROUPORMEMBERCONSTITUENT GROUPORMEMBERCONSTITUENT
        on GROUPORMEMBERCONSTITUENT.ID = V_CONSTITUENT_INTERACTION.CONSTITUENTID

    union

    select V_CONSTITUENT_INTERACTION.ID,
        GROUPORMEMBERCONSTITUENT.ID as LINKEDTHROUGHCONSTITUENTID
    from dbo.V_CONSTITUENT_INTERACTION
    inner join @CONSTITUENTGROUPINTERACTION2_GROUPORMEMBERCONSTITUENT GROUPORMEMBERCONSTITUENT
        on GROUPORMEMBERCONSTITUENT.ID = V_CONSTITUENT_INTERACTION.CONTACTPERSONID

    union

    select V_CONSTITUENT_INTERACTION.ID,
        GROUPORMEMBERCONSTITUENT.ID as LINKEDTHROUGHCONSTITUENTID
    from dbo.V_CONSTITUENT_INTERACTION
    inner join dbo.INTERACTIONPARTICIPANT
        on INTERACTIONPARTICIPANT.INTERACTIONID = V_CONSTITUENT_INTERACTION.ID
    inner join @CONSTITUENTGROUPINTERACTION2_GROUPORMEMBERCONSTITUENT GROUPORMEMBERCONSTITUENT
        on GROUPORMEMBERCONSTITUENT.ID = INTERACTIONPARTICIPANT.CONSTITUENTID;

    with INTERACTION_CTE
    as (
        select INTERACTION.ID,
            INTERACTION.DATE,
            INTERACTION.STATUS,
            INTERACTION.FUNDRAISERID as OWNERID,
            INTERACTION.OBJECTIVE,
            INTERACTION.INTERACTIONTYPECODEID,
            case 
                when INTERACTION.INTERACTIONBASETYPE = 2
                    then case 
                            when exists (
                                    select 1
                                    from dbo.STEWARDSHIPNOTE
                                    where STEWARDSHIPNOTE.STEPID = INTERACTION.ID
                                    )
                                or exists (
                                    select 1
                                    from dbo.STEWARDSHIPATTACHMENT
                                    where STEWARDSHIPATTACHMENT.STEPID = INTERACTION.ID
                                    )
                                or exists (
                                    select 1
                                    from dbo.STEWARDSHIPMEDIALINK
                                    where STEWARDSHIPMEDIALINK.STEPID = INTERACTION.ID
                                    )
                                then 1
                            else 0
                            end
                else case 
                    when exists (
                            select 1
                            from dbo.INTERACTIONNOTE
                            where INTERACTIONNOTE.INTERACTIONID = INTERACTION.ID
                            )
                        or exists (
                            select 1
                            from dbo.INTERACTIONATTACHMENT
                            where INTERACTIONATTACHMENT.INTERACTIONID = INTERACTION.ID
                            )
                        or exists (
                            select 1
                            from dbo.INTERACTIONMEDIALINK
                            where INTERACTIONMEDIALINK.INTERACTIONID = INTERACTION.ID
                            )
                        then 1
                    else 0
                    end
            end as HASDOCUMENTATION,
            case 
                when INTERACTION.INTERACTIONBASETYPE = 1
                    then 1
                else 0
            end as ISMOVE,
            INTERACTION.EVENTID,
            coalesce(INTERACTIONCATEGORY.NAME, STEWARDSHIPSTEPCATEGORYCODE.DESCRIPTION) as CATEGORY,
            INTERACTIONSUBCATEGORY.NAME as SUBCATEGORY,
            INTERACTION.STARTTIME,
            INTERACTION.ENDTIME,
            INTERACTION.TIMEZONEENTRYID,
            case 
                when INTERACTION.INTERACTIONBASETYPE = 2
                    then 1
                else 0
            end as ISSTEWARDSHIPSTEP,
            case 
                when CONSTITUENT.ISGROUP = 1
                    then '0'
                else case 
                    when CONSTITUENT.ISPRIMARY = 1
                        then '1'
                    else '2' + CONSTITUENTDETAIL.KEYNAME + ' ' + CONSTITUENTDETAIL.FIRSTNAME + ' ' + cast(CONSTITUENT.ID as nvarchar(36))
                    end
            end as GROUPORPRIMARYSORT,
            CONSTITUENTDETAIL.NAME as GROUPORPRIMARYSORTVALUE,
            case 
                when @ISSYSADMIN = 1
                    or @USERGRANTEDALLCONSTITUENTS = 1
                    or CONSTITSECURITY.ID is not null
                    then 1
                else 0
            end HASPERMISSIONS,
            INTERACTION.INTERACTIONBASETYPE,
            INTERACTION.PROSPECTPLANID,
            INTERACTION.STEWARDSHIPPLANID,
            case 
                when INTERACTIONCONSTITUENT.ISGROUP = 1
                    then 0
                when INTERACTIONCONSTITUENT.ISORGANIZATION = 1
                    then 0
                else 1
            end as ISINDIVIDUALSTEP,
            INTERACTION.EXPECTEDDATE,
            INTERACTION.ACTUALDATE,
            INTERACTION.EXPECTEDSTARTTIME,
            INTERACTION.ACTUALSTARTTIME,
            INTERACTION.EXPECTEDENDTIME,
            INTERACTION.ACTUALENDTIME,
            INTERACTION.COMMENT,
            case
                when exists(select 1 from dbo.INTERACTIONPARTICIPANT where INTERACTIONPARTICIPANT.INTERACTIONID = INTERACTION.ID) then 1
                else 0
            end as HASPARTICIPANTS,
            INTERACTION.LOCATION
        from @INTERACTIONFORGROUPORMEMBER GROUPINTERACTION
        inner join dbo.V_CONSTITUENT_INTERACTION INTERACTION
            on GROUPINTERACTION.ID = INTERACTION.ID
        left join dbo.INTERACTIONSUBCATEGORY
            on INTERACTIONSUBCATEGORY.ID = INTERACTION.INTERACTIONSUBCATEGORYID
        left join dbo.INTERACTIONCATEGORY
            on INTERACTIONCATEGORY.ID = INTERACTIONSUBCATEGORY.INTERACTIONCATEGORYID
        left join dbo.STEWARDSHIPSTEPCATEGORYCODE
            on STEWARDSHIPSTEPCATEGORYCODE.ID = INTERACTION.STEWARDSHIPSTEPCATEGORYCODEID
        left join dbo.INTERACTIONPARTICIPANT
            on INTERACTIONPARTICIPANT.INTERACTIONID = INTERACTION.ID
        inner join @CONSTITUENTGROUPINTERACTION2_GROUPORMEMBERCONSTITUENT CONSTITUENT
            on GROUPINTERACTION.LINKEDTHROUGHCONSTITUENTID = CONSTITUENT.ID
        inner join dbo.CONSTITUENT as CONSTITUENTDETAIL
            on CONSTITUENT.ID = CONSTITUENTDETAIL.ID
        left join dbo.CONSTITUENT INTERACTIONCONSTITUENT
            on INTERACTIONCONSTITUENT.ID = INTERACTION.CONSTITUENTID
        left join dbo.UFN_SECURITY_APPUSER_GRANTED_CONSTITIDS_FORQUERYVIEW(@CURRENTAPPUSERID, @QUERYVIEWID) CONSTITSECURITY
            on CONSTITSECURITY.ID = CONSTITUENT.ID
        where (
            exists (
                select top 1 INTERACTIONSITE.SITEID
                from dbo.UFN_SITEID_MAPFROM_INTERACTIONID(INTERACTION.ID) INTERACTIONSITE
                where (
                        @ISSYSADMIN = 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
                                    )
                            )
                        )
                )
            and (
                (@ISSYSADMIN = 1 and @SITEFILTERMODE <> 3)
                or @SITEFILTERMODE = 0
                or (
                    INTERACTION.INTERACTIONBASETYPE = 0
                    and INTERACTION.ID in (
                        select INTERACTIONSITE.INTERACTIONID
                        from dbo.UFN_SITE_BUILDDATALISTSITEFILTER(@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
                        inner join dbo.INTERACTIONSITE
                            on INTERACTIONSITE.SITEID = SITEFILTER.SITEID
                        )
                    )
                or (
                    INTERACTION.INTERACTIONBASETYPE = 1
                    and INTERACTION.PROSPECTPLANID in (
                        select PROSPECTPLANSITE.PROSPECTPLANID
                        from dbo.UFN_SITE_BUILDDATALISTSITEFILTER(@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
                        inner join dbo.PROSPECTPLANSITE
                            on PROSPECTPLANSITE.SITEID = SITEFILTER.SITEID
                        )
                    )
                or (
                    INTERACTION.INTERACTIONBASETYPE = 2
                    and INTERACTION.STEWARDSHIPPLANID in (
                        select STEWARDSHIPPLANSITE.STEWARDSHIPPLANID
                        from dbo.UFN_SITE_BUILDDATALISTSITEFILTER(@CURRENTAPPUSERID, @SITEFILTERMODE, @SITESSELECTED) SITEFILTER
   inner join dbo.STEWARDSHIPPLANSITE
                            on STEWARDSHIPPLANSITE.SITEID = SITEFILTER.SITEID
                        )
                    )
                )
            )
        )
    insert into @INTERACTIONS
    select I.ID,
        I.DATE,
        I.GROUPORPRIMARYSORTVALUE,
        I.STATUS,
        OWNER.ID OWNERID,
        OWNER.NAME FUNDRAISER,
        I.OBJECTIVE,
        INTERACTIONTYPECODE.DESCRIPTION INTERACTIONTYPE,
        I.ISMOVE ISSTEP,
        I.HASDOCUMENTATION,
        I.HASPERMISSIONS,
        min(I.GROUPORPRIMARYSORT) GROUPORPRIMARYSORT,
        I.CATEGORY,
        I.SUBCATEGORY,
        case 
            when I.INTERACTIONBASETYPE = 1
                then '6ce4b0e8-cfcf-4f57-94c3-00eea94fb499'
            when I.INTERACTIONBASETYPE = 2
                then '0a9d7c4b-018d-48b5-aa14-589cf6c0d97b'
            else 'b525985b-be02-4f02-a9b8-c110411cf936'
            end as VIEWFORMID,
        case 
            when I.INTERACTIONBASETYPE = 1
                then dbo.UFN_PROSPECTPLAN_GETSITELIST(I.PROSPECTPLANID)
            when I.INTERACTIONBASETYPE = 2
                then dbo.UFN_STEWARDSHIPPLAN_GETSITELIST(I.STEWARDSHIPPLANID)
            else dbo.UFN_CONSTITUENTINTERACTION_GETSITELIST(I.ID)
            end as SITES,
        I.STARTTIME,
        I.ENDTIME,
        TIMEZONEENTRY.DISPLAYNAME TIMEZONE,
        I.ISSTEWARDSHIPSTEP,
        I.ISINDIVIDUALSTEP,
        I.EXPECTEDDATE,
        I.ACTUALDATE,
        I.EXPECTEDSTARTTIME,
        I.ACTUALSTARTTIME,
        I.EXPECTEDENDTIME,
        I.ACTUALENDTIME,
        I.COMMENT,
        I.HASPARTICIPANTS,
        I.LOCATION
    from INTERACTION_CTE I
    inner join dbo.INTERACTIONTYPECODE
        on I.INTERACTIONTYPECODEID = INTERACTIONTYPECODE.ID
    left outer join dbo.CONSTITUENT OWNER
        on OWNER.ID = I.OWNERID
    left outer join dbo.TIMEZONEENTRY
        on I.TIMEZONEENTRYID = TIMEZONEENTRY.ID
    group by I.ID,
        I.DATE,
        I.GROUPORPRIMARYSORTVALUE,
        I.STATUS,
        OWNER.ID,
        OWNER.NAME,
        I.OBJECTIVE,
        I.INTERACTIONTYPECODEID,
        I.ISMOVE,
        I.HASDOCUMENTATION,
        I.HASPERMISSIONS,
        I.CATEGORY,
        I.SUBCATEGORY,
        I.INTERACTIONBASETYPE,
        I.PROSPECTPLANID,
        I.STEWARDSHIPPLANID,
        INTERACTIONTYPECODE.DESCRIPTION,
        I.STARTTIME,
        I.ENDTIME,
        TIMEZONEENTRY.DISPLAYNAME,
        I.ISSTEWARDSHIPSTEP,
        I.ISINDIVIDUALSTEP,
        I.EXPECTEDDATE,
        I.ACTUALDATE,
        I.EXPECTEDSTARTTIME,
        I.ACTUALSTARTTIME,
        I.EXPECTEDENDTIME,
        I.ACTUALENDTIME,
        I.COMMENT,
        I.HASPARTICIPANTS,
        I.LOCATION
    order by GROUPORPRIMARYSORT,
        I.DATE desc;

    return;
end