public async Task <IEnumerable <EventBase> > GetLatestEventsAsync(PostcrossingEventTypeEnum postcrossingEventType = PostcrossingEventTypeEnum.All, long?fromPostcrossingEventId = null) { await _semaphore.WaitAsync(); try { var currentLatestPostcrossingEventId = GetLatestPostcrossingEventId(); var fromPostcrossingEvent = fromPostcrossingEventId ?? currentLatestPostcrossingEventId; var postcrossingEvents = await _postcrossingClient.GetPostcrossingEventsAsync(fromPostcrossingEvent); _currentLatestPostcrossingEventId = _postcrossingEventProcessor.GetLatestEventId(postcrossingEvents, currentLatestPostcrossingEventId); if (_postcrossingEngineSettingsService.PersistData) { _eventRepository.Add(postcrossingEvents); } return(_postcrossingEventProcessor.BuildResultForRequestedEventType(postcrossingEventType, fromPostcrossingEvent, postcrossingEvents)); } finally { _semaphore.Release(); } }
public IEnumerable <EventBase> BuildResultForRequestedEventType(PostcrossingEventTypeEnum postcrossingEventType, long fromPostcrossingEventId, IEnumerable <EventBase> postcrossingEvents) { var result = new List <EventBase>(); if (postcrossingEventType.HasFlag(PostcrossingEventTypeEnum.Register)) { result.AddRange(GetEventsStartingFrom <Register>(fromPostcrossingEventId, postcrossingEvents)); } if (postcrossingEventType.HasFlag(PostcrossingEventTypeEnum.Send)) { result.AddRange(GetEventsStartingFrom <Send>(fromPostcrossingEventId, postcrossingEvents)); } if (postcrossingEventType.HasFlag(PostcrossingEventTypeEnum.SignUp)) { result.AddRange(GetEventsStartingFrom <SignUp>(fromPostcrossingEventId, postcrossingEvents)); } if (postcrossingEventType.HasFlag(PostcrossingEventTypeEnum.Upload)) { result.AddRange(GetEventsStartingFrom <Upload>(fromPostcrossingEventId, postcrossingEvents)); } if (postcrossingEventType.HasFlag(PostcrossingEventTypeEnum.Unknown)) { result.AddRange(GetEventsStartingFrom <EventBase>(fromPostcrossingEventId, postcrossingEvents)); } return(result.OrderBy(r => r.EventId)); }
public AssociatedEventType(PostcrossingEventTypeEnum eventType) { EventType = eventType; }