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));
            }
        }
示例#2
0
        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));
        }