public ActionResult GetActivities(Guid?id) { var userId = User.Identity.GetUserId(); Traveler traveler = db.Travelers.Include("Interests").Include("CurrentItinerary").FirstOrDefault(t => t.ApplicationUserId == userId); if (id != null && id != traveler.CurrentItineraryID) { traveler.CurrentItineraryID = id; traveler.CurrentItinerary = db.Itineraries.Find(id); } if ((traveler.CurrentItinerary.StartDate - DateTime.Today).TotalDays < MAXFORECAST) { string state = traveler.CurrentItinerary.City.Split(',')[1].Trim().Split(',')[0]; string city = traveler.CurrentItinerary.City.Split(',')[0]; List <AccuWeatherLocationResponse> responses = AccuWeatherAPIHandler.GetLocation(state, city).Result; if (responses.Count > 0) { string key = responses[0].Key; AccuWeatherForecast forecast = AccuWeatherAPIHandler.GetForecast(key).Result; if (forecast.Headline.Text.ToLower().Contains("rain") || forecast.Headline.Text.ToLower().Contains("snow") || GetAverageTemp(forecast) < 40) { traveler.Interests.Remove(db.Interests.FirstOrDefault(i => i.Name == "Park")); } ViewBag.AverageTemp = GetAverageTemp(forecast); } } ViewBag.Activities = GetMatchingActivities(traveler); ViewBag.Popular = GetTopN(ViewBag.Activities, 5).ToArray(); ViewBag.Activities = ViewBag.Activities.ToArray(); ViewBag.HotelLat = decimal.Parse(traveler.CurrentItinerary.HotelLocationString.Split(',')[0]); ViewBag.HotelLng = decimal.Parse(traveler.CurrentItinerary.HotelLocationString.Split(',')[1]); return(View()); }
private double GetAverageTemp(AccuWeatherForecast forecast) { double output = 0; foreach (Dailyforecast daily in forecast.DailyForecasts) { output += GetDailyAverage(daily); } return(output / forecast.DailyForecasts.Length); }