USP_SIMPLEDATALIST_STEPPARTICIPANTCANDIDATE

List of candidates likely to participate in a step.

Parameters

Parameter Parameter Type Mode Description
@PROSPECTPLANID uniqueidentifier IN Prospect plan ID
@CONSTITUENTID uniqueidentifier IN

Definition

Copy


                CREATE procedure dbo.USP_SIMPLEDATALIST_STEPPARTICIPANTCANDIDATE
                (
                    @PROSPECTPLANID uniqueidentifier,
                    @CONSTITUENTID uniqueidentifier = null
                )
                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());

                    if @CONSTITUENTID is null
                        select @CONSTITUENTID = PROSPECTID from dbo.PROSPECTPLAN where ID = @PROSPECTPLANID;

                    -- participants for the plan

                    insert into @participants (CONSTITUENTID, DESCRIPTION, KEYNAME, FIRSTNAME)
                    select
                    C.ID,
                    case 
                        when P.PLANPARTICIPANTROLECODEID is not null then NF.NAME + ' - ' + (select DESCRIPTION from dbo.PLANPARTICIPANTROLECODE where ID = P.PLANPARTICIPANTROLECODEID)
                        else NF.NAME + ' - Plan participant'
                    end,
                    C.KEYNAME,
                    C.FIRSTNAME
                    from
                    dbo.PLANPARTICIPANT P
                    inner join
                    dbo.CONSTITUENT C on P.CONSTITUENTID = C.ID
                                    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF
                    where
                    P.PROSPECTPLANID = @PROSPECTPLANID and
                    -- Verify the owner of the plan isn't shown in case they were added as a 

                    -- as a plan participant.

                    C.ID <> @CONSTITUENTID
          option(recompile)

                    -- 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
                                    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(C.ID) NF
                    left join 
                    dbo.GROUPMEMBERDATERANGE GMDR on GM.ID = GMDR.GROUPMEMBERID
                    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)) 
                    and
                    not exists (select 1 from @participants where CONSTITUENTID = C.ID)

                    -- 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