public EarthquakeFeedService(IEventAggregator eventAggregator, IHttpClient httpClient, IWorldCitiesRepository worldCitiesRepository, IEarthquakeApiQueryBuilder earthquakeApiQueryBuilder, IEarthquakeFeedServiceConfig config, IEarthquakeActivityCollectionBuilder earthquakeActivityCollectionBuilder) { _eventAggregator = eventAggregator; _earthquakeActivityCollectionBuilder = earthquakeActivityCollectionBuilder; _httpClient = httpClient; _worldCitiesRepository = worldCitiesRepository; _earthquakeApiQueryBuilder = earthquakeApiQueryBuilder; _config = config; _earthquakeActivityCollectionBuilder = earthquakeActivityCollectionBuilder; _timeFeedStarted = _lastFeedRetrievalTime.Subtract(config.InitialLoadHistoryTimeSpan); _initialLoadHistoryEarthquakeActivitiesTask = Task.Run(() => LoadEarthQuakeHistory(_timeFeedStarted, _lastFeedRetrievalTime)); _cancellationTokenSource = new CancellationTokenSource(); _cancellationToken = _cancellationTokenSource.Token; _timer = new Timer(TimerTick); _timer.Change(config.RefreshInterval, config.RefreshInterval); Status = string.Format("Past {0} hrs activity retrieval started", config.InitialLoadHistoryTimeSpan.TotalHours); }
public List <EarthquakeActivity> BuildEarthquakeActivities(dynamic earthquakeActivity, IWorldCitiesRepository worldCitiesRepository, int numberOfNearestCities) { int count = earthquakeActivity.features.Count; List <EarthquakeActivity> earthquakeActivities = new List <EarthquakeActivity>(); for (int i = 0; i < count; i++) { double mag = earthquakeActivity.features[i].properties.mag; long time = earthquakeActivity.features[i].properties.time; DateTime dt = _timeHelper.FromUnixTime(time); double longitude = earthquakeActivity.features[i].geometry.coordinates[0]; double latitude = earthquakeActivity.features[i].geometry.coordinates[1]; var geocoordinate = new GeoCoordinate(latitude, longitude); earthquakeActivities.Add(new EarthquakeActivity() { DateTime = dt, Magnitude = mag, Location = geocoordinate, AffectedCities = worldCitiesRepository.GetCitiesNearLocation(geocoordinate, numberOfNearestCities).ToList() } ); } return(earthquakeActivities); }