Ejemplo n.º 1
0
        private void UpdateDelegate(DelegateTableRow delegateRow, DelegateUser delegateUser)
        {
            try
            {
                userDataService.UpdateDelegate(
                    delegateUser.Id,
                    delegateRow.FirstName !,
                    delegateRow.LastName !,
                    delegateRow.JobGroupId !.Value,
                    delegateRow.Active !.Value,
                    delegateRow.Answer1,
                    delegateRow.Answer2,
                    delegateRow.Answer3,
                    delegateRow.Answer4,
                    delegateRow.Answer5,
                    delegateRow.Answer6,
                    delegateRow.AliasId,
                    delegateRow.Email !
                    );

                UpdateUserProfessionalRegistrationNumberIfNecessary(
                    delegateRow.HasPrn,
                    delegateRow.Prn,
                    delegateUser.Id
                    );

                delegateRow.RowStatus = RowStatus.Updated;
            }
            catch
            {
                delegateRow.Error = BulkUploadResult.ErrorReason.UnexpectedErrorForUpdate;
            }
        }
Ejemplo n.º 2
0
        private void ProcessDelegateRow(
            int centreId,
            DateTime?welcomeEmailDate,
            DelegateTableRow delegateRow,
            IEnumerable <int> jobGroupIds
            )
        {
            if (!delegateRow.Validate(jobGroupIds))
            {
                return;
            }

            var delegateUserByCandidateNumber =
                GetDelegateUserByCandidateNumberOrDefault(centreId, delegateRow.CandidateNumber);

            if (!string.IsNullOrEmpty(delegateRow.CandidateNumber) && delegateUserByCandidateNumber == null)
            {
                delegateRow.Error = BulkUploadResult.ErrorReason.NoRecordForDelegateId;
                return;
            }

            var delegateUserByAliasId = GetDelegateUserByAliasIdOrDefault(centreId, delegateRow.AliasId);

            if (delegateUserByAliasId != null && delegateUserByCandidateNumber != null &&
                delegateUserByAliasId.CandidateNumber != delegateUserByCandidateNumber.CandidateNumber)
            {
                delegateRow.Error = BulkUploadResult.ErrorReason.AliasIdInUse;
                return;
            }

            var userToUpdate = delegateUserByCandidateNumber ?? delegateUserByAliasId;

            if (userToUpdate == null)
            {
                if (!userService.IsDelegateEmailValidForCentre(delegateRow.Email !, centreId))
                {
                    delegateRow.Error = BulkUploadResult.ErrorReason.EmailAddressInUse;
                    return;
                }

                RegisterDelegate(delegateRow, welcomeEmailDate, centreId);
            }
            else
            {
                ProcessPotentialUpdate(centreId, delegateRow, userToUpdate);
            }
        }
Ejemplo n.º 3
0
        private void ProcessPotentialUpdate(int centreId, DelegateTableRow delegateRow, DelegateUser delegateUser)
        {
            if (delegateRow.Email != delegateUser.EmailAddress &&
                !userService.IsDelegateEmailValidForCentre(delegateRow.Email !, centreId))
            {
                delegateRow.Error = BulkUploadResult.ErrorReason.EmailAddressInUse;
                return;
            }

            if (delegateRow.MatchesDelegateUser(delegateUser))
            {
                delegateRow.RowStatus = RowStatus.Skipped;
                return;
            }

            UpdateDelegate(delegateRow, delegateUser);
        }
Ejemplo n.º 4
0
 public DelegateRecord(DelegateTableRow row, int centreId, bool approved)
 {
     CentreId        = centreId;
     CandidateNumber = row.CandidateNumber;
     FirstName       = row.FirstName;
     LastName        = row.LastName !;
     JobGroupId      = row.JobGroupId !.Value;
     Active          = row.Active !.Value;
     Answer1         = row.Answer1;
     Answer2         = row.Answer2;
     Answer3         = row.Answer3;
     Answer4         = row.Answer4;
     Answer5         = row.Answer5;
     Answer6         = row.Answer6;
     AliasId         = row.AliasId;
     Approved        = approved;
     Email           = row.Email !;
 }
Ejemplo n.º 5
0
        private void RegisterDelegate(DelegateTableRow delegateRow, DateTime?welcomeEmailDate, int centreId)
        {
            var model = new DelegateRegistrationModel(delegateRow, centreId, welcomeEmailDate);
            var errorCodeOrCandidateNumber = registrationDataService.RegisterDelegate(model);

            switch (errorCodeOrCandidateNumber)
            {
            case "-1":
                delegateRow.Error = BulkUploadResult.ErrorReason.UnexpectedErrorForCreate;
                break;

            case "-2":
            case "-3":
            case "-4":
                throw new ArgumentOutOfRangeException(
                          nameof(errorCodeOrCandidateNumber),
                          errorCodeOrCandidateNumber,
                          "Unknown return value when creating delegate record."
                          );

            default:
                var newDelegateRecord =
                    userDataService.GetDelegateUserByCandidateNumber(errorCodeOrCandidateNumber, centreId) !;
                UpdateUserProfessionalRegistrationNumberIfNecessary(
                    delegateRow.HasPrn,
                    delegateRow.Prn,
                    newDelegateRecord.Id
                    );
                SetUpSupervisorDelegateRelations(delegateRow.Email !, centreId, newDelegateRecord.Id);
                if (welcomeEmailDate.HasValue)
                {
                    passwordResetService.GenerateAndScheduleDelegateWelcomeEmail(
                        delegateRow.Email !,
                        newDelegateRecord.CandidateNumber,
                        configuration.GetAppRootPath(),
                        welcomeEmailDate.Value,
                        "DelegateBulkUpload_Refactor"
                        );
                }

                delegateRow.RowStatus = RowStatus.Registered;
                break;
            }
        }
 public DelegateRegistrationModel(
     DelegateTableRow row,
     int centreId,
     DateTime?welcomeEmailDate
     ) : this(
         row.FirstName !,