Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        /// <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());
        }