예제 #1
0
        public void Arrange()
        {
            _viewModel = new AddOrganisationAddressViewModel();

            _request = new CreateOrganisationAddressRequest()
            {
                AddressFirstLine  = "123, Test Lane",
                AddressSecondLine = "Test Garden",
                TownOrCity        = "Test Town",
                County            = "Testshire",
                Postcode          = "TE12 3ST"
            };

            _address = $"{_request.AddressFirstLine}, {_request.AddressSecondLine}, " +
                       $"{_request.TownOrCity}, {_request.County}, {_request.Postcode}";

            _mediator       = new Mock <IMediator>();
            _logger         = new Mock <ILog>();
            _mapper         = new Mock <IMapper>();
            _hashingService = new Mock <IAccountLegalEntityPublicHashingService>();

            _mapper.Setup(x => x.Map <CreateOrganisationAddressRequest>(It.IsAny <AddOrganisationAddressViewModel>()))
            .Returns(_request);

            _mediator.Setup(x => x.Send(It.IsAny <CreateOrganisationAddressRequest>()))
            .Returns(new CreateOrganisationAddressResponse {
                Address = _address
            });

            _cookieService = new Mock <ICookieStorageService <EmployerAccountData> >();


            _orchestrator = new OrganisationOrchestrator(_mediator.Object, _logger.Object, _mapper.Object, _cookieService.Object, _hashingService.Object);
        }
        ReturnConfirmOrganisationDetailsViewIfHashedAccountIdIsNotPresentInTheRouteAndOrganisationAddressIsNotNullOrEmpty(
            AddOrganisationAddressViewModel request)
        {
            if (RouteData.Values[ControllerConstants.AccountHashedIdRouteKeyName] != null ||
                string.IsNullOrEmpty(request.OrganisationAddress))
            {
                return(null);
            }
            var organisationDetailsViewModel = _orchestrator.StartConfirmOrganisationDetails(request);

            return(View(ControllerConstants.ConfirmOrganisationDetailsViewName, organisationDetailsViewModel));
        }
예제 #3
0
        public ActionResult AddOrganisationAddress(AddOrganisationAddressViewModel request)
        {
            if (request.Address == null)
            {
                request.Address = new AddressViewModel();
            }

            var response = new OrchestratorResponse <AddOrganisationAddressViewModel>
            {
                Data   = request,
                Status = HttpStatusCode.OK
            };

            return(View("AddOrganisationAddress", response));
        }
예제 #4
0
        public ActionResult UpdateOrganisationAddress(AddOrganisationAddressViewModel request)
        {
            var response = _orchestrator.AddOrganisationAddress(request);

            var viewResult = ReturnAddOrganisationAddressViewIfBadRequest(request, response);

            if (viewResult != null)
            {
                return(viewResult);
            }

            ActionResult redirectToAction =
                RedirectToGatewayInformWhenHashedAccountIdIsNotPresentInTheRoute(response);

            return(redirectToAction ?? View(ControllerConstants.ConfirmOrganisationDetailsViewName, response));
        }
        public void ThenIfTheOrchestratorResponseIsInvalidTheModelDataIsCorrectlyConstructed()
        {
            SetupOrchestratorResponseForABadRequest();

            var requestModel = new AddOrganisationAddressViewModel();
            var result       = CallUpdateOrganisationAddressOnControllerAndReturnResult(requestModel) as ViewResult;
            var actual       = result.Model as OrchestratorResponse <AddOrganisationAddressViewModel>;

            Assert.AreEqual(requestModel, actual.Data);
            Assert.AreEqual(HttpStatusCode.BadRequest, actual.Status);
            Assert.IsNotNull(actual.Exception);
            Assert.IsNotNull(actual.Data.Address.ErrorDictionary);
            Assert.AreEqual(1, actual.Data.Address.ErrorDictionary.Count);
            Assert.IsNotNull(actual.FlashMessage);
            Assert.AreEqual("a flash message", actual.FlashMessage.Message);
        }
