USP_DATAFORMTEMPLATE_VIEW_CONSTITUENTSUMMARYGROUPMEMBERSTILE

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@DATALOADED bit INOUT
@ISHOUSEHOLD bit INOUT
@PRIMARYMEMBERNAME nvarchar(255) INOUT
@PRIMARYMEMBERID uniqueidentifier INOUT
@PRIMARYMEMBERDECEASED bit INOUT
@PRIMARYMEMBERINACTIVE bit INOUT
@CURRENTMEMBERCOUNT int INOUT
@FORMERMEMBERCOUNT int INOUT

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_CONSTITUENTSUMMARYGROUPMEMBERSTILE
(
    @ID uniqueidentifier,
    @DATALOADED bit = 0 output,
    @ISHOUSEHOLD bit = null output,
    @PRIMARYMEMBERNAME nvarchar(255) = null output,
    @PRIMARYMEMBERID uniqueidentifier = null output,
    @PRIMARYMEMBERDECEASED bit = null output,
    @PRIMARYMEMBERINACTIVE bit = null output,
    @CURRENTMEMBERCOUNT int = null output,
    @FORMERMEMBERCOUNT int = null output
)
as
    set nocount on;

    select 
        @DATALOADED = 1,
        @ISHOUSEHOLD = case when GROUPDATA.GROUPTYPECODE = 0 then 1 else 0 end
    from dbo.CONSTITUENT
    inner join dbo.GROUPDATA on GROUPDATA.ID = CONSTITUENT.ID
    where CONSTITUENT.ID = @ID;

    declare @CURRENTDATEEARLIESTTIME date;
    set @CURRENTDATEEARLIESTTIME = getdate();

    select
        @PRIMARYMEMBERID = GROUPMEMBER.MEMBERID,
        @PRIMARYMEMBERNAME = NF.NAME,
        @PRIMARYMEMBERDECEASED = case when DECEASEDCONSTITUENT.ID is null then 0 else 1 end,
        @PRIMARYMEMBERINACTIVE = CONSTITUENT.ISINACTIVE
    from dbo.GROUPMEMBER
    inner join dbo.CONSTITUENT on GROUPMEMBER.MEMBERID = CONSTITUENT.ID
    left join dbo.DECEASEDCONSTITUENT on DECEASEDCONSTITUENT.ID = CONSTITUENT.ID
    outer apply dbo.UFN_CONSTITUENT_DISPLAYNAME(GROUPMEMBER.MEMBERID) NF
    where GROUPMEMBER.GROUPID = @ID and GROUPMEMBER.ISPRIMARY = 1;

    select @CURRENTMEMBERCOUNT = coalesce((
        select count(GM.ID)
        from dbo.GROUPMEMBER as GM
        left join dbo.GROUPMEMBERDATERANGE as GMDR on GM.ID = GMDR.GROUPMEMBERID
        where
            (
                (GMDR.DATEFROM is null and (GMDR.DATETO is null or GMDR.DATETO > @CURRENTDATEEARLIESTTIME))
                or (GMDR.DATETO is null and (GMDR.DATEFROM is null or GMDR.DATEFROM <= @CURRENTDATEEARLIESTTIME)) 
                or (GMDR.DATEFROM <= @CURRENTDATEEARLIESTTIME and GMDR.DATETO > @CURRENTDATEEARLIESTTIME)
            )
            and GM.GROUPID = @ID
    ), 0);

    select @FORMERMEMBERCOUNT = coalesce((
        select count(GM.ID)
        from dbo.GROUPMEMBER as 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 = @ID
    ), 0);

    return 0;