USP_DATALIST_GROUPMEMBERWITHROLEPREVIOUS

Displays previous group members and their roles

Parameters

Parameter Parameter Type Mode Description
@GROUPID uniqueidentifier IN Input parameter indicating the context ID for the data list.

Definition

Copy


CREATE procedure dbo.USP_DATALIST_GROUPMEMBERWITHROLEPREVIOUS
(
    @GROUPID uniqueidentifier 
)
as
    set nocount on;
    declare @CURRENTDATEEARLIESTTIME date;
    set @CURRENTDATEEARLIESTTIME = getdate();

    declare @PRIMARYMEMBERID uniqueidentifier;
    select  @PRIMARYMEMBERID = MEMBERID 
        from dbo.GROUPMEMBER 
        where GROUPID = @GROUPID
        and ISPRIMARY = 1;


    with PREVIOUSMEMBERS_CTE as
    (
        select
            GM.ID as GROUPMEMBERID,
            GM.MEMBERID as MEMBERID,
            GM.ISPRIMARY as ISPRIMARY,
            GMDR.ID as GROUPMEMBERDATERANGEID,
            GMDR.DATEFROM as STARTDATE,
            GMDR.DATETO as ENDDATE,
            GMDR.COMMENTS as COMMENTS
        from dbo.GROUPMEMBER GM
        left join dbo.GROUPMEMBERDATERANGE as GMDR on GM.ID = GMDR.GROUPMEMBERID
        where (GMDR.DATETO is not null and GMDR.DATETO <= @CURRENTDATEEARLIESTTIME)
        and GM.ID not in (select GROUPMEMBERID from dbo.GROUPMEMBERDATERANGE where DATETO is null)
        and GM.GROUPID = @GROUPID
    )

    select 
        GM.GROUPMEMBERID as GROUPMEMBERID,
        GM.GROUPMEMBERDATERANGEID as GROUPMEMBERDATERANGEID,
        null as GROUPMEMBERROLEID,
        C.ID as CONSTITUENTID,
        (
            rtrim(C.NAME + ' ' +
                coalesce(
                    replace(
                        stuff(
                            (select '' + STATUS from
                                (select ',(Deceased)' STATUS
                                 from dbo.DECEASEDCONSTITUENT DC
                                 where DC.ID = C.ID
                                 union all
                                 select ',(Inactive)' STATUS
                                 from dbo.CONSTITUENT
                                 where CONSTITUENT.ID = C.ID
                                 and CONSTITUENT.ISINACTIVE=1
                                ) as SUBQ for xml path(''))
                        ,1,1,'')
                    , '),(', ', ')
                ,'')
            )
        ) as NAME,
        GM.STARTDATE as STARTDATE,
        GM.ENDDATE as ENDDATE,
        case when GM.ISPRIMARY = 1 
            then ''
            else (    select 
                        dbo.UDA_BUILDLIST(distinct RTC.DESCRIPTION)
                    from dbo.RELATIONSHIP R
                    join dbo.RELATIONSHIPTYPECODE RTC
                    on R.RELATIONSHIPTYPECODEID = RTC.ID
                    where C.ID = R.RELATIONSHIPCONSTITUENTID
                    and R.RECIPROCALCONSTITUENTID = @PRIMARYMEMBERID
                    )
            end as RELATIONSHIPWITHPRIMARY,
        GM.COMMENTS as COMMENTS,
        null as PARENT,
        row_number() over (order by GM.STARTDATE, GM.ENDDATE) as SEQUENCE,
        0 as ISROLE,
        GM.GROUPMEMBERID as CONTEXTMEMBERID
    from PREVIOUSMEMBERS_CTE as GM
    inner join dbo.CONSTITUENT as C on GM.MEMBERID = C.ID

    union all

    select
        null as GROUPMEMBERID,
        null as GROUPMEMBERDATERANGEID,
        GMR.ID as GROUPMEMBERROLEID,
        C.ID as CONSTITUENTID,
        GMRC.DESCRIPTION as NAME,
        GMR.STARTDATE as STARTDATE,
        GMR.ENDDATE as ENDDATE,
        null as RELATIONSHIPWITHPRIMARY,
        null as COMMENTS,
        GMR.GROUPMEMBERID as PARENT,
        row_number() over (order by GMRC.DESCRIPTION) as SEQUENCE,
        1 as ISROLE,
        GMR.GROUPMEMBERID as CONTEXTMEMBERID
    from dbo.GROUPMEMBERROLE as GMR
    inner join PREVIOUSMEMBERS_CTE as GM on GMR.GROUPMEMBERID = GM.GROUPMEMBERID
    inner join dbo.CONSTITUENT as C on GM.MEMBERID = C.ID
    inner join dbo.GROUPMEMBERROLECODE as GMRC on GMR.GROUPMEMBERROLECODEID = GMRC.ID