public JsonResult Index(List<HotelDistanceViewModel> hotels, string destinationId, int? page)
        {
            // Information about the Destination Id,
            // This will return Lat/Lon of the destination ID
            LocationInfoRequest locationInfoRequest = new LocationInfoRequest() {DestinationId = destinationId};
            LocationInfoResponse locationInfoResponse = _expediaService.GetGeoSearch(locationInfoRequest);

            if (locationInfoResponse != null)
            {
                if (locationInfoResponse.EanWsError == null)
                {
                    if (locationInfoResponse.LocationInfos.LocationInfo.Any(info => info.DestinationId == destinationId))
                    {
                        var destinationInfo = locationInfoResponse.LocationInfos.LocationInfo.First(info => info.DestinationId == destinationId);

                        var projection = hotels.Select(hotel => new
                            {
                                HotelId = hotel.HotelId,
                                Distance = GetDistance(hotel, destinationInfo)
                            });

                        return Json(new
                        {
                            Landmark = destinationInfo.Description,
                            Hotels = projection.ToList()
                        });
                    }
                }
            }

            return new JsonResult();
        }
 public override LocationInfoResponse GetGeoSearch(LocationInfoRequest locationInfoRequest)
 {
     string path = PathFor("LocationInfoResponse.json");
     string content = Regex.Replace(File.ReadAllText(path), "");
     JsonDeserializer jsonDeserializer = new JsonDeserializer() { RootElement = "LocationInfoResponse" };
     LocationInfoResponse locationInfoResponse = jsonDeserializer.Deserialize<LocationInfoResponse>(new RestResponse() {Content = content});
     return locationInfoResponse;
 }
 public abstract LocationInfoResponse GetGeoSearch(LocationInfoRequest locationInfoRequest);
        public JsonResult Landmarks(string destinationString)
        {
            LocationInfoRequest request = new LocationInfoRequest();
            request.DestinationString = destinationString;

            try
            {
                LocationInfoResponse response = _expediaService.GetGeoSearch(request);

                var landmarks = response.LocationInfos.LocationInfo
                    .Where(info => info.Active && info.GeoAccuracy >= 1 && info.LocationInDestination && info.ActivePropertyCount > 0)
                        .Select(info => new
                        {
                            destinationId = info.DestinationId,
                            description = info.Description
                        })
                        .OrderBy(arg => arg.description) // Order by landmark description
                        .ToList();

                return Json(landmarks, JsonRequestBehavior.AllowGet);

            }
            catch (Exception e)
            {
                Debug.WriteLine(e.Message);
            }

            return new JsonResult();
        }