public async Task <ActionResult> PathwayStart(string pathwayNumber, string gender, int age, string args) { var decryptedArgs = new QueryStringEncryptor(args); var decryptedFilterServices = string.IsNullOrEmpty(decryptedArgs["filterServices"]) || bool.Parse(decryptedArgs["filterServices"]); var model = new JustToBeSafeViewModel { SessionId = Guid.Parse(decryptedArgs["sessionId"]), PathwayNo = pathwayNumber, DigitalTitle = decryptedArgs["digitalTitle"], EntrySearchTerm = decryptedArgs["searchTerm"], CurrentPostcode = decryptedArgs["postcode"], UserInfo = new UserInfo { Demography = new AgeGenderViewModel { Age = age, Gender = gender } }, FilterServices = decryptedFilterServices, Campaign = decryptedArgs["campaign"], Source = decryptedArgs["source"] }; return(await JustToBeSafeFirst(model)); }
public async Task <ActionResult> JustToBeSafeFirst(JustToBeSafeViewModel model) { ModelState.Clear(); var viewData = await _justToBeSafeFirstViewModelBuilder.JustToBeSafeFirstBuilder(model).ConfigureAwait(false); return(View(viewData.Item1, viewData.Item2)); }
public async Task <ActionResult> JustToBeSafeNext(JustToBeSafeViewModel model) { ModelState.Clear(); var next = await _justToBeSafeViewModelBuilder.JustToBeSafeNextBuilder(model).ConfigureAwait(false); return(View(next.Item1, next.Item2)); }
private async Task <JustToBeSafeViewModel> DoWorkPreviouslyDoneInQuestionBuilder(JustToBeSafeViewModel model) { var businessApiPathwayUrl = _configuration.GetBusinessApiPathwayUrl(model.PathwayId); var response = await _restfulHelper.GetAsync(businessApiPathwayUrl); var pathway = JsonConvert.DeserializeObject <Pathway>(response); if (pathway == null) { return(null); } var derivedAge = model.UserInfo.Demography.Age == -1 ? pathway.MinimumAgeInclusive : model.UserInfo.Demography.Age; var newModel = new JustToBeSafeViewModel { PathwayId = pathway.Id, PathwayNo = pathway.PathwayNo, PathwayTitle = pathway.Title, DigitalTitle = string.IsNullOrEmpty(model.DigitalTitle) ? pathway.Title : model.DigitalTitle, UserInfo = new UserInfo { Demography = new AgeGenderViewModel { Age = derivedAge, Gender = pathway.Gender } }, JourneyJson = model.JourneyJson, SymptomDiscriminatorCode = model.SymptomDiscriminatorCode, State = JourneyViewModelStateBuilder.BuildState(pathway.Gender, derivedAge), SessionId = model.SessionId, FilterServices = model.FilterServices }; newModel.StateJson = JourneyViewModelStateBuilder.BuildStateJson(newModel.State); return(newModel); }
public async Task <ActionResult> JustToBeSafeFirst(JourneyViewModel model) { var newModel = new JustToBeSafeViewModel { PathwayId = model.PathwayId, UserInfo = model.UserInfo }; return(await JustToBeSafeFirst(newModel)); }
public async Task <Tuple <string, JourneyViewModel> > BuildNextAction(List <QuestionWithAnswers> questions, Journey journey, JustToBeSafeViewModel model, Answer selectedAnswer, QuestionWithAnswers selectedQuestion, string questionsJson) { if (!questions.Any()) { journey.Steps = journey.Steps.Where(step => step.QuestionId != model.SelectedQuestionId).ToList(); var questionViewModel = new QuestionViewModel { PathwayId = model.PathwayId, PathwayNo = model.PathwayNo, PathwayTitle = model.PathwayTitle, SymptomDiscriminatorCode = model.SymptomDiscriminatorCode, UserInfo = model.UserInfo, JourneyJson = JsonConvert.SerializeObject(journey), SelectedAnswer = JsonConvert.SerializeObject(selectedAnswer), }; _mappingEngine.Mapper.Map(selectedQuestion, questionViewModel); questionViewModel = _mappingEngine.Mapper.Map(selectedAnswer, questionViewModel); var nextNode = await GetNextNode(questionViewModel); return(new Tuple <string, JourneyViewModel>("TODO NOT USED?", await _journeyViewModelBuilder.Build(questionViewModel, nextNode))); } if (questions.Count() == 1) { var journeyViewModel = new JourneyViewModel { PathwayId = model.PathwayId, PathwayNo = model.PathwayNo, PathwayTitle = model.PathwayTitle, UserInfo = model.UserInfo, JourneyJson = JsonConvert.SerializeObject(journey), }; _mappingEngine.Mapper.Map(questions.First(), journeyViewModel); journeyViewModel = _mappingEngine.Mapper.Map(selectedAnswer, journeyViewModel); return(new Tuple <string, JourneyViewModel>("../Question/Question", journeyViewModel)); } var viewModel = new JustToBeSafeViewModel { PathwayId = model.PathwayId, PathwayNo = model.PathwayNo, PathwayTitle = model.PathwayTitle, JourneyJson = JsonConvert.SerializeObject(journey), SymptomDiscriminatorCode = selectedAnswer.SymptomDiscriminator ?? model.SymptomDiscriminatorCode, Part = model.Part + 1, Questions = questions, QuestionsJson = questionsJson, UserInfo = model.UserInfo }; return(new Tuple <string, JourneyViewModel>("JustToBeSafe", viewModel)); }
public async Task <ActionResult> JustToBeSafe(JourneyViewModel model) { var sliderModel = await _questionViewModelBuilder.BuildSlider(model); var justToBeSafeViewModel = new JustToBeSafeViewModel { PathwayId = sliderModel.PathwayId, PathwayNo = sliderModel.PathwayNo, PathwayTitle = sliderModel.PathwayTitle, UserInfo = sliderModel.UserInfo }; var next = await _justToBeSafeFirstViewModelBuilder.JustToBeSafeFirstBuilder(justToBeSafeViewModel); return(View(next.Item1, next.Item2)); }
private static QuestionInfoViewModel BuildModel(string pathwayNumber, JustToBeSafeViewModel jtbsModel) { var userInfo = jtbsModel.UserInfo; var demogs = userInfo != null ? jtbsModel.UserInfo.Demography : null; var age = userInfo != null && demogs != null && demogs.Age > 0 ? demogs.Age : 111; var gender = userInfo != null && demogs != null && !string.IsNullOrEmpty(demogs.Gender) ? demogs.Gender : "Male"; var state = new Dictionary <string, string>(); state.Add("PATIENT_GENDER", string.Format("\"{0}\"", gender.Substring(0, 1))); state.Add("SYMPTOMS_STARTED_DAYS_AGO", "-1"); if (demogs != null && demogs.Age > 0) { state.Add("PATIENT_AGE", age.ToString()); } else { state.Add("PATIENT_AGE", "-1"); } var model = new QuestionInfoViewModel { SessionId = jtbsModel.SessionId, PathwayNo = pathwayNumber, EntrySearchTerm = string.Format("External get to {0}", pathwayNumber), State = state, StateJson = JsonConvert.SerializeObject(state), UserInfo = new UserInfo { Demography = new AgeGenderViewModel { Age = age, Gender = gender } }, CurrentPostcode = jtbsModel.CurrentPostcode }; return(model); }
private async Task <JustToBeSafeViewModel> BuildIdentifiedModel(JustToBeSafeViewModel model) { var pathway = JsonConvert.DeserializeObject <Pathway>(await _restfulHelper.GetAsync(_configuration.GetBusinessApiPathwayIdUrl(model.PathwayNo, model.UserInfo.Demography.Gender, model.UserInfo.Demography.Age))); if (pathway == null) { return(null); } model.PathwayId = pathway.Id; model.PathwayTitle = pathway.Title; model.PathwayNo = pathway.PathwayNo; model.State = JourneyViewModelStateBuilder.BuildState(model.UserInfo.Demography.Gender, model.UserInfo.Demography.Age, model.State); model.StateJson = JourneyViewModelStateBuilder.BuildStateJson(model.State); model.CollectedKeywords = new KeywordBag(_keywordCollector.ParseKeywords(pathway.Keywords, false).ToList(), _keywordCollector.ParseKeywords(pathway.ExcludeKeywords, false).ToList()); return(model); }
public async Task <ActionResult> PathwayStart(string pathwayNumber, string gender, int age, string digitalTitle, string entrySearchTerm, bool?filterServices) { var model = new JustToBeSafeViewModel { PathwayNo = pathwayNumber, DigitalTitle = digitalTitle, EntrySearchTerm = entrySearchTerm, UserInfo = new UserInfo { Demography = new AgeGenderViewModel { Age = age, Gender = gender } }, FilterServices = filterServices.HasValue ? filterServices.Value : true }; return(await JustToBeSafeFirst(model)); }
public static string EncryptedKeys(JustToBeSafeViewModel model) { var encryptor = new QueryStringEncryptor(); encryptor["sessionId"] = model.SessionId.ToString(); encryptor["postcode"] = !string.IsNullOrEmpty(model.CurrentPostcode) ? model.CurrentPostcode : string.Empty; encryptor["filterServices"] = model.FilterServices.ToString(); encryptor["campaign"] = !string.IsNullOrEmpty(model.Campaign) ? model.Campaign : string.Empty; encryptor["source"] = !string.IsNullOrEmpty(model.Source) ? model.Source : string.Empty; encryptor["digitalTitle"] = !string.IsNullOrEmpty(model.DigitalTitle) ? model.DigitalTitle : string.Empty; encryptor["isCovidjourney"] = model.IsCovidJourney.ToString(); encryptor["viaGuidedSelection"] = model.ViaGuidedSelection.HasValue ? model.ViaGuidedSelection.Value.ToString() : string.Empty; encryptor["searchTerm"] = !string.IsNullOrWhiteSpace(model.EntrySearchTerm) ? model.EntrySearchTerm : string.Empty; encryptor["startParameter"] = !string.IsNullOrEmpty(model.StartParameter) ? model.StartParameter : string.Empty; return(encryptor.ToString()); }
private async Task <JustToBeSafeViewModel> DoWorkPreviouslyDoneInQuestionBuilder(JustToBeSafeViewModel model) { var businessApiPathwayUrl = _configuration.GetBusinessApiPathwayUrl(model.PathwayId); var response = await _restClient.ExecuteAsync <Pathway>(new JsonRestRequest(businessApiPathwayUrl, Method.GET)); CheckResponse(response); if (response.Data == null) { return(null); } var pathway = response.Data; var derivedAge = model.UserInfo.Demography.Age == -1 ? pathway.MinimumAgeInclusive : model.UserInfo.Demography.Age; var state = !string.IsNullOrEmpty(model.StateJson) ? JsonConvert.DeserializeObject <Dictionary <string, string> >(model.StateJson) : new Dictionary <string, string>(); var newModel = new JustToBeSafeViewModel { PathwayId = pathway.Id, PathwayNo = pathway.PathwayNo, PathwayTitle = pathway.Title, PathwayTraumaType = pathway.TraumaType, DigitalTitle = string.IsNullOrEmpty(model.DigitalTitle) ? pathway.Title : model.DigitalTitle, UserInfo = new UserInfo { Demography = new AgeGenderViewModel { Age = derivedAge, Gender = pathway.Gender } }, JourneyJson = model.JourneyJson, SymptomDiscriminatorCode = model.SymptomDiscriminatorCode, State = JourneyViewModelStateBuilder.BuildState(pathway.Gender, derivedAge, state), SessionId = model.SessionId, Campaign = model.Campaign, Source = model.Source, FilterServices = model.FilterServices, StartParameter = model.StartParameter }; newModel.StateJson = JourneyViewModelStateBuilder.BuildStateJson(newModel.State); return(newModel); }
public async Task <Tuple <string, JourneyViewModel> > ActionSelection(JourneyViewModel model) { var nonOutcome = new[] { "Dx011", "Dx012", "Dx013", "Dx016", }; if (nonOutcome.Contains(model.Id)) { var newModel = _mappingEngine.Map <OutcomeViewModel>(model); return(new Tuple <string, JourneyViewModel>("../Outcome/Emergency", await _outcomeViewModelBuilder.DispositionBuilder(newModel))); } switch (model.NodeType) { case NodeType.Outcome: { var newModel = _mappingEngine.Map <OutcomeViewModel>(model); newModel.CareAdviceMarkers = model.State.Keys.Where(key => key.StartsWith("Cx")); var disposition2 = new[] { "Dx02", "Dx25", "Dx75", "Dx30", "Dx03", "Dx16", "Dx94", "Dx09" }; return(disposition2.Contains(model.Id) ? new Tuple <string, JourneyViewModel>("../Outcome/Disposition2", await _outcomeViewModelBuilder.DispositionBuilder(newModel)) : new Tuple <string, JourneyViewModel>("../Outcome/Disposition", await _outcomeViewModelBuilder.DispositionBuilder(newModel))); } case NodeType.Pathway: { var pathway = JsonConvert.DeserializeObject <Pathway>(await _restfulHelper.GetAsync(string.Format(_configuration.BusinessApiPathwayUrl, model.Id))); var newModel = new JustToBeSafeViewModel { PathwayId = pathway.Id, PathwayNo = pathway.PathwayNo, PathwayTitle = pathway.Title, UserInfo = model.UserInfo, JourneyJson = model.JourneyJson, SymptomDiscriminator = model.SymptomDiscriminator, }; return(await _justToBeSafeFirstViewModelBuilder.JustToBeSafeFirstBuilder(newModel)); //TODO delete return new Tuple<string, JourneyViewModel>("../JustToBeSafe/JustToBeSafe", await _justToBeSafeFirstViewModelBuilder.JustToBeSafeFirstBuilder(newModel)); } case NodeType.Question: default: return(new Tuple <string, JourneyViewModel>("../Question/Question", model)); } }
private async Task <JourneyViewModel> DeriveJourneyView(string pathwayId, int?age, string pathwayTitle, int[] answers, string postcode) { var questionViewModel = BuildQuestionViewModel(pathwayId, age, pathwayTitle, postcode); var response = await _restClientBusinessApi.ExecuteAsync <Pathway>(new JsonRestRequest(_configuration.GetBusinessApiPathwayUrl(pathwayId, true), Method.GET)) .ConfigureAwait(false); var pathway = response.Data; if (pathway == null) { return(null); } var derivedAge = questionViewModel.UserInfo.Demography.Age == -1 ? pathway.MinimumAgeInclusive : questionViewModel.UserInfo.Demography.Age; var newModel = new JustToBeSafeViewModel { PathwayId = pathway.Id, PathwayNo = pathway.PathwayNo, PathwayTitle = pathway.Title, DigitalTitle = string.IsNullOrEmpty(questionViewModel.DigitalTitle) ? pathway.Title : questionViewModel.DigitalTitle, UserInfo = new UserInfo() { Demography = new AgeGenderViewModel { Age = derivedAge, Gender = pathway.Gender } }, JourneyJson = questionViewModel.JourneyJson, SymptomDiscriminatorCode = questionViewModel.SymptomDiscriminatorCode, State = JourneyViewModelStateBuilder.BuildState(pathway.Gender, derivedAge), CurrentPostcode = questionViewModel.CurrentPostcode }; newModel.StateJson = JourneyViewModelStateBuilder.BuildStateJson(newModel.State); questionViewModel = (await _justToBeSafeFirstViewModelBuilder.JustToBeSafeFirstBuilder(newModel).ConfigureAwait(false)).Item2; //todo refactor tuple away var resultingModel = await AnswerQuestions(questionViewModel, answers) .ConfigureAwait(false); return(resultingModel); }
private async Task <JustToBeSafeViewModel> BuildIdentifiedModel(JustToBeSafeViewModel model) { var response = await _restClient.ExecuteAsync <Pathway>(new JsonRestRequest(_configuration.GetBusinessApiPathwayIdUrl(model.PathwayNo, model.UserInfo.Demography.Gender, model.UserInfo.Demography.Age), Method.GET)); CheckResponse(response); if (response.Data == null) { return(null); } var pathway = response.Data; model.PathwayId = pathway.Id; model.PathwayTitle = pathway.Title; model.PathwayNo = pathway.PathwayNo; model.PathwayTraumaType = pathway.TraumaType; model.State = JourneyViewModelStateBuilder.BuildState(model.UserInfo.Demography.Gender, model.UserInfo.Demography.Age, model.State); model.StateJson = JourneyViewModelStateBuilder.BuildStateJson(model.State); model.CollectedKeywords = new KeywordBag(_keywordCollector.ParseKeywords(pathway.Keywords, false).ToList(), _keywordCollector.ParseKeywords(pathway.ExcludeKeywords, false).ToList()); return(model); }
public async Task <Tuple <string, JourneyViewModel> > JustToBeSafeNextBuilder(JustToBeSafeViewModel model) { model.State = JsonConvert.DeserializeObject <Dictionary <string, string> >(model.StateJson); var questionsWithAnswers = JsonConvert.DeserializeObject <List <QuestionWithAnswers> >(model.QuestionsJson); var selectedQuestion = questionsWithAnswers.FirstOrDefault(q => q.Question.Id == model.SelectedQuestionId); var selectedAnswer = model.SelectedNoneApply() ? new Answer() : selectedQuestion.Answers.FirstOrDefault(a => a.Title.ToLower().StartsWith("yes")) ?? new Answer(); var journey = JsonConvert.DeserializeObject <Journey>(model.JourneyJson).Add( new Journey { Steps = questionsWithAnswers. Select(q => new JourneyStep { QuestionId = q.Question.Id, QuestionNo = q.Question.QuestionNo, QuestionTitle = q.Question.Title, Answer = q.Question.Id == model.SelectedQuestionId ? selectedAnswer : q.Answers.First(a => a.Title.ToLower().StartsWith("no")), IsJustToBeSafe = true }).ToList() }); var questionsJson = await _restfulHelper.GetAsync(string.Format(_configuration.BusinessApiJustToBeSafePartTwoUrl, model.PathwayId, model.SelectedQuestionId ?? "", String.Join(",", questionsWithAnswers.Select(question => question.Question.Id)), selectedQuestion != null && selectedQuestion.Answers.Count > 3)); var questions = JsonConvert.DeserializeObject <List <QuestionWithAnswers> >(questionsJson); journey.Steps = journey.Steps.Where(step => !questions.Exists(question => question.Question.Id == step.QuestionId)).ToList(); return(await BuildNextAction(questions, journey, model, selectedAnswer, selectedQuestion, questionsJson)); }
public async Task <ActionResult> JustToBeSafeFirst(JustToBeSafeViewModel model) { var viewData = await _justToBeSafeFirstViewModelBuilder.JustToBeSafeFirstBuilder(model); return(View(viewData.Item1, viewData.Item2)); }
public async Task <Tuple <string, QuestionViewModel> > JustToBeSafeFirstBuilder(JustToBeSafeViewModel model) { if (model.PathwayId != null) { model = await DoWorkPreviouslyDoneInQuestionBuilder(model); //todo refactor away } var identifiedModel = await BuildIdentifiedModel(model); var questionsWithAnswers = await _restClient.ExecuteAsync <IEnumerable <QuestionWithAnswers> >(new JsonRestRequest(_configuration.GetBusinessApiJustToBeSafePartOneUrl(identifiedModel.PathwayId), Method.GET)); CheckResponse(questionsWithAnswers); if (!questionsWithAnswers.Data.Any()) { var questionViewModel = new QuestionViewModel { PathwayId = identifiedModel.PathwayId, PathwayNo = identifiedModel.PathwayNo, PathwayTitle = identifiedModel.PathwayTitle, PathwayTraumaType = identifiedModel.PathwayTraumaType, DigitalTitle = string.IsNullOrEmpty(identifiedModel.DigitalTitle) ? identifiedModel.PathwayTitle : identifiedModel.DigitalTitle, UserInfo = identifiedModel.UserInfo, JourneyJson = identifiedModel.JourneyJson, State = JsonConvert.DeserializeObject <Dictionary <string, string> >(identifiedModel.StateJson), StateJson = identifiedModel.StateJson, CollectedKeywords = identifiedModel.CollectedKeywords, Journey = JsonConvert.DeserializeObject <Journey>(identifiedModel.JourneyJson), SessionId = model.SessionId, JourneyId = Guid.NewGuid(), FilterServices = model.FilterServices, Campaign = model.Campaign, Source = model.Source, CurrentPostcode = model.CurrentPostcode, EntrySearchTerm = model.EntrySearchTerm, ViaGuidedSelection = model.ViaGuidedSelection, StartParameter = model.StartParameter }; var question = await _restClient.ExecuteAsync <QuestionWithAnswers>(new JsonRestRequest(_configuration.GetBusinessApiFirstQuestionUrl(identifiedModel.PathwayId, identifiedModel.StateJson), Method.GET)); CheckResponse(question); _mappingEngine.Mapper.Map(question.Data, questionViewModel); if (questionViewModel.IsViaGuidedSelection) { _auditLogger.LogEvent(model, EventType.GuidedSelection, questionViewModel.PathwayTitle, "/GuidedSelection"); } _userZoomDataBuilder.SetFieldsForQuestion(questionViewModel); if (questionViewModel.NodeType == NodeType.Page) { // This replicates logic in ViewDeterminer so in future should ideally use that instead. string viewName = "../Question/Page"; if (questionViewModel.PathwayNo.Equals("PC111")) { viewName = "../Question/Custom/NHSUKPage"; } //replace placeholder for covid specific logic. var covidPathways = await GetCovidPathways(model.UserInfo.Demography.Gender, new AgeCategory(model.UserInfo.Demography.Age)); questionViewModel.Content = PageCustomContent.ReplaceCovidPlaceHolderInPageContent(questionViewModel, covidPathways); return(new Tuple <string, QuestionViewModel>(viewName, questionViewModel)); } return(new Tuple <string, QuestionViewModel>("../Question/Question", questionViewModel)); } identifiedModel.Part = 1; identifiedModel.JourneyId = Guid.NewGuid(); identifiedModel.Questions = questionsWithAnswers.Data.ToList(); identifiedModel.QuestionsJson = JsonConvert.SerializeObject(questionsWithAnswers.Data); identifiedModel.JourneyJson = string.IsNullOrEmpty(identifiedModel.JourneyJson) ? JsonConvert.SerializeObject(new Journey()) : identifiedModel.JourneyJson; identifiedModel.FilterServices = model.FilterServices; return(new Tuple <string, QuestionViewModel>("../JustToBeSafe/JustToBeSafe", identifiedModel)); }
public async Task <Tuple <string, JourneyViewModel> > JustToBeSafeFirstBuilder(JustToBeSafeViewModel model) { var questionsJson = await _restfulHelper.GetAsync(string.Format(_configuration.BusinessApiJustToBeSafePartOneUrl, model.PathwayId)); var questionsWithAnswers = JsonConvert.DeserializeObject <List <QuestionWithAnswers> >(questionsJson); if (!questionsWithAnswers.Any()) { var journeyViewModel = new JourneyViewModel { PathwayId = model.PathwayId, PathwayNo = model.PathwayNo, PathwayTitle = model.PathwayTitle, UserInfo = model.UserInfo, JourneyJson = model.JourneyJson, State = JsonConvert.DeserializeObject <Dictionary <string, string> >(model.StateJson) }; var question = JsonConvert.DeserializeObject <QuestionWithAnswers>(await _restfulHelper.GetAsync(string.Format(_configuration.BusinessApiFirstQuestionUrl, model.PathwayId, model.StateJson))); _mappingEngine.Map(question, journeyViewModel); return(new Tuple <string, JourneyViewModel>("../Question/Question", journeyViewModel)); } model.Part = 1; model.Questions = questionsWithAnswers; model.QuestionsJson = questionsJson; model.JourneyJson = string.IsNullOrEmpty(model.JourneyJson) ? JsonConvert.SerializeObject(new Journey()) : model.JourneyJson; return(new Tuple <string, JourneyViewModel>("../JustToBeSafe/JustToBeSafe", model)); }
public async Task <Tuple <string, JourneyViewModel> > JustToBeSafeFirstBuilder(JustToBeSafeViewModel model) { if (model.PathwayId != null) { model = await DoWorkPreviouslyDoneInQuestionBuilder(model); //todo refactor away } var identifiedModel = await BuildIdentifiedModel(model); var questionsJson = await _restfulHelper.GetAsync(_configuration.GetBusinessApiJustToBeSafePartOneUrl(identifiedModel.PathwayId)); var questionsWithAnswers = JsonConvert.DeserializeObject <List <QuestionWithAnswers> >(questionsJson); if (!questionsWithAnswers.Any()) { var journeyViewModel = new JourneyViewModel { PathwayId = identifiedModel.PathwayId, PathwayNo = identifiedModel.PathwayNo, PathwayTitle = identifiedModel.PathwayTitle, DigitalTitle = string.IsNullOrEmpty(identifiedModel.DigitalTitle) ? identifiedModel.PathwayTitle : identifiedModel.DigitalTitle, UserInfo = identifiedModel.UserInfo, JourneyJson = identifiedModel.JourneyJson, State = JsonConvert.DeserializeObject <Dictionary <string, string> >(identifiedModel.StateJson), StateJson = identifiedModel.StateJson, CollectedKeywords = identifiedModel.CollectedKeywords, Journey = JsonConvert.DeserializeObject <Journey>(identifiedModel.JourneyJson), SessionId = model.SessionId, JourneyId = Guid.NewGuid(), FilterServices = model.FilterServices }; var question = JsonConvert.DeserializeObject <QuestionWithAnswers>(await _restfulHelper.GetAsync(_configuration.GetBusinessApiFirstQuestionUrl(identifiedModel.PathwayId, identifiedModel.StateJson))); _mappingEngine.Mapper.Map(question, journeyViewModel); _userZoomDataBuilder.SetFieldsForQuestion(journeyViewModel); return(new Tuple <string, JourneyViewModel>("../Question/Question", journeyViewModel)); } identifiedModel.Part = 1; identifiedModel.JourneyId = Guid.NewGuid(); identifiedModel.Questions = questionsWithAnswers; identifiedModel.QuestionsJson = questionsJson; identifiedModel.JourneyJson = string.IsNullOrEmpty(identifiedModel.JourneyJson) ? JsonConvert.SerializeObject(new Journey()) : identifiedModel.JourneyJson; identifiedModel.FilterServices = model.FilterServices; return(new Tuple <string, JourneyViewModel>("../JustToBeSafe/JustToBeSafe", identifiedModel)); }
public async Task <ActionResult> FirstQuestionDeeplink(JustToBeSafeViewModel model) { ModelState.Clear(); return(await JustToBeSafeFirst(model).ConfigureAwait(false)); }
public async Task <Tuple <string, JourneyViewModel> > JustToBeSafeNextBuilder(JustToBeSafeViewModel model) { model.State = JsonConvert.DeserializeObject <Dictionary <string, string> >(model.StateJson); var questionsWithAnswers = JsonConvert.DeserializeObject <List <QuestionWithAnswers> >(model.QuestionsJson); var selectedQuestion = questionsWithAnswers.FirstOrDefault(q => q.Question.Id == model.SelectedQuestionId); var selectedAnswer = model.SelectedNoneApply() ? new Answer() : selectedQuestion.Answers.FirstOrDefault(a => a.Title.ToLower().StartsWith("yes")) ?? new Answer(); var journey = JsonConvert.DeserializeObject <Journey>(model.JourneyJson).Add( new Journey { Steps = questionsWithAnswers. Select(q => new JourneyStep { QuestionType = q.Question.QuestionType, QuestionId = q.Question.Id, QuestionNo = q.Question.QuestionNo, QuestionTitle = q.Question.Title, Answer = q.Question.Id == model.SelectedQuestionId ? selectedAnswer : q.Answers.First(a => a.Title.ToLower().StartsWith("no")), IsJustToBeSafe = true }).ToList() }); var url = _configuration.GetBusinessApiJustToBeSafePartTwoUrl(model.PathwayId, model.SelectedQuestionId ?? "", String.Join(",", questionsWithAnswers.Select(question => question.Question.Id)), selectedQuestion != null && selectedQuestion.Answers.Count > 3); var response = await _restClient.ExecuteAsync <IEnumerable <QuestionWithAnswers> >(new JsonRestRequest(url, Method.GET)); CheckResponse(response); var questions = response.Data.ToList(); journey.Steps = journey.Steps.Where(step => !questions.Exists(question => question.Question.Id == step.QuestionId)).ToList(); return(await BuildNextAction(questions, journey, model, selectedAnswer, selectedQuestion, JsonConvert.SerializeObject(response.Data))); }