Example #1
0
        private async Task <DosCheckCapacitySummaryResult> GetServiceAvailability(OutcomeViewModel model, DateTime?overrideDate, bool filterServices, DosEndpoint?endpoint)
        {
            var dosViewModel = _dosBuilder.BuildDosViewModel(model, overrideDate);

            _auditLogger.LogDosRequest(model, dosViewModel);
            return(await _dosBuilder.FillCheckCapacitySummaryResult(dosViewModel, filterServices, endpoint).ConfigureAwait(false));
        }
Example #2
0
        private async Task <DosCheckCapacitySummaryResult> GetServiceAvailability(OutcomeViewModel model, DateTime?overrideDate, bool filterServices, DosEndpoint?endpoint)
        {
            var dosViewModel = Mapper.Map <DosViewModel>(model);

            if (overrideDate.HasValue)
            {
                dosViewModel.DispositionTime = overrideDate.Value;
            }

            await _auditLogger.LogDosRequest(model, dosViewModel);

            return(await _dosBuilder.FillCheckCapacitySummaryResult(dosViewModel, filterServices, endpoint));
        }
Example #3
0
        public async Task <OutcomeViewModel> PopulateGroupedDosResults(OutcomeViewModel model, DateTime?overrideDate, bool?overrideFilterServices, DosEndpoint?endpoint)
        {
            var dosViewModel = _dosBuilder.BuildDosViewModel(model, overrideDate);

            _auditLogger.LogDosRequest(model, dosViewModel);
            model.DosCheckCapacitySummaryResult = await _dosBuilder.FillCheckCapacitySummaryResult(dosViewModel, overrideFilterServices.HasValue?overrideFilterServices.Value : model.FilterServices, endpoint);

            if (NeedToRequeryDos(model))
            {
                _auditLogger.LogDosResponse(model, model.DosCheckCapacitySummaryResult);
                dosViewModel.Disposition = FromOutcomeViewModelToDosViewModel.DispositionResolver.ConvertToDosCode(model.Id);
                _auditLogger.LogDosRequest(model, dosViewModel);
                model.DosCheckCapacitySummaryResult = await _dosBuilder.FillCheckCapacitySummaryResult(dosViewModel, overrideFilterServices.HasValue?overrideFilterServices.Value : model.FilterServices, endpoint);

                model.DosCheckCapacitySummaryResult.IsValidationRequery = true;
            }

            model.DosCheckCapacitySummaryResult.ServicesUnavailable = model.DosCheckCapacitySummaryResult.ResultListEmpty;

            if (!model.DosCheckCapacitySummaryResult.ResultListEmpty)
            {
                model.GroupedDosServices = _dosBuilder.FillGroupedDosServices(model.DosCheckCapacitySummaryResult.Success.Services);
                model.RecommendedService = await _recommendedServiceBuilder.BuildRecommendedService(model.DosCheckCapacitySummaryResult.Success.FirstService);
            }
            else if (model.RecommendedService != null)
            {
                //reset the recommended service
                model.RecommendedService = null;
            }

            model.SurveyLink = await _surveyLinkViewModelBuilder.SurveyLinkBuilder(model);

            //_surveyLinkViewModelBuilder.AddServiceInformation(model, model.SurveyLink);

            _auditLogger.LogDosResponse(model, model.DosCheckCapacitySummaryResult);

            return(model);
        }
        public async Task <OutcomeViewModel> PopulateGroupedDosResults(OutcomeViewModel model, DateTime?overrideDate, bool?overrideFilterServices, DosEndpoint?endpoint)
        {
            var dosViewModel = Mapper.Map <DosViewModel>(model);

            if (overrideDate.HasValue)
            {
                dosViewModel.DispositionTime = overrideDate.Value;
            }
            var _ = _auditLogger.LogDosRequest(model, dosViewModel);

            model.DosCheckCapacitySummaryResult = await _dosBuilder.FillCheckCapacitySummaryResult(dosViewModel, overrideFilterServices.HasValue?overrideFilterServices.Value : model.FilterServices, endpoint);

            model.DosCheckCapacitySummaryResult.ServicesUnavailable = model.DosCheckCapacitySummaryResult.ResultListEmpty;

            if (!model.DosCheckCapacitySummaryResult.ResultListEmpty)
            {
                model.GroupedDosServices = _dosBuilder.FillGroupedDosServices(model.DosCheckCapacitySummaryResult.Success.Services);
            }

            _ = _auditLogger.LogDosResponse(model);

            return(model);
        }
Example #5
0
        public async Task <ActionResult> Outcome(OutcomeViewModel model, [FromUri] DateTime?overrideDate, [FromUri] bool?overrideFilterServices)
        {
            const string outcomeView  = "Outcome";
            const string servicesView = "Services";

            if (!ModelState.IsValidField("UserInfo.CurrentAddress.PostCode"))
            {
                return(View("Postcode", model));
            }

            var dosViewModel = Mapper.Map <DosViewModel>(model);

            if (overrideDate.HasValue)
            {
                dosViewModel.DispositionTime = overrideDate.Value;
            }

            if (string.IsNullOrEmpty(model.UserInfo.CurrentAddress.Postcode))
            {
                await _auditLogger.LogEventData(model, "User did not enter a postcode");

                return(View(_viewRouter.GetOutcomeViewPath(model, ControllerContext, outcomeView), model));
            }

            model.UserInfo.CurrentAddress.IsInPilotArea = _postCodeAllowedValidator.IsAllowedPostcode(model.UserInfo.CurrentAddress.Postcode);

            if (!model.UserInfo.CurrentAddress.IsInPilotArea)
            {
                await _auditLogger.LogEventData(model, "User entered a postcode outside of pilot area");

                return(View(_viewRouter.GetOutcomeViewPath(model, ControllerContext, outcomeView), model));
            }

            await _auditLogger.LogDosRequest(model, dosViewModel);

            model.DosCheckCapacitySummaryResult = await _dosBuilder.FillCheckCapacitySummaryResult(dosViewModel, overrideFilterServices.HasValue?overrideFilterServices.Value : model.FilterServices);

            model.DosCheckCapacitySummaryResult.ServicesUnavailable = model.DosCheckCapacitySummaryResult.ResultListEmpty;
            await _auditLogger.LogDosResponse(model);

            if (model.DosCheckCapacitySummaryResult.Error == null && !model.DosCheckCapacitySummaryResult.ResultListEmpty)
            {
                if (model.UserInfo.CurrentAddress.IsPostcodeFirst)
                {
                    return(View(_viewRouter.GetOutcomeViewPath(model, ControllerContext, outcomeView), model));
                }
                else
                {
                    return(View(_viewRouter.GetOutcomeViewPath(model, ControllerContext, servicesView), model));
                }
            }
            else if (model.DosCheckCapacitySummaryResult.Error != null || model.DosCheckCapacitySummaryResult.ResultListEmpty)
            {
                return(View(_viewRouter.GetOutcomeViewPath(model, ControllerContext, outcomeView), model));
            }
            else
            {
                //present screen with validation errors
                return(View(_viewRouter.GetOutcomeViewPath(model, ControllerContext, outcomeView), model));
            }
        }