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 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)); }
private async Task <IEnumerable <Pathway> > GetAllPathways(AgeGenderViewModel model) { var url = _configuration.GetBusinessApiGetPathwaysGenderAge(model.Gender, model.Age); var response = await _restClientBusinessApi.ExecuteAsync <List <Pathway> >(new JsonRestRequest(url, Method.GET)).ConfigureAwait(false); return(response.Data); }
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 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)); }
private async Task <IEnumerable <CategoryWithPathways> > GetAllTopics(AgeGenderViewModel model) { var url = _configuration.GetBusinessApiGetCategoriesWithPathwaysGenderAge(model.Gender, model.Age, true); var response = await _restClientBusinessApi.ExecuteTaskAsync <List <CategoryWithPathways> >(CreateJsonRequest(url, Method.GET)); var allTopics = response.Data; var topicsContainingStartingPathways = allTopics.Where( c => c.Pathways.Any(p => p.Pathway.StartingPathway) || c.SubCategories.Any(sc => sc.Pathways.Any(p => p.Pathway.StartingPathway))); return(topicsContainingStartingPathways); }
private async Task <IEnumerable <CategoryWithPathways> > GetAllCategories(AgeGenderViewModel model, string postcode) { var requestPath = _configuration.GetBusinessApiGetCategoriesWithPathwaysGenderAge(model.Gender, model.Age, true); var request = new RestRequest(requestPath, Method.POST); request.AddJsonBody(postcode); var response = await _restClientBusinessApi.ExecuteAsync <List <CategoryWithPathways> >(request).ConfigureAwait(false); var allCategories = response.Data; var categoriesContainingStartingPathways = allCategories.Where( c => c.Pathways.Any(p => p.Pathway.StartingPathway) || c.SubCategories.Any(sc => sc.Pathways.Any(p => p.Pathway.StartingPathway))); return(categoriesContainingStartingPathways); }
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)); }
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 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)); }