Ejemplo n.º 1
0
        public async void FillCheckCapacitySummaryResult_WithDistanceInMetric_ConvertsToMiles()
        {
            var fakeResponse = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent("{CheckCapacitySummaryResult: [{}]}")
            };

            _mockRestfulHelper.Setup(r => r.PostAsync(It.IsAny <string>(), It.IsAny <HttpRequestMessage>()))
            .Returns(Task <HttpResponseMessage> .Factory.StartNew(() => fakeResponse));
            _mockRestfulHelper.Setup(r => r.GetAsync(It.IsAny <string>())).Returns(Task <string> .Factory.StartNew(() => "0"));

            var model = new DosViewModel {
                SearchDistance = 1,
                DosCheckCapacitySummaryResult = new DosCheckCapacitySummaryResult()
                {
                    Success = new SuccessObject <ServiceViewModel>()
                    {
                        Services = new List <ServiceViewModel>()
                    }
                }
            };
            await _dosBuilder.FillCheckCapacitySummaryResult(model, true);

            _mockRestfulHelper.Verify(r => r.PostAsync(It.IsAny <string>(), It.Is <HttpRequestMessage>(h => AssertIsMetric(h, model.SearchDistance))));
        }
Ejemplo n.º 2
0
        public async Task <DosViewModel> FillServiceDetailsBuilder(DosViewModel model)
        {
            var jObj = (JObject)JsonConvert.DeserializeObject(model.CheckCapacitySummaryResultListJson);

            model.CheckCapacitySummaryResultList = jObj["CheckCapacitySummaryResult"].ToObject <CheckCapacitySummaryResult[]>();
            var selectedService = model.CheckCapacitySummaryResultList.FirstOrDefault(x => x.IdField == Convert.ToInt32(model.SelectedService));

            var itkMessage = await _cacheManager.Read(model.UserId.ToString());

            var document = XDocument.Parse(itkMessage);

            var serviceDetials = document.Root.Descendants("ServiceDetails").FirstOrDefault();

            serviceDetials.Element("id").SetValue(selectedService.IdField.ToString());
            serviceDetials.Element("name").SetValue(selectedService.NameField.ToString());
            serviceDetials.Element("odsCode").SetValue(selectedService.OdsCodeField.ToString());
            serviceDetials.Element("contactDetails").SetValue(selectedService.ContactDetailsField ?? "");
            serviceDetials.Element("address").SetValue(selectedService.AddressField.ToString());
            serviceDetials.Element("postcode").SetValue(selectedService.PostcodeField.ToString());

            _cacheManager.Set(model.UserId.ToString(), document.ToString());
            _notifier.Notify(_configuration.IntegrationApiItkDispatcher, model.UserId.ToString());

            model.CheckCapacitySummaryResultList = new CheckCapacitySummaryResult[] { selectedService };
            model.CareAdvices = await _careAdviceBuilder.FillCareAdviceBuilder(Int32.Parse(model.Age), model.Gender, model.CareAdviceMarkers.ToList());

            return(model);
        }
Ejemplo n.º 3
0
        public async void FillCheckCapacitySummaryResult_WithDistanceInMetric_ConvertsToMiles()
        {
            var fakeContent = "{DosCheckCapacitySummaryResult: [{}]}";

            var response = new Mock <IRestResponse <DosCheckCapacitySummaryResult> >();

            response.Setup(_ => _.IsSuccessful).Returns(true);
            response.Setup(_ => _.StatusCode).Returns(HttpStatusCode.OK);
            response.Setup(_ => _.Data).Returns(JsonConvert.DeserializeObject <DosCheckCapacitySummaryResult>(fakeContent));
            response.Setup(_ => _.Content).Returns(fakeContent);

            _mockRestClient.Setup(r => r.ExecuteAsync <DosCheckCapacitySummaryResult>(It.Is <IRestRequest>(rq => rq.Method == Method.POST)))
            .ReturnsAsync(response.Object);

            var model = new DosViewModel
            {
                SearchDistance = 1,
                DosCheckCapacitySummaryResult = new DosCheckCapacitySummaryResult()
                {
                    Success = new SuccessObject <ServiceViewModel>()
                    {
                        Services = new List <ServiceViewModel>()
                    }
                }
            };
            await _dosBuilder.FillCheckCapacitySummaryResult(model, true, null);

            _mockRestClient.Verify(r => r.ExecuteAsync <DosCheckCapacitySummaryResult>(It.Is <RestRequest>(h => AssertIsMetric(h, model.SearchDistance))));
        }
        public void LogDosRequest(OutcomeViewModel model, DosViewModel dosViewModel)
        {
            var audit = model.ToAuditEntry();
            var auditedDosViewModel = Mapper.Map <AuditedDosRequest>(dosViewModel);

            audit.DosRequest = JsonConvert.SerializeObject(auditedDosViewModel);
            Log(audit);
        }
