USP_ADDRESSBOOKFAF_BULKADD_CONTACTBYGROUP

Add group members and group general donors if applicable to registrant address book.

Parameters

Parameter Parameter Type Mode Description
@GROUPID uniqueidentifier IN
@CHANGEAGENTID uniqueidentifier IN
@REGISTRANTCONSTITUENTID uniqueidentifier IN
@ROLECODE tinyint IN

Definition

Copy


CREATE procedure dbo.USP_ADDRESSBOOKFAF_BULKADD_CONTACTBYGROUP
(
  @GROUPID uniqueidentifier,
  @CHANGEAGENTID uniqueidentifier = null,
  @REGISTRANTCONSTITUENTID uniqueidentifier,
  @ROLECODE tinyint  -- 0: company leader, 1: team leader, 2: team member, 3: head of household, 4: household member

)
as

declare @CURRENTDATE datetime,
    @CLIENTUSERSID int,
    @FIRSTNAME nvarchar(255),
        @LASTNAME nvarchar(255),
        @MIDDLENAME nvarchar(100),
        @TITLECODEID uniqueidentifier,
        @EMAILADDRESS dbo.UDT_EMAILADDRESS,
        @HOMEPHONE nvarchar(25),
        @ADDRESSBLOCK nvarchar(300),
        @CITY nvarchar(100),
        @STATEID uniqueidentifier,
        @COUNTRYID uniqueidentifier,
        @POSTCODE nvarchar(24),
    @EVENTID uniqueidentifier,
    @PARENTGROUPID uniqueidentifier

set @CURRENTDATE = getdate()

if @CHANGEAGENTID is null  
        exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

select @EVENTID=EVENTID from dbo.TEAMEXTENSION where TEAMFUNDRAISINGTEAMID = @GROUPID
select @PARENTGROUPID=PARENTTEAMID from dbo.TEAMFUNDRAISINGTEAM where ID = @GROUPID

select    
    @CLIENTUSERSID = dbo.fnGetUserIDFromLinkedRecordID(C.SEQUENCEID, 0),
        @FIRSTNAME = C.FIRSTNAME,
        @LASTNAME = C.KEYNAME,
        @MIDDLENAME = C.MIDDLENAME,
        @TITLECODEID = C.TITLECODEID,
        @EMAILADDRESS = isnull(E.EMAILADDRESS, ''),
        @HOMEPHONE = isnull(P.NUMBER, ''),
        @ADDRESSBLOCK = isnull(A.ADDRESSBLOCK, ''),
        @CITY = isnull(A.CITY, ''),
        @STATEID = A.STATEID,
        @COUNTRYID = A.COUNTRYID,
        @POSTCODE = isnull(A.POSTCODE, '')
from dbo.CONSTITUENT C(nolock) 
left outer join dbo.EMAILADDRESS E on E.CONSTITUENTID = C.ID and E.ISPRIMARY = 1
left outer join dbo.PHONE P on P.CONSTITUENTID = C.ID and P.ISPRIMARY = 1
left outer join dbo.ADDRESS A on A.CONSTITUENTID = C.ID and A.ISPRIMARY = 1
where C.ID = @REGISTRANTCONSTITUENTID;

