public async Task <ActionResult> Details(int id, ApiKeys apiKeys) { Park park = await db.Parks.FindAsync(id); park.CurrentWeatherInfo = new CurrentWeatherInfo(); // Instantiate blank spot for data to bind to park.CurrentWeatherInfo.temperature = 876; // Doesn't matter what's here, will overwrite anyway park.Trails = db.HikingTrails.Where(i => i.ParkId == id).ToList(); await RunBasicParkJson(); await RunWeatherJson(apiKeys, park); await RunHikingJson(apiKeys, park); await GetApiKey(); await GetParkMarker(id); await TrailRatings(); First(); //Second(); ParkTrailRatingViewModel ratingFilter = new ParkTrailRatingViewModel(); ratingFilter.StarRatings = await db.StarRatings.ToListAsync(); var fullList = ratingFilter.StarRating; // All ratings to reference against List <int> ratingOptions = new List <int>(); // No foreach because I am passing all options ratingFilter.StarRating = new SelectList(ratingOptions.Select(p => p).ToList()); ratingFilter.Park = park; // Pass Park ID so it isn't null on the HttpPost ratingFilter.StarRating = new SelectList(ratingFilter.StarRatings.Select(p => p.IndividualStarRating).ToList()); return(View(ratingFilter)); }
// GET: Parks/Details/5 public async Task <ActionResult> Details(int?id, ApiKeys apiKeys, ParkTrailRatingViewModel ratingFilter) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Park park = await db.Parks.FindAsync(id); park.CurrentWeatherInfo = new CurrentWeatherInfo(); // Instantiate blank spot for data to bind to park.CurrentWeatherInfo.temperature = 876; // Doesn't matter what's here, will overwrite anyway park.Trails = db.HikingTrails.Where(i => i.ParkId == id).ToList(); await RunBasicParkJson(); await RunWeatherJson(apiKeys, park); await RunHikingJson(apiKeys, park); await GetApiKey(); await GetParkMarker(id); await TrailRatings(); First(); //Second(); if (park == null) { return(HttpNotFound()); } // ====== Adding New Rating to trails ===================== HikerTrailRating hikerTrailRating = new HikerTrailRating(); // new HikerTrailRating rating // --- Find person logged in ------------- //CheckLoggedInUser(); int hikerNum = CheckUserID(); // Setting variable from returned value hikerTrailRating.HikerId = hikerNum; // Add hiker's ID to Junction Table rating // -- HOW DO I PASS TRAIL ID THROUGH ON SELECTION? ---------------- //List<HikingTrail> hikingTrail = await db.HikerTrailRatings.FindAsync(ratingFilter.HikingTrail).Where(t => t.); HikingTrail HikingTrail = await db.HikingTrails.FindAsync(); HikingTrail hikingTrail = db.HikingTrails.Where(t => t.TrailId == id).FirstOrDefault(); // TAKING FIRST TRAIL ALWAYS // List of trails that match only to the current park hikerTrailRating.TrailId = hikingTrail.TrailId; // Figure out a way to add Rating to Junction Table // Find Hiker's selected rating ratingFilter.StarRatings = await db.StarRatings.Where(p => p.IndividualStarRating == ratingFilter.SelectedRating).ToListAsync(); // Matching Park database park name with filter's Selection ratingFilter.StarRating = new SelectList(ratingFilter.StarRatings.Select(p => p.IndividualStarRating).ToList()); var hikerSelectedRating = ratingFilter.SelectedRating; hikerTrailRating.IndividualRating = hikerSelectedRating; // Add rating to Junction Table Rating db.HikerTrailRatings.Add(hikerTrailRating); // Save results to database db.SaveChanges(); return(View(park)); }