public async Task <ActionResult> Index(EstablishmentSearchViewModel model) { model.SearchQueryString = Request.QueryString.ToString(); var retVal = await SearchByUrnAsync(model); if (retVal != null) { return(retVal); } model.SavedFilterToken = TempData["SavedToken"]?.ToString(); // if the user navigates back to or reloads the search results => look up saved results token if (Request.IsAuthenticated && string.IsNullOrEmpty(model.SavedFilterToken)) { var userId = User.Identity.GetUserId(); model.SavedFilterToken = (await _userPreferenceRepository.GetAsync(userId))?.SavedSearchToken; } var payload = await GetEstablishmentSearchPayload(model); if (!payload.Success) { model.Error = payload.ErrorMessage; } return(await ProcessEstablishmentsSearch(model, payload.Object)); }
private async Task <ActionResult> GetLandingPage(ClaimsPrincipal principal) { // Redirect to the user's last saved search token if there is one. var searchToken = (await _userPreferenceRepository.GetAsync(principal.GetUserId()))?.SavedSearchToken; if (searchToken != null && (await _tokenRepository.GetAsync(searchToken)) != null) { TempData["SavedToken"] = searchToken; TempData["UserId"] = principal.GetUserId(); return(Redirect(string.Concat(Url.RouteUrl("EstabSearch"), "?tok=", searchToken))); } if (principal.IsInRole(EdubaseRoles.ESTABLISHMENT)) { var urn = await _securityService.GetMyEstablishmentUrn(principal); if (urn.HasValue) { return(RedirectToRoute("EstabDetails", new { id = urn })); } } else if (principal.IsInRole(EdubaseRoles.EDUBASE_GROUP_MAT)) { var uid = await _securityService.GetMyMATUId(principal); if (uid.HasValue) { return(RedirectToRoute("GroupDetails", new { id = uid })); } } else if (principal.IsInRole(EdubaseRoles.IEBT)) { var selectedTab = string.Concat("SelectedTab=", SearchViewModel.Tab.Establishments); var searchType = string.Concat("SearchType=", eSearchType.EstablishmentAll); var estTypes = string.Join("&", new[] { ET.NonmaintainedSpecialSchool, ET.BritishSchoolsOverseas, ET.CityTechnologyCollege, ET.OtherIndependentSchool, ET.OnlineProvider }.Select(x => $"{EstablishmentSearchViewModel.BIND_ALIAS_TYPEIDS}={(int)x}")); var estStatuses = string.Join("&", new[] { ES.Open, ES.OpenButProposedToClose }.Select(x => $"{EstablishmentSearchViewModel.BIND_ALIAS_STATUSIDS}={(int) x}")); return(Redirect(string.Concat( Url.RouteUrl("EstabSearch"), "?", selectedTab, "&", searchType, "&", estTypes, "&", estStatuses))); } return(RedirectToAction("Index", "Search")); }