USP_DATALIST_GROUPMEMBER

Displays group members and their roles

Parameters

Parameter Parameter Type Mode Description
@GROUPID uniqueidentifier IN Input parameter indicating the context ID for the data list.
@INCLUDEPREVIOUSMEMBERS bit IN Include previous members

Definition

Copy


CREATE procedure dbo.USP_DATALIST_GROUPMEMBER(
    @GROUPID uniqueidentifier,
    @INCLUDEPREVIOUSMEMBERS bit = 0
)
as
    set nocount on;

    declare @CURRENTDATEEARLIESTTIME date = getdate();

    declare @PRIMARYMEMBERID uniqueidentifier;

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

    with CTE_CURRENTGROUPMEMBER as(
        select
            GROUPMEMBER.ID as GROUPMEMBERID,
            GROUPMEMBER.MEMBERID as MEMBERID,
            GROUPMEMBER.ISPRIMARY as ISPRIMARY,
            GROUPMEMBERDATERANGE.DATEFROM as STARTDATE,
            GROUPMEMBERDATERANGE.DATETO as ENDDATE,
            GROUPMEMBERDATERANGE.COMMENTS as COMMENTS
        from dbo.GROUPMEMBER
            left join dbo.GROUPMEMBERDATERANGE on GROUPMEMBERDATERANGE.GROUPMEMBERID = GROUPMEMBER.ID
        where GROUPMEMBER.GROUPID = @GROUPID 
            and(
                @INCLUDEPREVIOUSMEMBERS = 1
                or(
                    (GROUPMEMBERDATERANGE.DATEFROM is null 
                        and (GROUPMEMBERDATERANGE.DATETO is null or GROUPMEMBERDATERANGE.DATETO > @CURRENTDATEEARLIESTTIME)
                    ) 
                    or(GROUPMEMBERDATERANGE.DATETO is null 
                        and (GROUPMEMBERDATERANGE.DATEFROM is null or GROUPMEMBERDATERANGE.DATEFROM <= @CURRENTDATEEARLIESTTIME)
                    ) 
                    or(GROUPMEMBERDATERANGE.DATEFROM <= @CURRENTDATEEARLIESTTIME 
                        and GROUPMEMBERDATERANGE.DATETO > @CURRENTDATEEARLIESTTIME)
                    )
            )
    )
    select
        CURRENTGROUPMEMBER.GROUPMEMBERID as GROUPMEMBERID,
        null,
        CURRENTGROUPMEMBER.MEMBERID as CONSTITUENTID,
        case
            when CURRENTGROUPMEMBER.ISPRIMARY = 1 
                then 'CATALOG:Blackbaud.AppFx.ConstituentGroups.Catalog.dll,Blackbaud.AppFx.ConstituentGroups.Catalog.primary_16-c.png'
            else 'RES:lv_spacer'
        end as ISPRIMARYIMAGE,
        CURRENTGROUPMEMBER.ISPRIMARY as ISPRIMARY,
        (
            rtrim(DISPLAYNAME.NAME + ' ' +
                coalesce(
                    replace(
                        stuff(
                            (select '' + STATUS 
                                from(
                                    select ',(Deceased)' STATUS
                                    from dbo.DECEASEDCONSTITUENT
                                    where DECEASEDCONSTITUENT.ID = CURRENTGROUPMEMBER.MEMBERID
                                    union all
                                    select ',(Inactive)' STATUS
                                    from dbo.CONSTITUENT
                                    where CONSTITUENT.ID = CURRENTGROUPMEMBER.MEMBERID
                                        and CONSTITUENT.ISINACTIVE=1
                                ) as SUBQ for xml path('')
                            )
                        ,1,1,'')
                    , '),(', ', ')
                ,'')
            )
        ) as NAME,
        CURRENTGROUPMEMBER.STARTDATE as STARTDATE,
        CURRENTGROUPMEMBER.ENDDATE as ENDDATE,
        case
            when CURRENTGROUPMEMBER.ISPRIMARY = 1 
                then ''
            else (
                select dbo.UDA_BUILDLIST(distinct RELATIONSHIPTYPECODE.DESCRIPTION)
                from dbo.RELATIONSHIP
                    inner join dbo.RELATIONSHIPTYPECODE on RELATIONSHIP.RELATIONSHIPTYPECODEID = RELATIONSHIPTYPECODE.ID
                where CURRENTGROUPMEMBER.MEMBERID = RELATIONSHIP.RELATIONSHIPCONSTITUENTID 
                    and    RELATIONSHIP.RECIPROCALCONSTITUENTID = @PRIMARYMEMBERID
            )
        end as RELATIONSHIPWITHPRIMARY,
        null,
        row_number() over (order by CURRENTGROUPMEMBER.ISPRIMARY desc, DISPLAYNAME.NAME) as SEQUENCE,
        0,
        CURRENTGROUPMEMBER.GROUPMEMBERID as CONTEXTMEMBERID,
        CURRENTGROUPMEMBER.COMMENTS as COMMENTS
    from CTE_CURRENTGROUPMEMBER as CURRENTGROUPMEMBER
        outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(CURRENTGROUPMEMBER.MEMBERID) DISPLAYNAME
    order by SEQUENCE