public async Task <IActionResult> AddressSummary(CertificateAddressViewModel vm)
        {
            if (!ModelState.IsValid)
            {
                return(View("~/Views/Certificate/AddressSummary.cshtml", vm));
            }

            if (!string.IsNullOrEmpty(vm.Employer))
            {
                string nextRoute = "~/Views/Certificate/AddressSummary.cshtml";

                var certificateAddressView =
                    await LoadViewModel <CertificateAddressViewModel>(nextRoute);

                var viewResult = certificateAddressView as ViewResult;
                var certificateAddressViewModel = viewResult.Model as CertificateAddressViewModel;

                certificateAddressViewModel.Employer = vm.Employer;
                if (vm.BackToCheckPage)
                {
                    return(await SaveViewModel(certificateAddressViewModel,
                                               returnToIfModelNotValid : "~/Views/Certificate/AddressSummary.cshtml",
                                               nextAction : RedirectToAction("Check", "CertificateCheck"), action : CertificateActions.AddressSummary));
                }
                else
                {
                    return(await SaveViewModel(certificateAddressViewModel,
                                               returnToIfModelNotValid : "~/Views/Certificate/AddressSummary.cshtml",
                                               nextAction : RedirectToAction("Recipient", "CertificateRecipient"), action : CertificateActions.AddressSummary));
                }
            }

            return(RedirectToAction("Recipient", "CertificateRecipient"));
        }
        public async Task <IActionResult> Address(CertificateAddressViewModel vm)
        {
            var username = _contextAccessor.HttpContext.User
                           .FindFirst("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn")?.Value;

            if (vm.SelectPreviousAddress)
            {
                var certificatePreviousAddress = await _certificateApiClient.GetContactPreviousAddress(username, vm.IsPrivatelyFunded);

                vm = vm.CopyFromCertificateAddress(certificatePreviousAddress);
            }

            if (!ModelState.IsValid)
            {
                vm = await InitialisePreviousAddresssesForViewModel(vm, username);
            }

            if (vm.SelectPreviousAddress)
            {
                return(await SaveViewModel(vm,
                                           returnToIfModelNotValid : "~/Views/Certificate/Address.cshtml",
                                           nextAction : RedirectToAction("Recipient", "CertificateRecipient"),
                                           action : CertificateActions.Address));
            }
            else
            {
                return(await SaveViewModel(vm,
                                           returnToIfModelNotValid : "~/Views/Certificate/Address.cshtml",
                                           nextAction : RedirectToAction("AddressSummary", "CertificateAddressSummary"),
                                           action : CertificateActions.Address));
            }
        }
        public async Task <IActionResult> Address(CertificateAddressViewModel vm)
        {
            var certData = await GetCertificateData(vm.Id);

            if (ModelState.IsValid && vm.AddressHasChanged(certData))
            {
                // when address has been changed the complete journey is required
                SessionService.SetRedirectToCheck(false);
            }

            if (vm.SendTo == CertificateSendTo.Apprentice)
            {
                return(await SaveViewModel(vm,
                                           returnToIfModelNotValid : "~/Views/Certificate/Address.cshtml",
                                           nextAction : RedirectToAction("ConfirmAddress", "CertificateAddress"),
                                           action : CertificateActions.Address));
            }
            else
            {
                return(await SaveViewModel(vm,
                                           returnToIfModelNotValid : "~/Views/Certificate/Address.cshtml",
                                           nextAction : RedirectToAction("Recipient", "CertificateAddress"),
                                           action : CertificateActions.Address));
            }
        }
示例#4
0
        public void When_PostcodeIsNullOrEmpty_Then_ValidatorReturnsInvalid(CertificateSendTo sendTo, string postcode)
        {
            _viewModel = CreateValidViewModel(sendTo);

            _viewModel.Postcode = postcode;

            _validator.ShouldHaveValidationErrorFor(vm => vm.Postcode, _viewModel);
        }