예제 #6
0
        public virtual OrchestratorResponse <OrganisationDetailsViewModel> AddOrganisationAddress(
            AddOrganisationAddressViewModel viewModel)
        {
            try
            {
                var request = _mapper.Map <CreateOrganisationAddressRequest>(viewModel.Address);

                var response = _mediator.Send(request);

                return(new OrchestratorResponse <OrganisationDetailsViewModel>
                {
                    Data = new OrganisationDetailsViewModel
                    {
                        HashedId = viewModel.OrganisationHashedId,
                        Name = viewModel.OrganisationName,
                        Address = response.Address,
                        DateOfInception = viewModel.OrganisationDateOfInception,
                        ReferenceNumber = viewModel.OrganisationReferenceNumber ?? string.Empty,
                        Type = viewModel.OrganisationType,
                        PublicSectorDataSource = viewModel.PublicSectorDataSource,
                        Status = viewModel.OrganisationStatus,
                        Sector = viewModel.Sector
                    }
                });
            }
            catch (InvalidRequestException e)
            {
                return(new OrchestratorResponse <OrganisationDetailsViewModel>
                {
                    Data = new OrganisationDetailsViewModel
                    {
                        ErrorDictionary = e.ErrorMessages
                    },
                    Status = HttpStatusCode.BadRequest,
                    Exception = e,
                    FlashMessage = new FlashMessageViewModel
                    {
                        Headline = "Errors to fix",
                        Message = "Check the following details:",
                        ErrorMessages = e.ErrorMessages,
                        Severity = FlashMessageSeverityLevel.Error
                    }
                });
            }
        }
        private ActionResult ReturnAddOrganisationAddressViewIfBadRequest(AddOrganisationAddressViewModel request, OrchestratorResponse <OrganisationDetailsViewModel> response)
        {
            if (response.Status != HttpStatusCode.BadRequest)
            {
                return(null);
            }

            request.Address = request.Address ?? new AddressViewModel();
            request.Address.ErrorDictionary = response.Data.ErrorDictionary;

            var errorResponse = new OrchestratorResponse <AddOrganisationAddressViewModel>
            {
                Data         = request,
                Status       = HttpStatusCode.BadRequest,
                Exception    = response.Exception,
                FlashMessage = response.FlashMessage
            };

            return(View(ControllerConstants.AddOrganisationAddressViewName, errorResponse));
        }
        public ActionResult UpdateOrganisationAddress(AddOrganisationAddressViewModel request)
        {
            var response = _orchestrator.AddOrganisationAddress(request);

            if (response.Status == HttpStatusCode.BadRequest)
            {
                request.Address = request.Address ?? new AddressViewModel();
                request.Address.ErrorDictionary = response.Data.ErrorDictionary;

                var errorResponse = new OrchestratorResponse <AddOrganisationAddressViewModel>
                {
                    Data         = request,
                    Status       = HttpStatusCode.BadRequest,
                    Exception    = response.Exception,
                    FlashMessage = response.FlashMessage
                };

                return(View("AddOrganisationAddress", errorResponse));
            }

            return(View("ConfirmOrganisationDetails", response));
        }
        public ActionResult AddOrganisationAddress(AddOrganisationAddressViewModel request)
        {
            if (!string.IsNullOrEmpty(request.OrganisationAddress))
            {
                var organisationDetailsViewModel = _orchestrator.StartConfirmOrganisationDetails(request);
                return(View("ConfirmOrganisationDetails", organisationDetailsViewModel));
            }


            if (request.Address == null)
            {
                request.Address = new AddressViewModel();
            }

            var response = new OrchestratorResponse <AddOrganisationAddressViewModel>
            {
                Data   = request,
                Status = HttpStatusCode.OK
            };

            return(View("AddOrganisationAddress", response));
        }
        public ActionResult UpdateOrganisationAddress(AddOrganisationAddressViewModel request)
        {
            var response = _orchestrator.AddOrganisationAddress(request);

            var viewResult = ReturnAddOrganisationAddressViewIfBadRequest(request, response);

            if (viewResult != null)
            {
                return(viewResult);
            }

            if (RouteData.Values[ControllerConstants.AccountHashedIdRouteKeyName] != null)
            {
                return(View(ControllerConstants.ConfirmOrganisationDetailsViewName, response));
            }

            if (response.Data?.Name != null)
            {
                _mediatr
                .SendAsync(new SaveOrganisationData
                           (
                               new EmployerAccountOrganisationData
                {
                    OrganisationType              = response.Data.Type,
                    OrganisationReferenceNumber   = response.Data.ReferenceNumber,
                    OrganisationName              = response.Data.Name,
                    OrganisationDateOfInception   = response.Data.DateOfInception,
                    OrganisationRegisteredAddress = response.Data.Address,
                    OrganisationStatus            = response.Data.Status ?? string.Empty,
                    PublicSectorDataSource        = response.Data.PublicSectorDataSource,
                    Sector    = response.Data.Sector,
                    NewSearch = response.Data.NewSearch
                }
                           ));
            }

            return(RedirectToAction(ControllerConstants.SummaryActionName,
                                    ControllerConstants.EmployerAccountControllerName, response.Data));
        }
        public ActionResult AddOrganisationAddress(AddOrganisationAddressViewModel request)
        {
            var actionResult = ReturnConfirmOrganisationDetailsViewIfHashedAccountIdIsNotPresentInTheRouteAndOrganisationAddressIsNotNullOrEmpty(request);

            if (actionResult != null)
            {
                return(actionResult);
            }

            if (request.Address == null)
            {
                request.Address = new AddressViewModel();
            }

            var response = new OrchestratorResponse <AddOrganisationAddressViewModel>
            {
                Data   = request,
                Status = HttpStatusCode.OK
            };

            return(View(ControllerConstants.AddOrganisationAddressViewName, response));
        }
