private async Task <ActionResult> RedirectToFirstTriageQuestion(JourneyViewModel model) { var pathwayMetadata = await _restClientBusinessApi.ExecuteAsync <PathwayMetaData>( new RestRequest(_configuration.GetBusinessApiPathwayMetadataUrl(model.PathwayNo), Method.GET)).ConfigureAwait(false); var digitalTitle = pathwayMetadata.Data.DigitalTitle; var searchJourneyViewModel = new SearchJourneyViewModel() { SessionId = model.SessionId, PathwayNo = model.PathwayNo.ToUpper(), DigitalTitle = digitalTitle, CurrentPostcode = model.CurrentPostcode, UserInfo = model.UserInfo, FilterServices = model.FilterServices, Campaign = model.Campaign, Source = model.Source, ViaGuidedSelection = model.ViaGuidedSelection, StartParameter = model.StartParameter }; return(RedirectToAction("FirstQuestion", "JustToBeSafe", new RouteValueDictionary { { "pathwayNumber", searchJourneyViewModel.PathwayNo }, { "gender", searchJourneyViewModel.UserInfo.Demography.Gender }, { "age", searchJourneyViewModel.UserInfo.Demography.Age }, { "args", KeyValueEncryptor.EncryptedKeys(searchJourneyViewModel) } })); }
public ActionResult SearchDirect(string gender, int age, string args) { var decryptedArgs = new QueryStringEncryptor(args); var ageGenderViewModel = new AgeGenderViewModel { Gender = gender, Age = age }; var startOfJourney = new SearchJourneyViewModel { SessionId = Guid.Parse(decryptedArgs["sessionId"]), CurrentPostcode = decryptedArgs["postcode"], UserInfo = new UserInfo { Demography = ageGenderViewModel, }, FilterServices = bool.Parse(decryptedArgs["filterServices"]), Campaign = decryptedArgs["campaign"], Source = decryptedArgs["source"], ViaGuidedSelection = GetBoolOrNullFrom(decryptedArgs["viaGuidedSelection"]), StartParameter = decryptedArgs["startParameter"] }; _userZoomDataBuilder.SetFieldsForSearch(startOfJourney); return(View("~\\Views\\Search\\Search.cshtml", startOfJourney)); }
public ActionResult Search(JourneyViewModel model) { if (!ModelState.IsValidField("UserInfo.Demography.Gender") || !ModelState.IsValidField("UserInfo.Demography.Age")) { _userZoomDataBuilder.SetFieldsForDemographics(model); return(View("~\\Views\\Question\\Gender.cshtml", model)); } var startOfJourney = new SearchJourneyViewModel { SessionId = model.SessionId, CurrentPostcode = model.CurrentPostcode, UserInfo = new UserInfo { Demography = model.UserInfo.Demography, CurrentAddress = model.UserInfo.CurrentAddress }, FilterServices = model.FilterServices, Campaign = model.Campaign, Source = model.Source }; _userZoomDataBuilder.SetFieldsForSearch(startOfJourney); return(View(startOfJourney)); }
public async Task <ActionResult> Categories(string gender, int age, string args, bool hasResults = false) { var decryptedArgs = new QueryStringEncryptor(args); var ageGenderViewModel = new AgeGenderViewModel { Gender = gender, Age = age }; var topicsContainingStartingPathways = await GetAllTopics(ageGenderViewModel); var model = new SearchJourneyViewModel { SessionId = Guid.Parse(decryptedArgs["sessionId"]), CurrentPostcode = decryptedArgs["postcode"], UserInfo = new UserInfo { Demography = ageGenderViewModel, }, AllTopics = topicsContainingStartingPathways, FilterServices = bool.Parse(decryptedArgs["filterServices"]), SanitisedSearchTerm = decryptedArgs["searchTerm"], EntrySearchTerm = decryptedArgs["searchTerm"], Campaign = decryptedArgs["campaign"], Source = decryptedArgs["source"], HasResults = hasResults }; _userZoomDataBuilder.SetFieldsForSearchResults(model); return(View(model)); }
public async Task <ActionResult> SearchResultsDirect(string gender, int age, string searchTerm, string args) { var decryptedArgs = new QueryStringEncryptor(args); var ageGenderViewModel = new AgeGenderViewModel { Gender = gender, Age = age }; var model = new SearchJourneyViewModel { SessionId = Guid.Parse(decryptedArgs["sessionId"]), CurrentPostcode = decryptedArgs["postcode"], UserInfo = new UserInfo { Demography = ageGenderViewModel, }, FilterServices = bool.Parse(decryptedArgs["filterServices"]), Campaign = decryptedArgs["campaign"], Source = decryptedArgs["source"], SanitisedSearchTerm = searchTerm, ViaGuidedSelection = GetBoolOrNullFrom(decryptedArgs["viaGuidedSelection"]), StartParameter = decryptedArgs["startParameter"] }; return(await SearchResults(model)); }
public async Task <ActionResult> Category(string gender, int age, string category, string args, bool hasResults = false) { var decryptedArgs = new QueryStringEncryptor(args); var ageGenderViewModel = new AgeGenderViewModel { Gender = gender, Age = age }; var categoriesContainingStartingPathways = await GetAllCategories(ageGenderViewModel, decryptedArgs["postcode"]).ConfigureAwait(false); var model = new SearchJourneyViewModel { SessionId = Guid.Parse(decryptedArgs["sessionId"]), CurrentPostcode = decryptedArgs["postcode"], UserInfo = new UserInfo { Demography = ageGenderViewModel, }, Categories = categoriesContainingStartingPathways.Where(c => c.Category.Title == category), FilterServices = bool.Parse(decryptedArgs["filterServices"]), SanitisedSearchTerm = decryptedArgs["searchTerm"], EntrySearchTerm = decryptedArgs["entrySearchTerm"], Campaign = decryptedArgs["campaign"], Source = decryptedArgs["source"], HasResults = hasResults, ViaGuidedSelection = GetBoolOrNullFrom(decryptedArgs["viaGuidedSelection"]), StartParameter = decryptedArgs["startParameter"] }; _userZoomDataBuilder.SetFieldsForSearchResults(model); return(View("Pathways", model)); }
public static string EncryptedKeys(SearchJourneyViewModel model) { var encryptor = new QueryStringEncryptor(); encryptor["sessionId"] = model.SessionId.ToString(); encryptor["postcode"] = !string.IsNullOrEmpty(model.CurrentPostcode) ? model.CurrentPostcode: string.Empty; encryptor["searchTerm"] = model.SanitisedSearchTerm; 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; return(encryptor.ToString()); }
public async Task Test_LoadFromCitiesCorrectly() { //arrange CityDataService mockCityDataService = ServiceMocks.GetMockCityDataService(3); var mockMessenger = new Mock <IMvxMessenger>(); var mockConnectionService = new Mock <IConnectionService>(); var mockDialogService = new Mock <IDialogService>(); //act var searchJourneyViewModel = new SearchJourneyViewModel(mockMessenger.Object, mockCityDataService, mockConnectionService.Object, mockDialogService.Object); await searchJourneyViewModel.LoadCities(); //assert Assert.AreEqual(searchJourneyViewModel.FromCities.Count, 3); }
public async Task <ActionResult> Search(SearchJourneyViewModel model) { if (!ModelState.IsValidField("UserInfo.Demography.Gender") || !ModelState.IsValidField("UserInfo.Demography.Age")) { _userZoomDataBuilder.SetFieldsForDemographics(model); return(View("~\\Views\\Question\\Gender.cshtml", model)); } if (model.IsCovidJourney) { return(RedirectToGuidedSelection(SearchReservedCovidTerms.SearchTerms.First(), model, true)); } if (model.PathwayNo != null && model.PathwayNo.Equals("none")) { _auditLogger.LogEvent(model, EventType.GuidedSelection, "None", "/GuidedSelection"); model.ViaGuidedSelection = false; return(RedirectToExplainer(model)); } if (model.PathwayNo != null) { return(await RedirectToFirstTriageQuestion(model).ConfigureAwait(false)); } var startOfJourney = new SearchJourneyViewModel { SessionId = model.SessionId, CurrentPostcode = model.CurrentPostcode, UserInfo = new UserInfo { Demography = model.UserInfo.Demography, CurrentAddress = model.UserInfo.CurrentAddress }, FilterServices = model.FilterServices, Campaign = model.Campaign, Source = model.Source, ViaGuidedSelection = model.ViaGuidedSelection, StartParameter = model.StartParameter }; _userZoomDataBuilder.SetFieldsForSearch(startOfJourney); return(View(startOfJourney)); }
public static string EncryptedKeys(SearchJourneyViewModel model) { var encryptor = new QueryStringEncryptor(); encryptor["sessionId"] = model.SessionId.ToString(); encryptor["postcode"] = !string.IsNullOrEmpty(model.CurrentPostcode) ? model.CurrentPostcode : string.Empty; encryptor["searchTerm"] = !string.IsNullOrEmpty(model.SanitisedSearchTerm) ? model.SanitisedSearchTerm : string.Empty; encryptor["entrySearchTerm"] = !string.IsNullOrEmpty(model.EntrySearchTerm) ? model.EntrySearchTerm : 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["startParameter"] = !string.IsNullOrEmpty(model.StartParameter) ? model.StartParameter : string.Empty; return(encryptor.ToString()); }
private async Task <ViewResult> SearchResultsView(SearchJourneyViewModel model) { var ageGroup = new AgeCategory(model.UserInfo.Demography.Age); _userZoomDataBuilder.SetFieldsForSearchResults(model); var requestPath = _configuration.GetBusinessApiPathwaySearchUrl(model.UserInfo.Demography.Gender, ageGroup.Value, true); var request = new RestRequest(requestPath, Method.POST); request.AddJsonBody(new { query = Uri.EscapeDataString(model.SanitisedSearchTerm.Trim()), postcode = Uri.EscapeDataString(model.CurrentPostcode) }); var response = await _restClientBusinessApi.ExecuteAsync <List <SearchResultViewModel> >(request).ConfigureAwait(false); model.Results = response.Data .Take(MAX_SEARCH_RESULTS) .Select(Transform); return(!model.Results.Any() ? NoResults(model) : View("~\\Views\\Search\\SearchResults.cshtml", model)); }
private ActionResult RedirectToExplainer(SearchJourneyViewModel model) { var searchJourneyViewModel = new SearchJourneyViewModel() { SessionId = model.SessionId, CurrentPostcode = model.CurrentPostcode, UserInfo = model.UserInfo, FilterServices = model.FilterServices, Campaign = model.Campaign, Source = model.Source, SanitisedSearchTerm = model.SanitisedSearchTerm, ViaGuidedSelection = model.ViaGuidedSelection, StartParameter = model.StartParameter }; return(RedirectToAction("Explainer", new RouteValueDictionary { { "gender", model.UserInfo.Demography.Gender }, { "age", model.UserInfo.Demography.Age }, { "args", KeyValueEncryptor.EncryptedKeys(searchJourneyViewModel) } })); }
public async Task <ActionResult> SearchResults(SearchJourneyViewModel model) { if (!ModelState.IsValidField("SanitisedSearchTerm")) { return(View("Search", model)); } var ageGroup = new AgeCategory(model.UserInfo.Demography.Age); model.EntrySearchTerm = model.SanitisedSearchTerm; _userZoomDataBuilder.SetFieldsForSearchResults(model); var requestPath = _configuration.GetBusinessApiPathwaySearchUrl(model.UserInfo.Demography.Gender, ageGroup.Value, true); var request = new RestRequest(requestPath, Method.POST); request.AddJsonBody(Uri.EscapeDataString(model.SanitisedSearchTerm.Trim())); var response = await _restClientBusinessApi.ExecuteTaskAsync <List <SearchResultViewModel> >(request); model.Results = response.Data .Take(MAX_SEARCH_RESULTS) .Select(r => Transform(r, model.SanitisedSearchTerm.Trim())); if (!model.Results.Any()) { var encryptedTopicsQueryStringValues = KeyValueEncryptor.EncryptedKeys(model); return(RedirectToRoute("CatergoriesUrl", new { gender = model.UserInfo.Demography.Gender, age = model.UserInfo.Demography.Age.ToString(), args = encryptedTopicsQueryStringValues })); } return(View(model)); }
public async Task <ViewResult> GuidedSelection(string gender, int age, string args) { var decryptedArgs = new QueryStringEncryptor(args); var ageGenderViewModel = new AgeGenderViewModel { Gender = gender, Age = age }; var model = new SearchJourneyViewModel { SessionId = Guid.Parse(decryptedArgs["sessionId"]), CurrentPostcode = decryptedArgs["postcode"], UserInfo = new UserInfo { Demography = ageGenderViewModel, }, FilterServices = bool.Parse(decryptedArgs["filterServices"]), Campaign = decryptedArgs["campaign"], Source = decryptedArgs["source"], IsCovidJourney = bool.Parse(decryptedArgs["isCovidjourney"]), EntrySearchTerm = decryptedArgs["entrySearchTerm"], ViaGuidedSelection = true, StartParameter = decryptedArgs["startParameter"] }; var ageGroup = new AgeCategory(model.UserInfo.Demography.Age); var requestPath = _configuration.GetBusinessApiGuidedPathwaySearchUrl(model.UserInfo.Demography.Gender, ageGroup.Value, true); var request = new RestRequest(requestPath, Method.POST); request.AddJsonBody(new { query = SearchReservedCovidTerms.SearchTerms.First() }); var response = await _restClientBusinessApi.ExecuteAsync <List <GuidedSearchResultViewModel> >(request).ConfigureAwait(false); var guidedModel = Mapper.Map <GuidedSearchJourneyViewModel>(model); guidedModel.GuidedResults = response.Data; return(!guidedModel.GuidedResults.Any() ? View("~\\Views\\Search\\NoResults.cshtml", model) : View("~\\Views\\Search\\GuidedSelection.cshtml", guidedModel)); }
// GET: Journey public ActionResult SearchJourney() { SearchJourneyViewModel model = new SearchJourneyViewModel(); model.Result = new List <Journey>(); using (EFJourneyMapper mapper = new EFJourneyMapper("WebProject2017-DBb")) { model.Result = mapper.GetAll(); } model.JourneysUser = new List <Journey>(); if (((User)Session["User"]) != null) { foreach (Journey j in model.Result) { if (j.Driver.ID == ((User)Session["User"]).ID) { model.JourneysUser.Add(j); } } } return(View(model)); }
public async Task <ActionResult> SearchResults(string q, string gender, int age, bool filterServices) { var ageGroup = new AgeCategory(age); var ageGenderViewModel = new AgeGenderViewModel { Gender = gender, Age = age }; var topicsContainingStartingPathways = await GetAllTopics(ageGenderViewModel); var model = new SearchJourneyViewModel { SanitisedSearchTerm = q.Trim(), UserInfo = new UserInfo { Demography = ageGenderViewModel }, AllTopics = topicsContainingStartingPathways, EntrySearchTerm = q, FilterServices = filterServices }; _userZoomDataBuilder.SetFieldsForSearchResults(model); if (string.IsNullOrEmpty(q)) { return(View("search", model)); } var requestPath = _configuration.GetBusinessApiPathwaySearchUrl(gender, ageGroup.Value, true); var request = new RestRequest(requestPath, Method.POST); request.AddJsonBody(Uri.EscapeDataString(model.SanitisedSearchTerm)); var response = await _restClientBusinessApi.ExecuteTaskAsync <List <SearchResultViewModel> >(request); model.Results = response.Data .Take(MAX_SEARCH_RESULTS) .Select(r => Transform(r, model.SanitisedSearchTerm)); return(View("search", model)); }
public async Task <ActionResult> SearchResults(SearchJourneyViewModel model) { //Could combine these no results? if (!ModelState.IsValidField("SanitisedSearchTerm")) { return(NoResults(model)); } model.EntrySearchTerm = model.SanitisedSearchTerm; if (model.SanitisedSearchTerm == null) { return(NoResults(model)); } if (FeatureRouter.CovidSearchRedirect(HttpContext.Request.Params) && model.IsReservedCovidSearchTerm) { return(RedirectToGuidedSelection(model.SanitisedSearchTerm, model)); } //model.ViaGuidedSelection = false; return(await SearchResultsView(model).ConfigureAwait(false)); }
public async Task <ActionResult> Search(JourneyViewModel model) { if (!ModelState.IsValidField("UserInfo.Demography.Gender") || !ModelState.IsValidField("UserInfo.Demography.Age")) { //var genderModel = new JourneyViewModel {UserInfo = new UserInfo {Demography = model}}; _userZoomDataBuilder.SetFieldsForDemographics(model); return(View("Gender", model)); } var topicsContainingStartingPathways = await GetAllTopics(model.UserInfo.Demography); var startOfJourney = new SearchJourneyViewModel { UserInfo = new UserInfo { Demography = model.UserInfo.Demography }, AllTopics = topicsContainingStartingPathways, FilterServices = model.FilterServices }; _userZoomDataBuilder.SetFieldsForSearch(startOfJourney); return(View(startOfJourney)); }
public ViewResult Explainer(string gender, int age, string args) { var decryptedArgs = new QueryStringEncryptor(args); var ageGenderViewModel = new AgeGenderViewModel { Gender = gender, Age = age }; var model = new SearchJourneyViewModel { SessionId = Guid.Parse(decryptedArgs["sessionId"]), CurrentPostcode = decryptedArgs["postcode"], UserInfo = new UserInfo { Demography = ageGenderViewModel, }, FilterServices = bool.Parse(decryptedArgs["filterServices"]), Campaign = decryptedArgs["campaign"], Source = decryptedArgs["source"], ViaGuidedSelection = GetBoolOrNullFrom(decryptedArgs["viaGuidedSelection"]), StartParameter = decryptedArgs["startParameter"] }; return(View("~\\Views\\Search\\Coronavirus_Explainer.cshtml", model)); }
public ActionResult Profil(SearchJourneyViewModel model) { return(View(model)); }
public void SetFieldsForSearchResults(SearchJourneyViewModel model) { SetUserZoomFields("Search Results for " + model.SanitisedSearchTerm, "SearchResults", model); }
public void SetFieldsForSearch(SearchJourneyViewModel model) { SetUserZoomFields("Search", "Search", model); }
public void Init() { _searchJourneyViewModel = new SearchJourneyViewModel(); }
private ViewResult NoResults(SearchJourneyViewModel model) { return(View("~\\Views\\Search\\NoResults.cshtml", model)); }