public async Task <IEnumerable <PlaceViewModel> > GetInRadius(double latitude, double longitude, double radius)
        {
            var origin = SqlGeography.Point(latitude, longitude, 4326);
            var places = await _placeProvider.Get().ConfigureAwait(false);

            var placesInRadius = places.Where(p => p.Coordinates.STDistance(origin).Value <= radius).ToList();
            List <PlaceViewModel> placeResult = new List <PlaceViewModel>();

            foreach (var place in placesInRadius)
            {
                var events      = (await _eventProvider.GetEventsForPlace(place.Id).ConfigureAwait(false)).ToList();
                var eventResult = new List <EventViewModel>();
                foreach (var placeEvent in events)
                {
                    var schedules = (await _scheduleProvider.GetSchedulesForEvent(placeEvent.Id).ConfigureAwait(false)).ToList();
                    eventResult.Add(new EventViewModel(placeEvent, schedules.Select(s => new ScheduleViewModel(s))));
                }
                placeResult.Add(new PlaceViewModel(place, eventResult));
            }

            return(placeResult);
        }