Ejemplo n.º 5
0
        public async Task LogDosRequest(OutcomeViewModel model, DosViewModel dosViewModel)
        {
            var audit = model.ToAuditEntry(new HttpSessionStateWrapper(HttpContext.Current.Session));
            var auditedDosViewModel = Mapper.Map <AuditedDosRequest>(dosViewModel);

            audit.DosRequest = JsonConvert.SerializeObject(auditedDosViewModel);
            await Log(audit);
        }
Ejemplo n.º 6
0
        public async Task <ActionResult> Search()
        {
            var model = new DosViewModel();

            model.Dispositions = await ListDispositions();

            return(View(model));
        }
Ejemplo n.º 7
0
        public void Postcode_partial_returns_part_postcode()
        {
            var sut = new DosViewModel
            {
                PostCode = "So30"
            };
            var audit = Mapper.Map <DosViewModel, AuditedDosRequest>(sut);

            Assert.AreEqual("So30", audit.PostCode);
        }
Ejemplo n.º 8
0
        public void Postcode_mixed_case_with_no_space_returns_part_postcode()
        {
            var sut = new DosViewModel
            {
                PostCode = "So302Un"
            };
            var audit = Mapper.Map <DosViewModel, AuditedDosRequest>(sut);

            Assert.AreEqual("So30", audit.PostCode);
        }
Ejemplo n.º 9
0
        public async Task <ActionResult> FillServiceDetails(DosViewModel model, bool?filterServices)
        {
            model.SymptomDiscriminatorList = new[] { model.SymptomDiscriminator };
            var dosView = new DosViewModel
            {
                DosCheckCapacitySummaryResult   = (await _dosBuilder.FillCheckCapacitySummaryResult(model, filterServices.HasValue ? filterServices.Value : true, null)),
                DosServicesByClinicalTermResult = (await _dosBuilder.FillDosServicesByClinicalTermResult(model))
            };

            return(PartialView("_DoSComparisionResultsView", dosView));
        }
Ejemplo n.º 10
0
        private async Task <Surgery> GetSelectedSurgery(DosViewModel model)
        {
            var surgery = new Surgery();

            if (!string.IsNullOrEmpty(model.SelectedSurgery))
            {
                surgery =
                    JsonConvert.DeserializeObject <Surgery>(
                        await _restfulHelper.GetAsync(string.Format(_configuration.GPSearchApiUrl, model.SelectedSurgery)));
            }
            else
            {
                surgery.SurgeryId = "UKN";
            }
            return(surgery);
        }
Ejemplo n.º 11
0
        public async Task <DosCheckCapacitySummaryResult> FillCheckCapacitySummaryResult(DosViewModel dosViewModel, bool filterServices, DosEndpoint?endpoint)
        {
            var checkCapacitySummaryUrl = string.Format("{0}?filterServices={1}&endpoint={2}", _configuration.BusinessDosApiCheckCapacitySummaryUrl, filterServices, endpoint);
            var dosFilterdCase          = dosViewModel as DosFilteredCase;

            var request = new JsonRestRequest(checkCapacitySummaryUrl, Method.POST);

            request.AddJsonBody(dosFilterdCase);

            _logger.Debug(string.Format("DOSBuilder.FillCheckCapacitySummaryResult(): URL: {0} BODY: {1}", checkCapacitySummaryUrl, JsonConvert.SerializeObject(dosFilterdCase)));
            var response = await _restClient.ExecuteAsync <DosCheckCapacitySummaryResult>(request);

            if (!response.IsSuccessful || response.Data.Error != null)
            {
                return(response.Data);
            }

            var services = new List <ServiceViewModel>();

            if (response.Data.Success != null)
            {
                var checkCapacitySummaryResults = JsonConvert.SerializeObject(response.Data.Success.Services);
                var jArray = (JArray)JsonConvert.DeserializeObject(checkCapacitySummaryResults);
                services = jArray.ToObject <List <ServiceViewModel> >();
            }

            var checkCapacitySummaryResult = new DosCheckCapacitySummaryResult()
            {
                Success = new SuccessObject <ServiceViewModel>()
                {
                    Code     = (int)response.StatusCode,
                    Services = FilterCallbackEnabled(services)
                }
            };

            return(checkCapacitySummaryResult);
        }
