Esempio n. 1
0
        public ActionResult Create(AttractionViewModel attractionViewModel)
        {
            try
            {
                OperationService op = new OperationService();
                var attractionList  = op.GetAttractions();



                Attraction attraction = new Attraction
                {
                    Name         = attractionViewModel.Name,
                    Price        = attractionViewModel.Price,
                    AttractionId = attractionList == null || !attractionList.Any() ?
                                   "01"  : Convert.ToInt32(attractionList.Max(x => x.AttractionId)) >= 9 ? (Convert.ToInt32(attractionList.Max(x => x.AttractionId)) + 1).ToString() : $"0{Convert.ToInt32(attractionList.Max(x => x.AttractionId)) + 1}"
                };

                if (!op.SaveAttraction(attraction))
                {
                    throw new Exception();
                }

                return(RedirectToAction("Index"));
            }
            catch
            {
                return(View());
            }
        }
Esempio n. 2
0
        public IActionResult Search([FromForm] AttractionViewModel indexModel)
        {
            var indexViewModel = new AttractionViewModel
            {
                SearchInput = indexModel.SearchInput
            };

            // Convert the input latitude and longitude to a Point
            var location = new Point(indexModel.SearchInput.Latitude, indexModel.SearchInput.Longitude)
            {
                SRID = 4326
            };


            var RealLocation = new Point(location.Y, location.X)
            {
                SRID = 4326
            };


            // Fetch the tourist attractions and their
            // distances from the input location
            // using spatial queries.
            var touristAttractions = _dbContext
                                     .TouristAttractions
                                     .Select(t => new { Place = t, Distance = t.Location.Distance(location), RealDistance = new Point(t.Location.Y, t.Location.X)
                                                        {
                                                            SRID = 4326
                                                        }.ProjectTo(2163).Distance(RealLocation.ProjectTo(2163)) })
                                     .ToList();

            // Ordering the result in the ascending order of distance
            indexViewModel.TouristAttractions = touristAttractions
                                                .OrderBy(x => x.Distance)
                                                .Select(t => new TouristAttractionViewModel
            {
                Distance     = Math.Round(t.Distance, 6),
                Latitude     = t.Place.Location.X,
                Longitude    = t.Place.Location.Y,
                Name         = t.Place.Name,
                RealDistance = Math.Round(t.RealDistance / 1000, 6),
            }).ToList();

            return(View("Index", indexViewModel));
        }