USP_DATALIST_CONSTITUENTRELATIONSHIPMAP

Returns a list of relationships for a given constituent to be displayed on a relationship map.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@ONLYCURRENT bit IN Only display current relationships
@RECIPROCALTYPECODEID uniqueidentifier IN Relationship type
@ONLYCONTACTS bit IN Only display contacts
@SHOWINDIVIDUALS bit IN Individuals
@SHOWORGANIZATIONS bit IN Organizations
@SHOWGROUPS bit IN Groups
@SHOWHOUSEHOLDS bit IN Households
@ROOTID uniqueidentifier IN Root ID

Definition

Copy


CREATE procedure dbo.USP_DATALIST_CONSTITUENTRELATIONSHIPMAP(
    @CONSTITUENTID uniqueidentifier,
    @ONLYCURRENT bit = 0,
    @RECIPROCALTYPECODEID uniqueidentifier = null,
    @ONLYCONTACTS bit = 0,
    @SHOWINDIVIDUALS bit = 1,
    @SHOWORGANIZATIONS bit = 1,
    @SHOWGROUPS bit = 1,
    @SHOWHOUSEHOLDS bit = 1,
    @ROOTID uniqueidentifier = null)
as
set nocount on;

declare @CURRENTDATE datetime;
if @ONLYCURRENT = 1
    set @CURRENTDATE = dbo.UFN_DATE_GETEARLIESTTIME(getdate());

select    
    CONSTITUENT.ID,
    (
        rtrim(NF.NAME + ' ' +
            coalesce(
                replace(
                    stuff(
                        (select '' + STATUS from
                        (select ',(Deceased)' STATUS
                            from dbo.DECEASEDCONSTITUENT DC
                            where DC.ID = CONSTITUENT.ID
                        union all
                        select ',(Inactive)' STATUS
                            from dbo.CONSTITUENT C
                            where C.ID = CONSTITUENT.ID
                            and C.ISINACTIVE=1
                    ) as SUBQ for xml path(''))
                    ,1,1,'')
                , '),(', ', ')
            ,'')
        )
    ) as NAME,
    ADDRESS.DESCRIPTION,
    case
        when CONSTITUENT.ISORGANIZATION = 1 then 'catalog:Blackbaud.AppFx.Constituent.Catalog.dll,Blackbaud.AppFx.Constituent.Catalog.organization.png'
        when CONSTITUENT.ISGROUP = 1 then 
            case
                when GROUPDATA.GROUPTYPECODE = 0 then 'catalog:Blackbaud.AppFx.ConstituentGroups.Catalog.dll,Blackbaud.AppFx.ConstituentGroups.Catalog.households_32.png'
            else 'catalog:Blackbaud.AppFx.ConstituentGroups.Catalog.dll,Blackbaud.AppFx.ConstituentGroups.Catalog.groups_32.png'
            end
        else 'catalog:Blackbaud.AppFx.Constituent.Catalog.dll,Blackbaud.AppFx.Constituent.Catalog.individual.png'
    end IMAGEKEY,
    null STRENGTH,
    cast(1 as bit) ISROOT,
    CONSTITUENT.KEYNAME
    from dbo.CONSTITUENT
    left join dbo.GROUPDATA on CONSTITUENT.ID = GROUPDATA.ID
    left join dbo.ADDRESS on CONSTITUENT.ID = ADDRESS.CONSTITUENTID and ADDRESS.ISPRIMARY = 1
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
    where CONSTITUENT.ID = @CONSTITUENTID