예제 #12
0
        public ActionResult UpdateOrganisationAddress(AddOrganisationAddressViewModel request)
        {
            var response = _orchestrator.AddOrganisationAddress(request);

            if (response.Status == HttpStatusCode.BadRequest)
            {
                request.Address = request.Address ?? new AddressViewModel();
                request.Address.ErrorDictionary = response.Data.ErrorDictionary;

                var errorResponse = new OrchestratorResponse <AddOrganisationAddressViewModel>
                {
                    Data         = request,
                    Status       = HttpStatusCode.BadRequest,
                    Exception    = response.Exception,
                    FlashMessage = response.FlashMessage
                };

                return(View("AddOrganisationAddress", errorResponse));
            }
            CreateOrganisationCookieData(response);

            return(RedirectToAction("GatewayInform", "EmployerAccount", response.Data));
        }
 private ActionResult CallAddOrganisationAddressOnControllerAndReturnTheResult(AddOrganisationAddressViewModel viewModel)
 {
     return(base.Controller.AddOrganisationAddress(viewModel));
 }
예제 #14
0
 public OrchestratorResponse <OrganisationDetailsViewModel> StartConfirmOrganisationDetails(AddOrganisationAddressViewModel request)
 {
     return(new OrchestratorResponse <OrganisationDetailsViewModel>
     {
         Data = new OrganisationDetailsViewModel
         {
             HashedId = request.OrganisationHashedId,
             Name = request.OrganisationName,
             Address = request.OrganisationAddress,
             DateOfInception = request.OrganisationDateOfInception,
             ReferenceNumber = request.OrganisationReferenceNumber ?? string.Empty,
             Type = request.OrganisationType,
             PublicSectorDataSource = request.PublicSectorDataSource,
             Status = request.OrganisationStatus,
             Sector = request.Sector
         }
     });
 }