private static QuestionInfoViewModel BuildModel(string pathwayNumber, string gender, int age, string args)
        {
            var decryptedArgs           = new QueryStringEncryptor(args);
            var decryptedFilterServices = !decryptedArgs.ContainsKey("filterServices") || string.IsNullOrEmpty(decryptedArgs["filterServices"]) ||
                                          bool.Parse(decryptedArgs["filterServices"]);

            var model = new QuestionInfoViewModel
            {
                SessionId       = Guid.Parse(decryptedArgs["sessionId"]),
                PathwayNo       = pathwayNumber,
                DigitalTitle    = decryptedArgs["digitalTitle"],
                EntrySearchTerm = decryptedArgs["entrySearchTerm"],
                CurrentPostcode = decryptedArgs["postcode"],
                UserInfo        = new UserInfo
                {
                    Demography = new AgeGenderViewModel
                    {
                        Age    = age,
                        Gender = gender
                    }
                },
                FilterServices     = decryptedFilterServices,
                Campaign           = decryptedArgs["campaign"],
                Source             = decryptedArgs["source"],
                ViaGuidedSelection = string.IsNullOrEmpty(decryptedArgs["viaGuidedSelection"]) ? (bool?)null : bool.Parse(decryptedArgs["viaGuidedSelection"]),
                StartParameter     = decryptedArgs["startParameter"]
            };

            return(model);
        }
Beispiel #2
0
        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));
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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));
        }
Beispiel #6
0
        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));
        }
Beispiel #7
0
        public ActionResult Home(JourneyViewModel model, string args)
        {
            if (!string.IsNullOrEmpty(args))
            {
                var decryptedFields = new QueryStringEncryptor(args);
                model.CurrentPostcode = decryptedFields["postcode"];
                model.SessionId       = Guid.Parse(decryptedFields["sessionId"]);
            }

            _userZoomDataBuilder.SetFieldsForInitialQuestion(model);
            return(View("InitialQuestion", 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));
        }
Beispiel #9
0
        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));
        }