sp_UserImportProcess

Parameters

Parameter Parameter Type Mode Description
@IMPORTID int IN
@CLIENTSID int IN

Definition

Copy



        CREATE Procedure [dbo].[sp_UserImportProcess]
        (
            @IMPORTID int,
            @CLIENTSID int
        )
        AS
        set nocount on

        DECLARE @ErrorVar int
        DECLARE @ImpStatus tinyInt
        DECLARE @RecsProcessed int
        DECLARE @StatusText nvarchar(4000)
        DECLARE @tempTable table
        (
        UIMLID int,
        UserName nvarchar(50),
        BackofficeID integer,
        BackofficeSystemID integer,
        CurrentBOSP integer,
        ClientUsersID integer,
        BackOfficePeopleID integer
        )


        set @ImpStatus=2
        UPDATE UserImport set [Status]=3, [ImportStart]=getutcdate(), [StatusTxt]='Import currently processing'  where ID=@IMPORTID

        --Build the temp table
        INSERT INTO @tempTable ([UIMLID],[Username],[BackofficeSystemID],[BackofficeID])
            SELECT ID, UserName, BackofficeSystemID,BackofficeID FROM [dbo].[UserImportMasterList]
            where [Status] =0 and [UserImportID]=@IMPORTID

        --Get any existing backOfficeSystemPeople Ids
        UPDATE @tempTable set CurrentBOSP=BOSP.ID
        from BackOfficeSystemPeople BOSP inner join @temptable t on BOSP.BackOfficeRecordID=t.BackofficeID
            AND BOSP.BackOfficeSystemID=t.BackofficeSystemID

        begin Transaction

        --Insert into ClientUsers
        INSERT into ClientUsers(UserName, Password, Active, LastName, FirstName, EMail, InternalUser, ClientsID, IsSupervisor, IsProvisional)
        select t.username, ml.password, 1, ml.LastName, ml.FirstName, ml.Email, 0, @CLIENTSID, 0, 0
        from @tempTable t join dbo.UserImportMasterList ml on t.UIMLID=ml.ID 

        SET @ErrorVar = @@ERROR
        IF @ErrorVar <> 0 BEGIN
            set @ImpStatus=13
            set @StatusText = 'Unable to add users: ' + convert(nvarchar(200), @ErrorVar)
            goto Finis
        END

        --Get the ClientUsersID
        UPDATE @tempTable set ClientUsersID=cl.ID
            from @tempTable t inner join ClientUsers cl on cl.userName=t.UserName and ClientsID=@CLIENTSID

        --Insert into BackOfficeSystemPeople
        INSERT into BackOfficeSystemPeople(BackOfficeSystemID, BackOfficeRecordID) 
            select BackofficeSystemID, BackOfficeID from @tempTable where CurrentBOSP is null 

        SET @ErrorVar = @@ERROR
        IF @ErrorVar <> 0 BEGIN
            set @ImpStatus=13
            set @StatusText = 'Unable to add BackOfficeSystemPeople: ' + convert(nvarchar(200), @ErrorVar)
            goto Finis
        END

        --Get those IDs
        UPDATE @tempTable set BackOfficePeopleID=bosp.ID
            from @tempTable t inner join dbo.BackOfficeSystemPeople bosp on t.BackofficeID=bosp.BackofficeRecordID and  t.BackofficeSystemID=bosp.BackOfficeSystemID

        --Insert the BackOfficeSystemUsers
        INSERT into dbo.BackOfficeSystemUsers (BackofficePeopleID,ClientUsersID,[Current])
            select BackOfficePeopleID, ClientUsersID, 1 from  @tempTable

        SET @ErrorVar = @@ERROR
        IF @ErrorVar <> 0 BEGIN
            set @ImpStatus=13
            set @StatusText = 'Unable to add BackOfficeSystemUsers: ' + convert(nvarchar(200), @ErrorVar)
            goto Finis
        END

        Finis:
        if @ImpStatus=2 
            begin
                set @StatusText = 'Import successful'
                select @RecsProcessed=count(*) from @tempTable where not ClientUsersID is null and not BackOfficePeopleID is null
                if (@RecsProcessed=0
                    begin
                        set @ImpStatus=13
                        set @StatusText = 'Import file contains no valid records.'
                    end
                UPDATE UserImport set [Status]=@ImpStatus, [ImportEnd]=getutcdate(), [RecordsProcessed]=@RecsProcessed, [StatusTxt]=@StatusText where [ID]=@IMPORTID
                UPDATE UserImportMasterList set ClientUsersID=t.ClientUsersID from @tempTable t join dbo.UserImportMasterList ml on t.UIMLID=ml.ID 
                Commit Transaction    
            end
        else
            begin
                Rollback transaction
                UPDATE UserImport set [Status]=13, [ImportEnd]=getutcdate(),[RecordsProcessed]=0, [StatusTxt]=@StatusText where [ID]=@IMPORTID
            end