union all
select
    RELATIONSHIP.RECIPROCALCONSTITUENTID ID,
    (
        rtrim(NF.NAME + ' ' +
            coalesce(
                replace(
                    stuff(
                        (select '' + STATUS from
                        (select ',(Deceased)' STATUS
                            from dbo.DECEASEDCONSTITUENT DC
                            where DC.ID = CONSTITUENT.ID
                        union all
                        select ',(Inactive)' STATUS
                            from dbo.CONSTITUENT C
                            where C.ID = CONSTITUENT.ID
                            and C.ISINACTIVE=1
                    ) as SUBQ for xml path(''))
                    ,1,1,'')
                , '),(', ', ')
            ,'')
        )
    ) as NAME,
    ADDRESS.DESCRIPTION,
    case
        when CONSTITUENT.ISORGANIZATION = 1 then 'catalog:Blackbaud.AppFx.Constituent.Catalog.dll,Blackbaud.AppFx.Constituent.Catalog.organization.png'
        when CONSTITUENT.ISGROUP = 1 then 
            case
                when GROUPDATA.GROUPTYPECODE = 0 then 'catalog:Blackbaud.AppFx.ConstituentGroups.Catalog.dll,Blackbaud.AppFx.ConstituentGroups.Catalog.households_32.png'
            else 'catalog:Blackbaud.AppFx.ConstituentGroups.Catalog.dll,Blackbaud.AppFx.ConstituentGroups.Catalog.groups_32.png'
            end
        else 'catalog:Blackbaud.AppFx.Constituent.Catalog.dll,Blackbaud.AppFx.Constituent.Catalog.individual.png'
    end IMAGEKEY,
    case
        when CONSTITUENT.ISORGANIZATION = 1 then 'Hot'
        when CONSTITUENT.ISGROUP = 1 then 
            case
                when GROUPDATA.GROUPTYPECODE = 0 then 'Warm'
                else 'Cold'
            end
        else 'Cold'
    end STRENGTH,
    cast(0 as bit) ISROOT,
    CONSTITUENT.KEYNAME
    from 
    dbo.RELATIONSHIP
    inner join dbo.CONSTITUENT on RELATIONSHIP.RECIPROCALCONSTITUENTID = CONSTITUENT.ID
    left join dbo.GROUPDATA on CONSTITUENT.ID = GROUPDATA.ID
    left join dbo.ADDRESS on CONSTITUENT.ID = ADDRESS.CONSTITUENTID and ADDRESS.ISPRIMARY = 1
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CONSTITUENT.ID) NF
where 
    RELATIONSHIP.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID
        and (@CURRENTDATE is null
            or RELATIONSHIP.STARTDATE is null
            or RELATIONSHIP.STARTDATE <= @CURRENTDATE)
        and (@CURRENTDATE is null
            or RELATIONSHIP.ENDDATE is null
            or RELATIONSHIP.ENDDATE >= @CURRENTDATE)
        and (@RECIPROCALTYPECODEID is null
            or RELATIONSHIP.RECIPROCALTYPECODEID = @RECIPROCALTYPECODEID)
        and 
            (@ONLYCONTACTS = 0
            or RELATIONSHIP.ISCONTACT = @ONLYCONTACTS)
        and (@SHOWINDIVIDUALS = 1 or CONSTITUENT.ISORGANIZATION = 1 or CONSTITUENT.ISGROUP = 1)
        and (@SHOWORGANIZATIONS = 1 or CONSTITUENT.ISORGANIZATION = 0)
        and (@SHOWGROUPS = 1 or CONSTITUENT.ISGROUP = 0 or GROUPDATA.GROUPTYPECODE = 0)
        and (@SHOWHOUSEHOLDS = 1 or CONSTITUENT.ISGROUP = 0 or GROUPDATA.GROUPTYPECODE = 1)
        and (@ROOTID is null or RELATIONSHIP.RECIPROCALCONSTITUENTID in (
                    select
                        ROOTRELATIONSHIP.RECIPROCALCONSTITUENTID
                    from
                        RELATIONSHIP as ROOTRELATIONSHIP
                    where
                        ROOTRELATIONSHIP.RELATIONSHIPCONSTITUENTID = @ROOTID
                )
            )
order by
    STRENGTH, 
    CONSTITUENT.KEYNAME, 
    NAME;