Ejemplo n.º 12
0
        public async Task <DosServicesByClinicalTermResult> FillDosServicesByClinicalTermResult(DosViewModel dosViewModel)
        {
            /*
             * dosViewModel.SymptomGroup = await BuildSymptomGroup(dosViewModel.JourneyJson);
             *
             * var request = BuildRequestMessage(dosViewModel);
             * var response = await _restfulHelper.PostAsync(_configuration.BusinessDosServicesByClinicalTermUrl, request);
             *
             * if (response.StatusCode != HttpStatusCode.OK) return new DosServicesByClinicalTermResult[0];
             *
             * var val = await response.Content.ReadAsStringAsync();
             * var jObj = (JObject)JsonConvert.DeserializeObject(val);
             * var result = jObj["DosServicesByClinicalTermResult"];
             * return result.ToObject<DosServicesByClinicalTermResult[]>();
             */

            //USE UNTIL BUSINESS API IS AVAILABLE
            //#########################START###################

            //map doscase to dosservicesbyclinicaltermrequest
            var requestObj = Mapper.Map <DosServicesByClinicalTermRequest>(dosViewModel);

            requestObj.GpPracticeId = await GetPracticeIdFromSurgeryId(dosViewModel.Surgery);

            return
                (await
                 GetMobileDoSResponse <DosServicesByClinicalTermResult>(
                     "services/byClinicalTerm/{0}/{1}/{2}/{3}/{4}/{5}/{6}/{7}/{8}",
                     requestObj.CaseId, requestObj.Postcode, requestObj.SearchDistance, requestObj.GpPracticeId,
                     requestObj.Age, requestObj.Gender, requestObj.Disposition,
                     requestObj.SymptomGroupDiscriminatorCombos, requestObj.NumberPerType));

            //################################END################
        }
Ejemplo n.º 13
0
        public async Task <DosCheckCapacitySummaryResult> FillCheckCapacitySummaryResult(DosViewModel dosViewModel, bool filterServices)
        {
            const int PHARMACY           = 13;
            const int PHARMACY_EXT_HOURS = 116;

            var request = BuildRequestMessage(dosViewModel);
            var body    = await request.Content.ReadAsStringAsync();

            string checkCapacitySummaryUrl = string.Format("{0}?filterServices={1}", _configuration.BusinessDosCheckCapacitySummaryUrl, filterServices);

            _logger.Debug(string.Format("DOSBuilder.FillCheckCapacitySummaryResult(): URL: {0} BODY: {1}", checkCapacitySummaryUrl, body));
            var response = await _restfulHelper.PostAsync(checkCapacitySummaryUrl, request);

            if (response.StatusCode != HttpStatusCode.OK)
            {
                return new DosCheckCapacitySummaryResult {
                           Error = new ErrorObject()
                           {
                               Code = (int)response.StatusCode, Message = response.ReasonPhrase
                           }
                }
            }
            ;

            var val = await response.Content.ReadAsStringAsync();

            var jObj     = (JObject)JsonConvert.DeserializeObject(val);
            var results  = jObj["CheckCapacitySummaryResult"];
            var services = results.ToObject <List <ServiceViewModel> >();

            var checkCapacitySummaryResult = new DosCheckCapacitySummaryResult()
            {
                Success = new SuccessObject <ServiceViewModel>()
                {
                    Code     = (int)response.StatusCode,
                    Services = DetermineCallbackEnabled(services)
                }
            };

            var isPharmacy = new Func <DosService, bool>(s => s.ServiceType != null && (s.ServiceType.Id == PHARMACY || s.ServiceType.Id == PHARMACY_EXT_HOURS));

            if (checkCapacitySummaryResult.Success.Services.Any(isPharmacy))
            {
                checkCapacitySummaryResult.Success.Services = checkCapacitySummaryResult.Success.Services.Take(6).ToList();
            }

            return(checkCapacitySummaryResult);
        }
Ejemplo n.º 14
0
 public async Task <ActionResult> FillServiceDetails(DosViewModel model)
 {
     return(View("../DOS/Confirmation", await _dosBuilder.FillServiceDetailsBuilder(model)));
 }