begin try

  /* add members to registrant address book */
    insert into dbo.ADDRESSBOOKFAF (ID, CLIENTUSERSID,CONSTITUENTID,
            FIRSTNAME,LASTNAME, MIDDLENAME, TITLECODEID, EMAILADDRESS,HOMEPHONE,ADDRESSBLOCK,CITY,STATEID,COUNTRYID,POSTCODE,
            ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED )
  select 
      NEWID(),
      @CLIENTUSERSID as USERID,
      C.ID,
      C.FIRSTNAME,
      C.KEYNAME,
      C.MIDDLENAME,
      C.TITLECODEID,
      isnull(EA.EMAILADDRESS, '') as EMAILADDRESS,
      isnull(P.NUMBER, '') as NUMBER,
      isnull(A.ADDRESSBLOCK, '') as ADDRESSBLOCK,
      isnull(A.CITY, '') as CITY,
      A.STATEID,
      A.COUNTRYID,
      isnull(A.POSTCODE, '') as POSTCODE,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
  FROM dbo.CONSTITUENT C
  join dbo.UFN_ADDRESSBOOKFAF_GETEXPECTEDGROUPMEMBER(@GROUPID, @REGISTRANTCONSTITUENTID, @CLIENTUSERSID,  @ROLECODE) M on C.ID = M.ID 
  left join dbo.EMAILADDRESS EA on C.ID = EA.CONSTITUENTID and EA.ISPRIMARY = 1
  left join dbo.PHONE P on C.ID = P.CONSTITUENTID and P.ISPRIMARY = 1
  left join dbo.[ADDRESS] A on C.ID = A.CONSTITUENTID and A.ISPRIMARY = 1
  where C.ID not in (select CONSTITUENTID from dbo.ADDRESSBOOKFAF where CLIENTUSERSID in (select CLIENTUSERID from dbo.UFN_CLIENTUSERS_GETIDLISTBYCONSTITUENTID(@REGISTRANTCONSTITUENTID)) and CONSTITUENTID is not null)

  /* add registrant information to members' address book*/  
  insert into dbo.ADDRESSBOOKFAF (ID, CLIENTUSERSID,CONSTITUENTID,
            FIRSTNAME,LASTNAME, MIDDLENAME, TITLECODEID, EMAILADDRESS,HOMEPHONE,ADDRESSBLOCK,CITY,STATEID,COUNTRYID,POSTCODE,
            ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED )

  select 
      NEWID(),
      M.USERID,
    @REGISTRANTCONSTITUENTID,
      @FIRSTNAME,
      @LASTNAME,
      @MIDDLENAME,
      @TITLECODEID,
      @EMAILADDRESS,
      @HOMEPHONE,
      @ADDRESSBLOCK,
      @CITY,
      @STATEID,
      @COUNTRYID,
      @POSTCODE,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
  from dbo.CONSTITUENT C 
  join dbo.UFN_ADDRESSBOOKFAF_GETEXPECTEDGROUPMEMBER(@GROUPID, @REGISTRANTCONSTITUENTID, @CLIENTUSERSID,  @ROLECODE) M 
    on C.ID = M.ID and M.USERID is not null /* M.USERID = null is an exception if entry did not create correctly.  Instead fail miserable, skip that record*/
  join ( select * from dbo.UFN_REGISTRANT_GETFAFROLE(@EVENTID, @GROUPID) MR 
          union
         select * from dbo.UFN_REGISTRANT_GETFAFROLE(@EVENTID, @PARENTGROUPID) PMR where PMR.RoleCode in (0,1)
    ) MR
    on M.ID = MR.CONSTITUENTID
  where ((@ROLECODE <> 0 and MR.RoleCode <> 0) OR (@ROLECODE = 0 and MR.RoleCode = 0) )
  and (select COUNT(*) from dbo.ADDRESSBOOKFAF ADFAF where M.USERID = ADFAF.CLIENTUSERSID and ADFAF.CONSTITUENTID = @REGISTRANTCONSTITUENTID) = 0 

  /* add registrant information to company leader's address book if fundraising role is individual and fundraising group type is company */ 
  insert into dbo.ADDRESSBOOKFAF (ID, CLIENTUSERSID,CONSTITUENTID,
            FIRSTNAME,LASTNAME, MIDDLENAME, TITLECODEID, EMAILADDRESS,HOMEPHONE,ADDRESSBLOCK,CITY,STATEID,COUNTRYID,POSTCODE,
            ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED )
  select
    NEWID(),
    dbo.fnGetUserIDFromLinkedRecordID(C.SEQUENCEID, 0) as USERID,
    @REGISTRANTCONSTITUENTID,
      @FIRSTNAME,
      @LASTNAME,
      @MIDDLENAME,
      @TITLECODEID,
      @EMAILADDRESS,
      @HOMEPHONE,
      @ADDRESSBLOCK,
      @CITY,
      @STATEID,
      @COUNTRYID,
      @POSTCODE,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
  FROM dbo.TEAMFUNDRAISINGTEAM TFT
  join dbo.TEAMEXTENSION TX on TX.TEAMFUNDRAISINGTEAMID = TFT.ID
  join dbo.TEAMFUNDRAISINGTEAMCAPTAIN TFTC on TFTC.TEAMFUNDRAISINGTEAMID = TX.TEAMFUNDRAISINGTEAMID
  join dbo.CONSTITUENT C on C.ID = TFTC.CONSTITUENTID
  where TFT.ID = @GROUPID and TX.TYPECODE = 2
  and C.ID <> @REGISTRANTCONSTITUENTID and @ROLECODE = 5
  and (select COUNT(1) FROM dbo.ADDRESSBOOKFAF ADFAF where dbo.fnGetUserIDFromLinkedRecordID(C.SEQUENCEID, 0) = ADFAF.CLIENTUSERSID and ADFAF.CONSTITUENTID = @REGISTRANTCONSTITUENTID) = 0 

  /* add donor to registrant address book if applicable */
  insert into dbo.ADDRESSBOOKFAF (ID, CLIENTUSERSID,CONSTITUENTID,
            FIRSTNAME,LASTNAME, MIDDLENAME, TITLECODEID, EMAILADDRESS,HOMEPHONE,ADDRESSBLOCK,CITY,STATEID,COUNTRYID,POSTCODE,
            ADDEDBYID,CHANGEDBYID,DATEADDED,DATECHANGED )
  select 
      NEWID(),
      @CLIENTUSERSID as USERID,
      C.ID,
      C.FIRSTNAME,
      C.KEYNAME,
      C.MIDDLENAME,
      C.TITLECODEID,
      isnull(EA.EMAILADDRESS, '') as EMAILADDRESS,
      isnull(P.NUMBER, '') as NUMBER,
      isnull(A.ADDRESSBLOCK, '') as ADDRESSBLOCK,
      isnull(A.CITY, '') as CITY,
      A.STATEID,
      A.COUNTRYID,
      isnull(A.POSTCODE, '') as POSTCODE,
      @CHANGEAGENTID,
      @CHANGEAGENTID,
      @CURRENTDATE,
      @CURRENTDATE
  from dbo.CONSTITUENT C
  join dbo.UFN_ADDRESSBOOKFAF_GETGENERALGROUPDONORS(@GROUPID, @REGISTRANTCONSTITUENTID, @CLIENTUSERSID,  @ROLECODE) DL on DL.ID = C.ID
  left join dbo.EMAILADDRESS EA on C.ID = EA.CONSTITUENTID and EA.ISPRIMARY = 1
  left join dbo.PHONE P on C.ID = P.CONSTITUENTID and P.ISPRIMARY = 1
  left join dbo.[ADDRESS] A on C.ID = A.CONSTITUENTID and A.ISPRIMARY = 1

end try
begin catch
  exec dbo.USP_RAISE_ERROR
    return 1;
end catch

return 0;