protected virtual async Task HandleEvent(DomainEvent domainEvent, CancellationToken cancellationToken) { var eventId = domainEvent.GetType().FullName; var criteria = new WebhookSearchCriteria() { IsActive = true, EventIds = new[] { eventId }, Skip = 0, Take = int.MaxValue, ResponseGroup = WebhookResponseGroup.Info.ToString() }; var webHookSearchResult = await _webHookSearchService.SearchAsync(criteria); if (webHookSearchResult.TotalCount > 0) { var eventObject = domainEvent.GetEntityWithInterface <IEntity>() .Select(x => new { objectId = x.Id, objectType = x.GetType().FullName }) .ToArray(); var request = new WebhookRequest { EventId = eventId, EventObject = JsonConvert.SerializeObject(eventObject), WebHooks = webHookSearchResult.Results }; _backgroundJobClient.Schedule(() => NotifyAsync(request, cancellationToken), TimeSpan.FromMinutes(1)); } }
public async Task <ActionResult <WebhookSearchResult> > Search([FromBody] WebhookSearchCriteria criteria) { var result = await _webHookSearchService.SearchAsync(criteria); var webHookIds = result.Results.Select(x => x.Id).ToArray(); var webHookSuccessCounts = await _webHookFeedReader.GetSuccessCountsAsync(webHookIds); var webHookErrorCounts = await _webHookFeedReader.GetErrorCountsAsync(webHookIds); foreach (var webHook in result.Results) { webHook.SuccessCount = webHookSuccessCounts.FirstOrDefault(w => w.Key.EqualsInvariant(webHook.Id)).Value; webHook.ErrorCount = webHookErrorCounts.FirstOrDefault(w => w.Key.EqualsInvariant(webHook.Id)).Value; } return(Ok(result)); }