示例#5
0
        public void When_CityIsNullOrEmpty_Then_ValidatorReturnsInvalid(CertificateSendTo sendTo, string city)
        {
            _viewModel = CreateValidViewModel(sendTo);

            _viewModel.City = city;

            _validator.ShouldHaveValidationErrorFor(vm => vm.City, _viewModel);
        }
示例#6
0
        public void When_AddressLine1IsNullOrEmpty_Then_ValidatorReturnsInvalid(CertificateSendTo sendTo, string addressLine1)
        {
            _viewModel = CreateValidViewModel(sendTo);

            _viewModel.AddressLine1 = addressLine1;

            _validator.ShouldHaveValidationErrorFor(vm => vm.AddressLine1, _viewModel);
        }
示例#7
0
        public void When_SendToIsEmployerAndEmployerIsNullOrEmpty_Then_ValidatorReturnsInvalid(string employer)
        {
            _viewModel = CreateValidViewModel(CertificateSendTo.Employer);

            _viewModel.Employer = employer;

            _validator.ShouldHaveValidationErrorFor(vm => vm.Employer, _viewModel);
        }
示例#8
0
        public void When_AllFieldsAreCorrect_Then_ValidatorReturnsValid(CertificateSendTo sendTo)
        {
            _viewModel = CreateValidViewModel(sendTo);

            var result = _validator.Validate(_viewModel);

            result.IsValid.Should().Be(true);
        }
        public void Arrange()
        {
            var certificateAddressController = new CertificateAddressController(MockedLogger.Object, MockHttpContextAccessor.Object, ApiClient);

            _result = certificateAddressController.Address(Certificate.Id).GetAwaiter().GetResult();

            var result = _result as ViewResult;

            _viewModelResponse = result.Model as CertificateAddressViewModel;
        }
示例#10
0
        public async Task AndPostingAddressForSendToEmployer_RedirectsToRecipient(CertificateAddressViewModel vm)
        {
            vm.SendTo = CertificateSendTo.Employer;
            vm.Id     = CertificateIdWithPreviousAddress;

            var result = await _certificateAddressController.Address(vm) as RedirectToActionResult;

            result.ControllerName.Should().Be("CertificateAddress");
            result.ActionName.Should().Be("Recipient");
        }
示例#11
0
        public async Task AndPostingModelErrorToAddress_LoadsAddressView(CertificateAddressViewModel vm)
        {
            vm.Id = CertificateIdWithPreviousAddress;
            _certificateAddressController.ModelState.AddModelError("Key", "Message");

            var result = await _certificateAddressController.Address(vm) as ViewResult;

            result.ViewName.Should().Be("~/Views/Certificate/Address.cshtml");
            result.Model.Should().BeOfType <CertificateAddressViewModel>();
        }
示例#12
0
        public void Arange()
        {
            _mockStringLocalizer = new Mock <IStringLocalizer <CertificateAddressViewModelValidator> >();

            _mockStringLocalizer.Setup(l => l["EmployerCannotBeEmpty"]).Returns(new LocalizedString("Employer", _employerError));
            _mockStringLocalizer.Setup(l => l["AddressLine1CannotBeEmpty"]).Returns(new LocalizedString("Address", _addressLine1Error));
            _mockStringLocalizer.Setup(l => l["CityCannotBeEmpty"]).Returns(new LocalizedString("City", _cityError));
            _mockStringLocalizer.Setup(l => l["PostcodeCannotBeEmpty"]).Returns(new LocalizedString("Postcode", _postcodeError));
            _mockStringLocalizer.Setup(l => l["PostcodeValid"]).Returns(new LocalizedString("Postcode", _postcodeValidError));

            _viewModel = CreateValidViewModel(CertificateSendTo.Apprentice);

            _validator = new CertificateAddressViewModelValidator(_mockStringLocalizer.Object);
        }
        private async Task InitialisePreviousAddresses(string username, CertificateAddressViewModel certificateAddress)
        {
            try
            {
                var certificatePreviousAddress = await _certificateApiClient.GetContactPreviousAddress(username,
                                                                                                       certificateAddress.IsPrivatelyFunded);

                certificateAddress.PreviousAddress =
                    new CertificatePreviousAddressViewModel(certificatePreviousAddress);
            }
            catch (EntityNotFoundException)
            {
                var certificatePreviousAddress = new CertificateAddress();
                certificateAddress.PreviousAddress =
                    new CertificatePreviousAddressViewModel(certificatePreviousAddress);
            }
        }
 public async Task <IActionResult> Address(CertificateAddressViewModel vm)
 {
     return(await SaveViewModel(vm,
                                returnToIfModelNotValid : "~/Views/CertificateAmend/Address.cshtml",
                                nextAction : RedirectToAction("Check", "CertificateAmend", new { certificateId = vm.Id }), action : CertificateActions.Address));
 }
