USP_CREATE_FAF_LOGINUSERID_FROMPRIMARYEMAIL

Definition

Copy


CREATE procedure dbo.USP_CREATE_FAF_LOGINUSERID_FROMPRIMARYEMAIL
As

set nocount on

-- check if FAF is installed

if not exists(select ID from dbo.INSTALLEDPRODUCTLIST where ID ='a919502c-a2f6-4a56-9183-28e3f667916e')
begin
   return 1
end

DECLARE @ACTIVECLIENTUSERS TABLE
  (
       ID             int IDENTITY(1,1),
       ClIENTUSERID   int,
       CLIENTSID      int
  )

 Insert into @ACTIVECLIENTUSERS(ClIENTUSERID, CLIENTSID)
    Select ID, CLIENTSID from dbo.ClientUsers
        where Deleted = 0
        order by CreateDate desc


 -- insert user data

 declare @count  int
 set @count = 1

 declare @numUsers   int
 select @numUsers = MAX(ID) from @ACTIVECLIENTUSERS

 declare @curPrimaryEmail   varchar(200),
         @curClientUserID   int,
         @curClientsID      int,
         @newClientUserID   int

 -- start loop transaction for clientusers

 while @count <= @numUsers
 begin
     Select @curPrimaryEmail = ea.EMAILADDRESS,
            @curClientUserID = acu.ClIENTUSERID,
            @curClientsID = acu.CLIENTSID
          From @ACTIVECLIENTUSERS acu 
            inner join dbo.BackOfficeSystemUsers bosu (nolock)  
              on acu.ClIENTUSERID = bosu.ClientUsersID AND bosu.[current] = 1   
            inner join dbo.BackOfficeSystemPeople bosp (nolock)    
              on bosp.ID = bosu.BackofficePeopleID AND bosp.BackOfficeSystemID = 0    
            inner join dbo.CONSTITUENT C (nolock)    
              on bosp.BackofficeRecordID = C.SEQUENCEID
            inner join dbo.EMAILADDRESS ea (nolock)   
              on ea.CONSTITUENTID = c.ID and ea.ISPRIMARY = 1
            Where acu.ID = @count

     -- create login user

     if @curPrimaryEmail is not null and len(@curPrimaryEmail) <= 50 and
             not exists(Select ID from dbo.ClientUsers (nolock)   
                     where ClientsID = @curClientsID and UserName = @curPrimaryEmail)
     begin try
         insert into dbo.ClientUsers      
            ([Password], UserName, EMail, Active,
             LastName, FirstName, MiddleInitial, InternalUser,
             ClientsID, RegistrationNumber, ReminderPhrase, IsSupervisor,
             IsProvisional, TimeZoneID)
         Select 
             [Password], @curPrimaryEmail, EMail, Active,
             LastName, FirstName, MiddleInitial, InternalUser,
             ClientsID, RegistrationNumber, ReminderPhrase, IsSupervisor,
             IsProvisional, TimeZoneID 
         from dbo.ClientUsers (nolock)   
         where ClientUsers.ID = @curClientUserID 

         select @newClientUserID = ID from dbo.ClientUsers (nolock) 
           where ClientsID = @curClientsID and UserName = @curPrimaryEmail

         -- add backoffice id

         insert into dbo.BackOfficeSystemUsers
            (BackofficePeopleID, ClientUsersID, [Current])
         select BackofficePeopleID, @newClientUserID, [Current]
             from dbo.BackOfficeSystemUsers
         where ClientUsersID = @curClientUserID 


         -- copy user role

         insert into dbo.UserRoles(ClientUsersID, ClientRolesID, ManuallyAdded)
             select @newClientUserID, ClientRolesID, ManuallyAdded
               from dbo.UserRoles (nolock)   
               where ClientUsersID = @curClientUserID 

     end try

     -- track error

     begin catch
       exec dbo.USP_RAISE_ERROR;    
       return 1
     end catch

     -- add loop count

     set @count = @count + 1

 end -- end of loop