public string RegisterDelegate(DelegateRegistrationModel delegateRegistrationModel)
        {
            var values = new
            {
                delegateRegistrationModel.FirstName,
                delegateRegistrationModel.LastName,
                delegateRegistrationModel.Email,
                CentreID   = delegateRegistrationModel.Centre,
                JobGroupID = delegateRegistrationModel.JobGroup,
                delegateRegistrationModel.Active,
                delegateRegistrationModel.Approved,
                delegateRegistrationModel.Answer1,
                delegateRegistrationModel.Answer2,
                delegateRegistrationModel.Answer3,
                delegateRegistrationModel.Answer4,
                delegateRegistrationModel.Answer5,
                delegateRegistrationModel.Answer6,
                AliasID     = delegateRegistrationModel.AliasId,
                ExternalReg = delegateRegistrationModel.IsExternalRegistered,
                SelfReg     = delegateRegistrationModel.IsSelfRegistered,
                delegateRegistrationModel.NotifyDate,
                // The parameter @Bulk causes the stored procedure to send old welcome emails,
                // which is something we do not want in the refactored system so we always set this to 0
                Bulk = 0,
            };

            var candidateNumberOrErrorCode = connection.QueryFirstOrDefault <string>(
                "uspSaveNewCandidate_V10",
                values,
                commandType: CommandType.StoredProcedure
                );

            return(candidateNumberOrErrorCode);
        }
Beispiel #2
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;
            }
        }