示例#15
0
        public async Task AndPostingDifferentAddressForSendToEmployer_RedirectsToRecipient_IfRedirectToCheckSet(CertificateSession session, CertificateAddressViewModel vm)
        {
            vm.SendTo   = CertificateSendTo.Employer;
            vm.Id       = CertificateIdWithPreviousAddress;
            vm.Employer = vm.Employer + "_Different";

            var sessionString = JsonConvert.SerializeObject(session);

            _mockSessionService.Setup(s => s.Get(nameof(CertificateSession))).Returns(sessionString);

            var redirectToCheck = true;

            _mockSessionService.Setup(s => s.TryGet <bool>("RedirectToCheck", out redirectToCheck)).Returns(true);

            _mockSessionService.Setup(s => s.Set("RedirectToCheck", It.IsAny <object>())).Callback((string key, object value) => {
                redirectToCheck = (bool)value;
                _mockSessionService.Setup(s => s.TryGet <bool>("RedirectToCheck", out redirectToCheck)).Returns(true);
            });

            var result = await _certificateAddressController.Address(vm) as RedirectToActionResult;

            result.ControllerName.Should().Be("CertificateAddress");
            result.ActionName.Should().Be("Recipient");
        }
示例#16
0
        public async Task AndPostingSameAddressForSendToEmployer_ReturnsToCheck_IfRedirectToCheckSet(CertificateSession session, CertificateAddressViewModel vm)
        {
            vm.SendTo = CertificateSendTo.Employer;
            vm.Id     = CertificateIdWithPreviousAddress;

            var sessionString = JsonConvert.SerializeObject(session);

            _mockSessionService.Setup(s => s.Get(nameof(CertificateSession))).Returns(sessionString);
            var expectedValue = true;

            _mockSessionService.Setup(s => s.TryGet <bool>("RedirectToCheck", out expectedValue)).Returns(true);

            var result = await _certificateAddressController.Address(vm) as RedirectToActionResult;

            result.ControllerName.Should().Be("CertificateCheck");
            result.ActionName.Should().Be("Check");
        }
示例#17
0
        public async Task AndPostingAddressForSendToApprentice_RedirectsToConfirmAddress(CertificateAddressViewModel vm)
        {
            vm.SendTo = CertificateSendTo.Apprentice;
            vm.Id     = CertificateIdWithPreviousAddress;

            var result = await _certificateAddressController.Address(vm) as RedirectToActionResult;

            result.ControllerName.Should().Be("CertificateAddress");
            result.ActionName.Should().Be("ConfirmAddress");
        }
        private async Task <CertificateAddressViewModel> InitialisePreviousAddresssesForViewModel(CertificateAddressViewModel certificateAddressViewModel,
                                                                                                  string username)
        {
            await InitialisePreviousAddresses(username, certificateAddressViewModel);

            return(certificateAddressViewModel);
        }