public void Within230Miles() { IDistanceCalculator calculator = new DistanceInMilesCalculator(); var baseLocation = new Coordinate(-0.118092f, 51.509865f); var userLocation = new Coordinate(0.380950f, 54.887292f); var value = calculator.GetDistance(baseLocation, userLocation); Assert.AreEqual(234.2, value, 0.5f); }
public void Within21Miles() { IDistanceCalculator calculator = new DistanceInMilesCalculator(); var baseLocation = new Coordinate(-0.118092f, 51.509865f); var userLocation = new Coordinate(0.423114f, 51.438095f); var value = calculator.GetDistance(baseLocation, userLocation); Assert.AreEqual(23.8, value, 0.5f); }
public void Within37Miles() { IDistanceCalculator calculator = new DistanceInMilesCalculator(); var baseLocation = new Coordinate(-0.118092f, 51.509865f); var userLocation = new Coordinate(0.219620f, 52.016023f); var value = calculator.GetDistance(baseLocation, userLocation); Assert.AreEqual(37.8, value, 0.5f); }
public void Within11Miles() { IDistanceCalculator calculator = new DistanceInMilesCalculator(); var baseLocation = new Coordinate(-0.118092f, 51.509865f); var userLocation = new Coordinate(-0.374243f, 51.502539f); var value = calculator.GetDistance(baseLocation, userLocation); Assert.AreEqual(11.0, value, 0.5f); }
/// <summary> /// Use coordinates city and distance to search for users who are currently from or within London /// </summary> /// <param name="city"></param> /// <param name="baseCoordinate"></param> /// <param name="distance"></param> /// <returns></returns> /// <exception cref="HttpResponseException"></exception> public List <UserModel> GetUsersWithinOrCloseToCity(string city, Coordinate baseCoordinate, float distance) { var request = new RestRequest("users", Method.GET); var response = _client.Execute(request); if ((!response.IsSuccessful)) { throw new HttpResponseException(HttpStatusCode.NotFound); } var allUsers = JsonConvert.DeserializeObject <List <UserModel> >(response.Content); var usersWithinCity = GetUsersWithinCity(city); IDistanceCalculator calculator = new DistanceInMilesCalculator(); //LINQ query to pull users whose current position is within 50 miles of London, or who are listed as being from London //and then return as a list return((from user in allUsers let userCurrentLocation = new Coordinate(user.longitude, user.latitude) where calculator.IsWithinDistance(distance, baseCoordinate, userCurrentLocation) || usersWithinCity.Contains(user.id) select user).ToList()); }