public IActionResult LearnerInformation(LearnerInformationViewModel model)
        {
            var data = TempData.Peek <DelegateRegistrationByCentreData>() !;

            var centreId = data.Centre !.Value;

            promptsService.ValidateCentreRegistrationPrompts(
                centreId,
                model.Answer1,
                model.Answer2,
                model.Answer3,
                model.Answer4,
                model.Answer5,
                model.Answer6,
                ModelState
                );

            ProfessionalRegistrationNumberHelper.ValidateProfessionalRegistrationNumber(
                ModelState,
                model.HasProfessionalRegistrationNumber,
                model.ProfessionalRegistrationNumber
                );

            if (!ModelState.IsValid)
            {
                PopulateLearnerInformationExtraFields(model, data);
                return(View(model));
            }

            data.SetLearnerInformation(model);
            TempData.Set(data);

            return(RedirectToAction("WelcomeEmail"));
        }
예제 #2
0
        public void GetHasProfessionalRegistrationNumberForView_returns_true_when_has_been_prompted_and_has_prn()
        {
            // When
            var result =
                ProfessionalRegistrationNumberHelper.GetHasProfessionalRegistrationNumberForView(true, "prn-12");

            // Then
            result.Should().BeTrue();
        }
예제 #3
0
        public void GetHasProfessionalRegistrationNumberForView_returns_false_when_has_been_prompted_and_no_prn()
        {
            // When
            var result =
                ProfessionalRegistrationNumberHelper.GetHasProfessionalRegistrationNumberForView(true, null);

            // Then
            result.Should().BeFalse();
        }
예제 #4
0
        public void GetHasProfessionalRegistrationNumberForView_returns_null_when_has_not_been_prompted(
            bool?hasBeenPromptedForPrn
            )
        {
            // When
            var result =
                ProfessionalRegistrationNumberHelper.GetHasProfessionalRegistrationNumberForView(
                    hasBeenPromptedForPrn,
                    "prn"
                    );

            // Then
            result.Should().BeNull();
        }
예제 #5
0
        public void ValidateProfessionalRegistrationNumber_does_not_set_errors_when_valid_prn()
        {
            // Given
            var          state    = new ModelStateDictionary();
            const string validPrn = "abc-123";

            // When
            ProfessionalRegistrationNumberHelper.ValidateProfessionalRegistrationNumber(
                state,
                true,
                validPrn
                );

            // Then
            state.IsValid.Should().BeTrue();
        }
        public IActionResult Index(EditDelegateFormData formData, int delegateId)
        {
            var centreId = User.GetCentreId();

            promptsService.ValidateCentreRegistrationPrompts(formData, centreId, ModelState);

            if (!userService.NewAliasIsValid(formData.AliasId, delegateId, centreId))
            {
                ModelState.AddModelError(
                    nameof(EditDelegateFormData.AliasId),
                    "A user with this alias is already registered at this centre"
                    );
            }

            ProfessionalRegistrationNumberHelper.ValidateProfessionalRegistrationNumber(
                ModelState,
                formData.HasProfessionalRegistrationNumber,
                formData.ProfessionalRegistrationNumber
                );

            if (!ModelState.IsValid)
            {
                return(ReturnToEditDetailsViewWithErrors(formData, delegateId, centreId));
            }

            if (!userService.NewEmailAddressIsValid(formData.Email !, null, delegateId, centreId))
            {
                ModelState.AddModelError(
                    nameof(EditDetailsFormData.Email),
                    "A user with this email is already registered at this centre"
                    );
                return(ReturnToEditDetailsViewWithErrors(formData, delegateId, centreId));
            }

            var(accountDetailsData, centreAnswersData) = AccountDetailsDataHelper.MapToUpdateAccountData(
                formData,
                delegateId,
                User.GetCentreId()
                );
            userService.UpdateUserAccountDetailsViaDelegateAccount(accountDetailsData, centreAnswersData);

            return(RedirectToAction("Index", "ViewDelegate", new { delegateId }));
        }
예제 #7
0
        public void ValidateProfessionalRegistrationNumber_sets_error_when_hasPrn_is_not_set()
        {
            // Given
            var state = new ModelStateDictionary();

            // When
            ProfessionalRegistrationNumberHelper.ValidateProfessionalRegistrationNumber(
                state,
                null,
                null
                );

            // Then
            using (new AssertionScope())
            {
                state.IsValid.Should().BeFalse();
                state.Values.First().Errors.Should().OnlyContain(e => e.ErrorMessage == "Select a professional registration number status");
            }
        }
예제 #8
0
        public void ValidateProfessionalRegistrationNumber_does_not_set_errors_when_not_delegate_or_has_no_prn(
            bool isDelegate,
            bool hasPrn
            )
        {
            // Given
            var state = new ModelStateDictionary();

            // When
            ProfessionalRegistrationNumberHelper.ValidateProfessionalRegistrationNumber(
                state,
                hasPrn,
                null,
                isDelegate
                );

            // Then
            state.IsValid.Should().BeTrue();
        }
예제 #9
0
        public IActionResult LearnerInformation(LearnerInformationViewModel model)
        {
            var data = TempData.Peek <RegistrationData>() !;

            ProfessionalRegistrationNumberHelper.ValidateProfessionalRegistrationNumber(
                ModelState,
                model.HasProfessionalRegistrationNumber,
                model.ProfessionalRegistrationNumber
                );

            if (!ModelState.IsValid)
            {
                SetJobGroupOptions(model);
                return(View(model));
            }

            data.SetLearnerInformation(model);
            TempData.Set(data);

            return(RedirectToAction("Password"));
        }
예제 #10
0
        public void ValidateProfessionalRegistrationNumber_sets_error_when_prn_is_invalid(
            string prn,
            string expectedError
            )
        {
            // Given
            var state = new ModelStateDictionary();

            // When
            ProfessionalRegistrationNumberHelper.ValidateProfessionalRegistrationNumber(
                state,
                true,
                prn
                );

            // Then
            using (new AssertionScope())
            {
                state.IsValid.Should().BeFalse();
                state.Values.First().Errors.Should().OnlyContain(e => e.ErrorMessage == expectedError);
            }
        }