Beispiel #1
0
        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) }
            }));
        }
Beispiel #2
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));
        }
        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));
        }
Beispiel #5
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 #6
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 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());
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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());
        }
Beispiel #11
0
        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));
        }
Beispiel #12
0
        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));
        }
Beispiel #16
0
        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));
        }
Beispiel #17
0
        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));
        }
Beispiel #18
0
        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));
        }
Beispiel #19
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));
        }
 public ActionResult Profil(SearchJourneyViewModel model)
 {
     return(View(model));
 }
Beispiel #21
0
 public void SetFieldsForSearchResults(SearchJourneyViewModel model)
 {
     SetUserZoomFields("Search Results for " + model.SanitisedSearchTerm, "SearchResults", model);
 }
Beispiel #22
0
 public void SetFieldsForSearch(SearchJourneyViewModel model)
 {
     SetUserZoomFields("Search", "Search", model);
 }
Beispiel #23
0
 public void Init()
 {
     _searchJourneyViewModel = new SearchJourneyViewModel();
 }
Beispiel #24
0
 private ViewResult NoResults(SearchJourneyViewModel model)
 {
     return(View("~\\Views\\Search\\NoResults.cshtml", model));
 }