USP_SIMPLEDATALIST_PLANPARTICIPANTCANDIDATE

List of candidates likely to participate in a prospect plan.

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN Constituent

Definition

Copy


                CREATE procedure dbo.USP_SIMPLEDATALIST_PLANPARTICIPANTCANDIDATE
                (
                  @CONSTITUENTID uniqueidentifier
                )
                as
                    set nocount on;

                    -- Create a table variable to hold the participants.  This is used rather than 

                    -- a union to prevent the same constituent from being returned multiple times.

                    declare @participants table
                    (
                        CONSTITUENTID uniqueidentifier,
                        DESCRIPTION nvarchar(100),
                        KEYNAME nvarchar(100),
                        FIRSTNAME nvarchar(100)
                    );

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

                    -- the record if it's a household, or the household an individual belongs to    

                    declare @HOUSEHOLDID uniqueidentifier; 
                    if dbo.UFN_CONSTITUENT_ISHOUSEHOLD(@CONSTITUENTID) = 1
                        set @HOUSEHOLDID = @CONSTITUENTID;
                    else
                        select
                            @HOUSEHOLDID = GM.GROUPID
                        from
                            dbo.GROUPMEMBER GM
                        left outer join
                            dbo.GROUPMEMBERDATERANGE GMDR on GMDR.GROUPMEMBERID = GM.ID
                        left outer join
                            dbo.GROUPDATA GD on GD.ID = GM.GROUPID
                        where
                            GM.MEMBERID = @CONSTITUENTID
                        and
                            GD.GROUPTYPECODE = 0
                        and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATE))
                            or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATE)) 
                            or (GMDR.DATEFROM <= @CURRENTDATE and GMDR.DATETO > @CURRENTDATE));

                    -- group members

                    insert into @participants (CONSTITUENTID, DESCRIPTION, KEYNAME, FIRSTNAME)
                    select
                        C.ID,
                        case 
                          when GM.ISPRIMARY = 1 then NF.NAME + ' - Member (Primary contact)'
                          else NF.NAME + ' - Member'
                        end,
                        C.KEYNAME,
                        C.FIRSTNAME
                    from
                        dbo.GROUPMEMBER GM
                    inner join
                        dbo.CONSTITUENT C on GM.MEMBERID = C.ID
                    left join 
                        dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
                    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF
                    where
                        GM.GROUPID = @HOUSEHOLDID
                    and
                        GM.MEMBERID <> @CONSTITUENTID
                    and ((GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATE))
                        or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATE)) 
                        or (GMDR.DATEFROM <= @CURRENTDATE and GMDR.DATETO > @CURRENTDATE))

                    -- relationships for all

                    insert into @participants (CONSTITUENTID, DESCRIPTION, KEYNAME, FIRSTNAME)
                    select
                        C.ID,
                        (NF.NAME + ' - ' + (select DESCRIPTION from dbo.RELATIONSHIPTYPECODE where ID=R.RECIPROCALTYPECODEID)),
                        C.KEYNAME,
                        C.FIRSTNAME
                    from
                        dbo.RELATIONSHIP R
                    inner join
                        dbo.CONSTITUENT C on R.RECIPROCALCONSTITUENTID = C.ID
                    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF
                    where
                        R.RELATIONSHIPCONSTITUENTID = @CONSTITUENTID 
                    and
                        not exists (select 1 from @participants where CONSTITUENTID = C.ID)

                    select
                        CONSTITUENTID as 'VALUE',
                        DESCRIPTION as 'LABEL'
                    from
                        @participants
                    order by
                        KEYNAME,
                        FIRSTNAME