Example #1
0
        public async Task GetTrailName(HikingTrail hikingTrail, HikingTrailJsonInfo hikingTrailJsonInfo)
        {
            // Do I need to check Foreign Key ID like we do with User ID?
            string fulltrailName = hikingTrailJsonInfo.trails[0].name;

            hikingTrail.TrailName = fulltrailName;
            await db.SaveChangesAsync();
        }
        // 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));
        }
        // ------------------ Get Trail Details --------------------
        public async Task GetTrailDetails(Park Park, List <Trail> trailInfo)
        {
            var         foreignParkId = Park.ParkId;
            HikingTrail hiking        = db.HikingTrails.Where(t => t.ParkId == foreignParkId).FirstOrDefault(); // Matching park id with foreign id

            for (var i = 0; i < trailInfo.Count; i++)
            {
                HikingTrail hikingTrail = new HikingTrail(); // I want to add a new record
                hikingTrail.HikingApiCode   = trailInfo[i].id.ToString();
                hikingTrail.ParkId          = foreignParkId;
                hikingTrail.TrailName       = trailInfo[i].name.ToString();
                hikingTrail.TrailDifficulty = trailInfo[i].difficulty.ToString();

                string trailSummary = trailInfo[i].summary;
                if (trailSummary == null)
                {
                    hikingTrail.TrailSummary = "No information available at this time.";
                    await db.SaveChangesAsync();
                }
                else
                {
                    hikingTrail.TrailSummary = trailSummary;
                    await db.SaveChangesAsync();
                }

                // Convert long decimal to a 2 decimal number
                double TrailLength       = trailInfo[i].length;
                double SimpletrailLength = Math.Round(TrailLength, 2);
                hikingTrail.TrailLength = SimpletrailLength;

                // Trail Conditions
                string trailCondition = trailInfo[i].conditionDetails;
                if (trailCondition != null)
                {
                    hikingTrail.TrailCondition = trailCondition;
                    await db.SaveChangesAsync();
                }
                else
                {
                    hikingTrail.TrailCondition = "No condition status available at this time";
                    await db.SaveChangesAsync();
                }

                //await GetAverageTrailRating();

                // Check to see if it already exists
                var trailCode = db.HikingTrails.Where(c => c.HikingApiCode == hikingTrail.HikingApiCode).FirstOrDefault();
                if (trailCode == null)
                {
                    db.HikingTrails.Add(hikingTrail);
                    await db.SaveChangesAsync();
                }
            }
            await db.SaveChangesAsync();
        }
Example #4
0
        public async Task <ActionResult> Create([Bind(Include = "TrailId,TrailName,TrailDifficulty,TrailLat,TrailLng")] HikingTrail trail)
        {
            if (ModelState.IsValid)
            {
                db.HikingTrails.Add(trail);
                await db.SaveChangesAsync();

                return(RedirectToAction("Index"));
            }

            return(View(trail));
        }
        public async Task ApplyHikingTrailValues(Park park, List <Trail> trailInfo)
        {
            foreach (var individualTrail in trailInfo)
            {
                HikingTrail hikingTrail = new HikingTrail
                {
                    TrailName       = individualTrail.Name,
                    TrailLength     = Math.Round(individualTrail.Length, 2),
                    TrailDifficulty = individualTrail.Difficulty,
                    HikingApiCode   = individualTrail.Id,
                    ParkId          = park.ParkId
                };

                string trailSummary = individualTrail.Summary;
                if (trailSummary == null)
                {
                    hikingTrail.TrailSummary = "No information available at this time.";
                    await _context.SaveChangesAsync();
                }
                else
                {
                    hikingTrail.TrailSummary = trailSummary;
                    await _context.SaveChangesAsync();
                }

                // Trail Conditions
                string trailCondition = individualTrail.ConditionDetails;
                if (trailCondition != null)
                {
                    hikingTrail.TrailCondition = trailCondition;
                    await _context.SaveChangesAsync();
                }
                else
                {
                    hikingTrail.TrailCondition = "No condition status available at this time";
                    await _context.SaveChangesAsync();
                }

                // Check to see if it already exists before adding to database
                // Write conditional to delete trail if park is deleted
                //!!!!!! Currently not adding a few parks because I deleted the original park, but not the associated trails
                var trailCode = _context.HikingTrails.Where(c => c.HikingApiCode == hikingTrail.HikingApiCode).FirstOrDefault();
                if (trailCode == null)
                {
                    _context.HikingTrails.Add(hikingTrail);
                }
                await _context.SaveChangesAsync();
            }
            await _context.SaveChangesAsync();
        }
Example #6
0
        // GET: Trails/Details/5
        public async Task <ActionResult> Details(int?id, HikingTrail hikingTrail, HikingTrailJsonInfo hikingTrailJsonInfo)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            var trailInfo = await db.HikingTrails.FindAsync(id);

            await GetTrailName(hikingTrail, hikingTrailJsonInfo);

            if (trailInfo == null)
            {
                return(HttpNotFound());
            }
            return(View(trailInfo));
        }