// TEMP ActionResult public ActionResult SearchResults() { HotelIndexVM boobs = new HotelIndexVM() { city = "London", country = "Uk", edate = "29.05.2018", sdate = "27.05.2018", }; return(SubmitSearch(boobs)); }
public ActionResult SubmitSearchGeneral(GeneralIndexVM obj) { HotelIndexVM hotel = new HotelIndexVM() { city = obj.desCity, country = obj.desCountry, sdate = obj.startDate, edate = obj.endDate, }; return(SubmitSearch(hotel)); }
// Index page for hotels (include search) //----------------------------------------------------------------------------------------------------------------------------- public ActionResult Index() { HotelIndexVM hivm = new HotelIndexVM(); DataLayer dl = new DataLayer(); List <string> codes = (from u in dl.locations select u.code).ToList <string>(); var rand = new Random(); while (hivm.hotels.Count < 6) { string code = codes.ElementAt(rand.Next(codes.Count())); HotelSearch hs = new HotelSearch(); hs.FillData(code, "15.07.2018", "18.07.2018"); hs.BuildURL(); string json = hs.GetJson(); dynamic results = JsonConvert.DeserializeObject(json); // convert incoming data to json form if (results.results.Count > 0) { ImageSearch image = new ImageSearch(); try { image.SetHotelName(results.results[0].property_name.ToString()); // initialize object by GoogleAPI } catch (Exception) { Thread.Sleep(1000); return(Index()); } int newRating = -1; // initialize to -1 try { newRating = results.results[0].awards[0].rating; } catch (Exception) { newRating = GenerateRating(); } if (newRating == -1) { newRating = GenerateRating(); } HotelSearchResultsVM temp = new HotelSearchResultsVM() { hotelLink = results.results[0]._links.more_rooms_at_this_hotel.href, hotelName = results.results[0].property_name, hotelDescription = results.results[0].marketing_text, rating = newRating, hotelPrice = results.results[0].total_price.amount, hotelImage = image.GetImage() // image is an object }; hivm.hotels.Add(temp); } } hivm.countries = (from u in dl.locations select u.country).ToList <string>().GroupBy(p => p) .Select(g => g.First()).OrderBy(q => q) .ToList(); hivm.cities = (from u in dl.locations where u.country == hivm.countries.FirstOrDefault() select u.city).ToList <string>().GroupBy(p => p) .Select(g => g.First()).OrderBy(q => q) .ToList(); return(View(hivm)); }
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)); }
public ActionResult GetRandomHotelsByJson(List <string> loc) { HotelIndexVM hivm = new HotelIndexVM(); DataLayer dl = new DataLayer(); List <Locations> locations = GetLocations(loc); var rand = new Random(); string startDate = "13.08.2018"; string endDate = "20.08.2018"; hivm.nights = ToolsClass.getNumOfNights(ToolsClass.getDate(startDate), ToolsClass.getDate(endDate)); while (hivm.hotels.Count < 4) { int random = rand.Next(0, locations.Count); string code = locations[random].code; HotelSearch hs = new HotelSearch(); hs.FillData(code, startDate, endDate); hs.BuildURL(); string json = hs.GetJson(); string originalLink = hs.GetSearchURL(); dynamic results = JsonConvert.DeserializeObject(json); // convert incoming data to json form if (results.results.Count > 0) { ImageSearch image = new ImageSearch(); try { image.SetHotelName(results.results[0].property_name.ToString()); // initialize object by GoogleAPI } catch (Exception) { Thread.Sleep(1000); return(Index()); } int newRating = -1; // initialize to -1 try { newRating = results.results[0].awards[0].rating; } catch (Exception) { newRating = GenerateRating(); } if (newRating == -1) { newRating = GenerateRating(); } HotelSearchResultsVM temp = new HotelSearchResultsVM() { originalLink = originalLink, startDate = startDate, endDate = endDate, location = locations[random].city + ", " + locations[random].country, hotelLink = results.results[0]._links.more_rooms_at_this_hotel.href, hotelName = results.results[0].property_name, hotelDescription = results.results[0].marketing_text, rating = newRating, hotelPrice = results.results[0].total_price.amount, hotelImage = image.GetImage() // image is an object }; hivm.hotels.Add(temp); locations.RemoveAt(random); } } return(Json(hivm, JsonRequestBehavior.AllowGet)); }