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);
        }