/// <summary> /// loads up the view model with paged data when there is a search string and page number /// otherwise it just returns a new view model with a show error flag /// </summary> /// <param name="search"></param> /// <param name="pageNo"></param> /// <param name="refinementFacets">comma separated list of selected facets to filter on</param> /// <returns></returns> private SearchResultsVM GetViewModel(string search, int pageNo, string refinementFacets, bool newSearch) { var returnViewModel = new SearchResultsVM(); if (!string.IsNullOrEmpty(search) && pageNo > 0) { SearchServiceResult searchResult = null; try { searchResult = _searchService.GetPaginatedResult(search, pageNo, _pageSize, refinementFacets, newSearch).Result; } catch { return(null);//search is not working for some reason } returnViewModel.Data = searchResult?.Data?.ToList() ?? new List <SearchResult>(); returnViewModel.ShowResults = true; returnViewModel.Search = search; returnViewModel.PageSize = _pageSize; returnViewModel.Count = searchResult?.Count ?? 0; returnViewModel.Facets = SubmissionHelper.ConvertList(searchResult?.Facets); returnViewModel.TypeOfService = searchResult?.Facets; returnViewModel.CurrentPage = pageNo; if (returnViewModel.Facets != null && (!string.IsNullOrEmpty(refinementFacets)) && !newSearch) { foreach (var facet in returnViewModel.Facets) { facet.Selected = (refinementFacets.Contains(facet.Text)); } } } return(returnViewModel); }
public async Task <IActionResult> SearchResultsGlobal(List <string> source, List <string> scout, List <string> alignment, List <string> theme, List <string> technologyArea, List <string> landscape, List <string> country, List <string> state, List <string> city, List <string> stage, string dateAdded1st, string dateAdded2nd, string dateReviewed1st, string dateReviewed2nd, string globalSearch) { SearchResultsVM searchResultsVM = new SearchResultsVM(); searchResultsVM.UsersList = GetListOfUsers(globalSearch); searchResultsVM.SearchString = globalSearch; //---------------------------------------------------------------------- string uid = User.FindFirstValue(ClaimTypes.NameIdentifier); AspNetUsers thisAspUser = _context.AspNetUsers.Where(x => x.Id == uid).First(); Users thisUser = _context.Users.Where(x => x.UserId == uid).First(); ViewBag.AspUser = thisAspUser; ViewBag.User = thisUser; Startups startups = await _seamedInDal.GetStartups(); var rankedStartups = Ranking(startups, thisUser).ToList(); ViewBag.Startups = rankedStartups; if (globalSearch != null) { Startups foundStartups = await _seamedInDal.GetFilteredStartUps(globalSearch.ToLower()); List <Tuple <int, Record> > rankedStartupsFromGlobal = RankingVersion2(foundStartups, thisUser); searchResultsVM.ResultsList = rankedStartupsFromGlobal; return(View(searchResultsVM)); } else { List <List <string> > listOfLists = new List <List <string> >(); listOfLists.Add(source); listOfLists.Add(scout); listOfLists.Add(alignment); listOfLists.Add(theme); listOfLists.Add(technologyArea); listOfLists.Add(landscape); listOfLists.Add(country); listOfLists.Add(state); listOfLists.Add(city); listOfLists.Add(stage); List <string> convertedList = _seamedInDal.ConvertsListsOfFormSelection(listOfLists); Startups foundStartups = await _seamedInDal.GetFilteredStartUps(convertedList); List <Tuple <int, Record> > rankedStartupsFromFilter = RankingVersion2(foundStartups, thisUser); searchResultsVM.ResultsList = rankedStartupsFromFilter; return(View(searchResultsVM)); } }
// ----------------------------- this view is only for static run (TEMP VIEW) public ActionResult ViewHotelInfo() { SearchResultsVM srvm = new SearchResultsVM() { hotelId = "https://api.sandbox.amadeus.com/v1.2/hotels/UZBOS174?apikey=qEM5DE19KoNf7p4xwiuLealWmaUzTTG5&check_in=2018-08-15&check_out=2018-08-16&referrer=more_rooms_at_this_hotel", startdDate = "15.08.2018", endDate = "16.08.2018", nights = 1, hotelRating = "4", }; return(ViewHotelInfo(srvm)); }
public ActionResult ViewHotelInfoGeneral(GeneralIndexVM obj) { SearchResultsVM hotel = new SearchResultsVM() { destination = obj.desCountry, endDate = obj.endDate, startdDate = obj.startDate, nights = obj.nights, originalLink = obj.originalLink, selectedHotel = 0, hotelRating = obj.hotelRating, hotelId = obj.hotelId, }; return(ViewHotelInfo(hotel)); }
/* Page displaying a summary for the reservation of several rooms */ public ActionResult MultipleResSummary(SearchResultsVM searchResults) { // Get the selected rooms List <Room> rooms = new List <Room>(); foreach (SearchResult r in searchResults.SearchResult) { if (r.Book == true) { rooms.Add(GetRoomById(r.IdRoom)); } } // Get total price decimal totalPrice = 0; // Put data into view model foreach (Room r in rooms) { totalPrice += r.Price; } // Get dates from session var startDate = (DateTime)Session["start_date"]; var endDate = (DateTime)Session["end_date"]; ReservationVM result = new ReservationVM { Rooms = rooms, TotalPrice = totalPrice, StartDate = startDate, EndDate = endDate }; return(View(result)); }
private IActionResult GetSearchResult(string search, int pageNo, string selectedFacets, string errorMessage = "") { //This is commented out as it is causing Facets to not work //Make Sure we have a clean session //_sessionService.ClearSession(); var vm = new SearchResultsVM(); if (!string.IsNullOrEmpty(errorMessage)) { vm.Data = new List <SearchResult>(); vm.Facets = new List <SelectItem>(); vm.FacetsModal = new List <SelectItem>(); vm.ErrorMessage = errorMessage; return(View(vm)); } try { if (string.IsNullOrWhiteSpace(search)) { //reset search //return RedirectToAction("Index", new { isError = true }); vm.ErrorMessage = "Enter the name of a service, its address, postcode or a combination of these"; return(View(vm)); } if (search.Length > _maxSearchChars) { return(View(new SearchResultsVM { Search = search, ShowExceededMaxLengthMessage = true, Facets = new List <SelectItem>(), FacetsModal = new List <SelectItem>(), Data = new List <SearchResult>() })); } var newSearch = SetNewSearch(search); var viewModel = GetViewModel(search, pageNo, selectedFacets, newSearch); if (viewModel == null) { return(GetCustomErrorCode(EnumStatusCode.SearchUnavailableError, "Search unavailable: Search string='" + search + "'")); } ViewBag.BackLink = new BackLinkVM { Show = true, Url = Url.Action("Index", "Search"), Text = "Back" }; TempData["search"] = search; if (viewModel.Count == 0) { viewModel.ErrorMessage = "There are no results matching your search"; } return(View(viewModel)); } catch (Exception ex) { ex.Data.Add("GFCError", "Unexpected error in search :'" + search + "'"); throw ex; } }
/* Page displaying the search results */ public ActionResult SearchResult(Search result) { Search search; // Store search as a session to keep dates and location for reservation and back to results navigation Session["start_date"] = result.StartDate; Session["end_date"] = result.EndDate; Session["location"] = result.Location; Session["hair_dryer"] = result.HasHairDryer; Session["TV"] = result.HasTV; Session["WiFi"] = result.HasWiFi; Session["parking"] = result.HasParking; search = result; List <Room> rooms = new List <Room>(); // Get the list of available rooms if (search.HasHairDryer == false && search.HasParking == false && search.HasTV == false && search.HasWiFi == false) { // Normal search rooms = GetRoomsByDateAndLocation(search.StartDate, search.EndDate, search.Location); } else { // Advanced search rooms = GetRoomsAdvancedSearch(search); } // Put data into view model List <SearchResult> results = new List <SearchResult>(); foreach (Room r in rooms) { string type; if (r.Type == 1) { type = singleRoom; } else { type = doubleRoom; } results.Add(new SearchResult { Book = false, IdRoom = r.IdRoom, Number = r.Number, RoomDescription = r.Description, Type = type, Price = r.Price, HasTV = r.HasTV, HasHairDryer = r.HasHairDryer, HasWiFi = r.Hotel.HasWiFi, HasParking = r.Hotel.HasParking, HotelName = r.Hotel.Name, Location = r.Hotel.Location, Pictures = r.Picture }); } SearchResultsVM resultsVM = new SearchResultsVM() { SearchResult = results, StartDate = search.StartDate, EndDate = search.EndDate }; return(View(resultsVM)); }
public ActionResult SubmitSearch(PackageIndexVM packageData) { DataLayer dl = new DataLayer(); packageData.desCode = (from u in dl.locations where u.city.ToLower() == packageData.desCity.ToLower() select u.code).ToList <string>().FirstOrDefault(); // HOTELS: HotelSearch hs = new HotelSearch(); hs.FillData(packageData.desCode, packageData.sdate, packageData.edate); hs.BuildURL(); string json = hs.GetJson(); dynamic results = JsonConvert.DeserializeObject(json); // convert incoming data to json form SearchResultsVM sr = new SearchResultsVM(); sr.hotelSearchResultsVM = new List <HotelSearchResultsVM>(); sr.startdDate = packageData.sdate; sr.endDate = packageData.edate; sr.nights = ToolsClass.getNumOfNights(ToolsClass.getDate(sr.startdDate), ToolsClass.getDate(sr.endDate)); for (int i = 0; i < results.results.Count; ++i) { ImageSearch image = new ImageSearch(); try { image.SetHotelName(results.results[i].property_name.ToString()); // initialize object by GoogleAPI } catch (Exception) { Thread.Sleep(1000); return(SubmitSearch(packageData)); } int newRating = -1; // initialize to -1 try { if (results.results[i].awards[0].rating != null) { newRating = results.results[i].awards[0].rating; } } catch (Exception) { } if (newRating == -1) { newRating = GenerateRating(); } HotelSearchResultsVM temp = new HotelSearchResultsVM() { originalLink = hs.GetSearchURL(), // to fix the api room problem hotelLink = results.results[i]._links.more_rooms_at_this_hotel.href, hotelName = results.results[i].property_name, hotelDescription = results.results[i].marketing_text, rating = newRating, hotelPrice = results.results[i].total_price.amount, hotelImage = image.GetImage() // image is an object }; sr.hotelSearchResultsVM.Add(temp); } // FLIGHTS: FlightSearch flightSearch = new FlightSearch(); flightSearch.FillData("TLV", packageData.desCode, packageData.sdate, packageData.edate, "Israel", "Tel Aviv", packageData.desCountry, packageData.desCity); // if no results were found (400: bad request) if (flightSearch.GetResponse() != "") { List <PackageDetails> packages = new List <PackageDetails>(); packages.Add(new PackageDetails() { flight = new FlightInfoVM() { departureDate = packageData.sdate, returnDate = packageData.edate, destinationCity = packageData.desCity, destinationCountry = packageData.desCountry, originCity = "Tel Aviv", originCountry = "Israel", } }); PackageDetailsVM newObj = new PackageDetailsVM() { composition = packageData.composition, packages = packages, }; return(View("SearchResults", newObj)); } // for the google map string[] loc = flightSearch.GetLocation().Split(','); double latitude = Double.Parse(loc[0]); double longitude = Double.Parse(loc[1]); // create object to pass to the view FlightSearchResultsVM flightSearchResultsVM = new FlightSearchResultsVM() { departureDate = flightSearch.GetDepartureDate(), destinationCity = flightSearch.GetDestinationCity(), destinationCodeCity = flightSearch.GetDestinationCodeCity(), destinationCountry = flightSearch.GetDestinationCountry(), inbound = flightSearch.GetInbound(), originCity = flightSearch.GetOriginCity(), originCodeCity = flightSearch.GetOriginCodeCity(), originCountry = flightSearch.GetOriginCountry(), outbound = flightSearch.GetOutbound(), price = flightSearch.GetPrice(), returnDate = flightSearch.GetReturnDate(), seatsRemaining = flightSearch.GetSeatsRemaining(), airline = flightSearch.GetAirline(), }; PackageDetailsVM pdvm = new PackageDetailsVM(); pdvm.composition = packageData.composition; var rand = new Random(); foreach (HotelSearchResultsVM h in sr.hotelSearchResultsVM) { PackageDetails pd = new PackageDetails(); pd.hotel = h; int n = rand.Next(flightSearchResultsVM.airline.Count()); FlightInfoVM f = new FlightInfoVM() { airline = flightSearchResultsVM.airline[n], inbound = flightSearchResultsVM.inbound[n], outbound = flightSearchResultsVM.outbound[n], departureDate = flightSearchResultsVM.departureDate, returnDate = flightSearchResultsVM.returnDate, originCountry = flightSearchResultsVM.originCountry, originCity = flightSearchResultsVM.originCity, destinationCountry = flightSearchResultsVM.destinationCountry, destinationCity = flightSearchResultsVM.destinationCity, originCodeCity = flightSearchResultsVM.originCodeCity, destinationCodeCity = flightSearchResultsVM.destinationCodeCity, seatsRemaining = flightSearchResultsVM.seatsRemaining[n], price = flightSearchResultsVM.price[n].ToString() }; pd.flight = f; pd.price = (pd.hotel.hotelPrice + Convert.ToDouble(pd.flight.price)) * Tools.ToolsClass.getPricePercent(pdvm.composition); pdvm.packages.Add(pd); } pdvm.nights = sr.nights; pdvm.latitude = latitude; pdvm.longitude = longitude; return(View("SearchResults", pdvm)); }
public ActionResult ViewHotelInfo(SearchResultsVM srvm) { var json = ""; using (WebClient wc = new WebClient()) { json = wc.DownloadString(srvm.hotelId).ToString(); } dynamic results = JsonConvert.DeserializeObject(json); // save some data from json to list. later we will save this data in the object we will pass to the view List <string> contactLST = HotelDetailsHelper1(results, "contacts"); List <string> amenitiesLST = HotelDetailsHelper1(results, "amenities"); List <RoomVM> roomLST = HotelDetailsHelper2(results); if (roomLST.Count == 0) // we need to fix the api { roomLST = HotelDetailsHelper3(srvm.originalLink, srvm.selectedHotel); } // load reviews DataLayer dl = new DataLayer(); string hotelName = results.property_name; List <HotelReview> hotelReviewsList = (from u in dl.hotelReviews where u.HotelName.ToLower() == hotelName.ToLower() select u).ToList <HotelReview>(); // search for customer name (by email) List <string> customersName = new List <string>(); for (int i = 0; i < hotelReviewsList.Count; ++i) { string tempEmail = hotelReviewsList[i].CustomerEmail; string customerName = (from u in dl.customers where u.Email.ToLower() == tempEmail.ToLower() select u.FullName).ToList <string>()[0]; customersName.Add(customerName); } // create HotelOrderDetailsVM to pass to the view ImageSearch image = new ImageSearch(); image.SetHotelName(results.property_name.ToString()); // initialize object by GoogleAPI image.SavePhotoReferences(); List <string> imageLST = image.GetImages(); HotelOrderDetailsVM hotelOrderDetailsVM = new HotelOrderDetailsVM() { destination = srvm.destination, hotelName = results.property_name, address = "ADDRESS: " + results.address.line1 + ", " + results.address.city, contact = contactLST, amenities = amenitiesLST, rating = srvm.hotelRating, latitude = results.location.latitude, longitude = results.location.longitude, room = roomLST, image = imageLST, apiKey = image.GetKey(), searchResultsVM = srvm, reviews = hotelReviewsList, customersName = customersName }; return(View("ViewHotelInfo", hotelOrderDetailsVM)); }
public ActionResult SubmitSearch(HotelIndexVM hotelsData) { DataLayer dl = new DataLayer(); hotelsData.code = (from u in dl.locations where u.city.ToLower() == hotelsData.city.ToLower() select u.code).ToList <string>().FirstOrDefault(); HotelSearch hs = new HotelSearch(); hs.FillData(hotelsData.code, hotelsData.sdate, hotelsData.edate); hs.BuildURL(); string json = hs.GetJson(); dynamic results = JsonConvert.DeserializeObject(json); // convert incoming data to json form SearchResultsVM sr = new SearchResultsVM(); sr.hotelSearchResultsVM = new List <HotelSearchResultsVM>(); sr.startdDate = hotelsData.sdate; sr.endDate = hotelsData.edate; sr.originalLink = hs.GetSearchURL(); // to fix the api room problem sr.destination = hotelsData.city + ", " + hotelsData.country; if (results.results.Count != 0) { // for the google map string realCode = hs.GetLocation(hotelsData.code, "firstStage"); string[] loc = hs.GetLocation(realCode, "secondStage").Split(','); sr.latitude = Double.Parse(loc[0]); sr.longitude = Double.Parse(loc[1]); } sr.nights = ToolsClass.getNumOfNights(ToolsClass.getDate(sr.startdDate), ToolsClass.getDate(sr.endDate)); for (int i = 0; i < results.results.Count; ++i) { ImageSearch image = new ImageSearch(); try { image.SetHotelName(results.results[i].property_name.ToString()); // initialize object by GoogleAPI } catch (Exception) { Thread.Sleep(1000); return(SubmitSearch(hotelsData)); } int newRating = -1; // initialize to -1 try { if (results.results[i].awards[0].rating != null) { newRating = results.results[i].awards[0].rating; } } catch (Exception) { } if (newRating == -1) { newRating = GenerateRating(); } HotelSearchResultsVM temp = new HotelSearchResultsVM() { hotelLink = results.results[i]._links.more_rooms_at_this_hotel.href, hotelName = results.results[i].property_name, hotelDescription = results.results[i].marketing_text, rating = newRating, hotelPrice = results.results[i].total_price.amount, hotelImage = image.GetImage() // image is an object }; sr.hotelSearchResultsVM.Add(temp); } return(View("SearchResults", sr)); }