USP_CONSTITUENT_LINK_CLIENTUSER

Link a constituent record to BBNC login ClientUsers table

Parameters

Parameter Parameter Type Mode Description
@CONSTITUENTID uniqueidentifier IN
@CLIENTUSERID int IN

Definition

Copy


CREATE procedure dbo.USP_CONSTITUENT_LINK_CLIENTUSER
(
@CONSTITUENTID uniqueidentifier,
@CLIENTUSERID int
)
as
begin

  set nocount on;
  DECLARE @SequenceID int, @ID int;    

  --if the constituent is already linked then don't do anything

  if exists(
      SELECT cu.ID
          FROM dbo.ClientUsers cu  
          INNER JOIN dbo.BackOfficeSystemUsers bosu 
            ON cu.ID = bosu.ClientUsersID AND bosu.[current] = 1 AND cu.Deleted = 0  
          INNER JOIN dbo.BackOfficeSystemPeople bosp 
              ON bosp.ID = bosu.BackofficePeopleID AND bosp.BackOfficeSystemID = 0  
          INNER JOIN dbo.CONSTITUENT C
              ON bosp.BackofficeRecordID = C.SEQUENCEID     
          WHERE 
              C.ID = @CONSTITUENTID 
  )
  or
  exists(        
      SELECT cu.ID
          FROM dbo.ClientUsers cu  
          INNER JOIN dbo.BackOfficeSystemUsers bosu 
            ON cu.ID = bosu.ClientUsersID AND bosu.[current] = 1 AND cu.Deleted = 0  
          INNER JOIN dbo.BackOfficeSystemPeople bosp 
              ON bosp.ID = bosu.BackofficePeopleID AND bosp.BackOfficeSystemID = 0  
          INNER JOIN dbo.CONSTITUENT C
              ON bosp.BackofficeRecordID = C.SEQUENCEID     
          WHERE 
              cu.ID = @CLIENTUSERID 
  )

    Return;

  SELECT @SequenceID = C.SEQUENCEID
  FROM dbo.CONSTITUENT C
  WHERE C.ID = @CONSTITUENTID;


  --populate BackOfficeSystemPeople table

  BEGIN TRY
    BEGIN TRAN

    --search existing record

    SELECT @ID = ID 
    FROM dbo.BackOfficeSystemPeople 
    WHERE BackOfficeSystemID = 0 
      and BackofficeRecordID = @SequenceID

    IF @ID is NULL  --no link before, so create the link

    BEGIN 
      INSERT INTO dbo.BackOfficeSystemPeople 
      (BackOfficeSystemID, 
      BackofficeRecordID
      )
      Values
      (0, --CRM

      @SequenceID
      );

      SELECT @ID = SCOPE_IDENTITY();  --BackOfficeSystemPeopleID

    END

    INSERT INTO dbo.BackOfficeSystemUsers         
    (
    BackofficePeopleID,
    ClientUsersID
    )
    VALUES
    (
    @ID,
    @CLIENTUSERID
    );

    COMMIT TRAN;

  END TRY
  BEGIN CATCH
    IF (XACT_STATE() <>0)
          Rollback Tran;
  END CATCH;

  Return;  
end