USP_DATAFORMTEMPLATE_EDITLOAD_MEMBERS

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@DATALOADED bit INOUT
@TSLONG bigint INOUT
@MEMBERS xml INOUT
@NUMBEROFMEMBERSALLOWED int INOUT
@MEMBERSHIPPROGRAMID uniqueidentifier INOUT
@PROGRAMALLOWSMULTIPLEMEMBERSHIPS bit INOUT
@NUMBEROFCHILDREN smallint INOUT
@NUMBEROFCHILDRENALLOWED smallint INOUT

Definition

Copy

CREATE procedure dbo.[USP_DATAFORMTEMPLATE_EDITLOAD_MEMBERS]
(
  @ID uniqueidentifier,
  @DATALOADED bit = 0 output,
  @TSLONG bigint = 0 output,
  @MEMBERS xml = null output,
  @NUMBEROFMEMBERSALLOWED int = null output,
  @MEMBERSHIPPROGRAMID uniqueidentifier = null output,
  @PROGRAMALLOWSMULTIPLEMEMBERSHIPS bit = null output,
  @NUMBEROFCHILDREN smallint = null output,
  @NUMBEROFCHILDRENALLOWED smallint = null output
)
as
  set nocount on;

  -- be sure to set these, in case the select returns no rows
  set @DATALOADED = 0
  set @TSLONG = 0

  set @NUMBEROFMEMBERSALLOWED = dbo.[UFN_MEMBER_NUMBEROFMEMBERSALLOWED](@ID);

  select
    @DATALOADED = 1,
    @TSLONG = MEMBERSHIP.TSLONG,
    @MEMBERSHIPPROGRAMID = [MEMBERSHIPPROGRAM].[ID],
    @PROGRAMALLOWSMULTIPLEMEMBERSHIPS = [MEMBERSHIPPROGRAM].[ALLOWMULTIPLEMEMBERSHIPS],
    @NUMBEROFCHILDRENALLOWED = [MEMBERSHIPLEVEL].CHILDRENALLOWED,
    @NUMBEROFCHILDREN = [MEMBERSHIP].NUMBEROFCHILDREN
  from dbo.[MEMBERSHIP]
  inner join dbo.[MEMBERSHIPPROGRAM] on [MEMBERSHIPPROGRAM].[ID] = [MEMBERSHIP].[MEMBERSHIPPROGRAMID]
  inner join dbo.[MEMBERSHIPLEVEL] on [MEMBERSHIPLEVEL].[ID] = [MEMBERSHIP].[MEMBERSHIPLEVELID]
  where [MEMBERSHIP].[ID] = @ID;

  declare @MAXMEMBERTSLONG bigint = 0;
  select @MAXMEMBERTSLONG = max(TSLONG) from dbo.MEMBER where MEMBERSHIPID = @ID;

  -- Set @TSLONG to the greatest TSLONG value between the membership and members records for concurrency testing
  if @MAXMEMBERTSLONG > @TSLONG
    set @TSLONG = @MAXMEMBERTSLONG;

  declare @PRIMARYMEMBERCONSTITUENTID uniqueidentifier = (select top 1 CONSTITUENTID from dbo.MEMBER where MEMBERSHIPID = @ID and ISPRIMARY = 1 and ISDROPPED = 0);

  select @MEMBERS = (
    select
      MEMBER.ID as MEMBERID,
      CONSTITUENT.ID as CONSTITUENTID,
      RELATIONSHIPINFO.[DESCRIPTION],
      CONSTITUENT.LOOKUPID,
      MEMBER.ISPRIMARY
    from dbo.MEMBER
    inner join dbo.CONSTITUENT on MEMBER.CONSTITUENTID = CONSTITUENT.ID
    outer apply
    (
      select top 1 RELATIONSHIPTYPECODE.[DESCRIPTION]
      from dbo.RELATIONSHIP
        inner join dbo.RELATIONSHIPTYPECODE on RELATIONSHIP.RELATIONSHIPTYPECODEID = RELATIONSHIPTYPECODE.ID
      where RELATIONSHIP.RECIPROCALCONSTITUENTID = @PRIMARYMEMBERCONSTITUENTID
        and RELATIONSHIP.RELATIONSHIPCONSTITUENTID = CONSTITUENT.ID
      order by RELATIONSHIPTYPECODE.SEQUENCE
    ) RELATIONSHIPINFO
    where MEMBER.ISDROPPED = 0
      and MEMBER.MEMBERSHIPID = @ID
    order by [ISPRIMARY] desc, [DESCRIPTION] desc, [NAME] asc
    for xml raw('ITEM'), type, elements, root('MEMBERS'), binary base64);

  return 0;