2019-01-23 20:02:46 +01:00
using Microsoft.eShopOnContainers.BuildingBlocks.EventBus.Abstractions ;
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Threading.Tasks ;
using Webhooks.API.Model ;
using Webhooks.API.Services ;
2019-02-06 19:59:26 +01:00
using Microsoft.Extensions.Logging ;
2019-01-23 20:02:46 +01:00
namespace Webhooks.API.IntegrationEvents
{
public class OrderStatusChangedToShippedIntegrationEventHandler : IIntegrationEventHandler < OrderStatusChangedToShippedIntegrationEvent >
{
private readonly IWebhooksRetriever _retriever ;
private readonly IWebhooksSender _sender ;
2019-02-06 19:59:26 +01:00
private readonly ILogger _logger ;
public OrderStatusChangedToShippedIntegrationEventHandler ( IWebhooksRetriever retriever , IWebhooksSender sender , ILogger < OrderStatusChangedToShippedIntegrationEventHandler > logger )
2019-01-23 20:02:46 +01:00
{
_retriever = retriever ;
_sender = sender ;
2019-02-06 19:59:26 +01:00
_logger = logger ;
2019-01-23 20:02:46 +01:00
}
public async Task Handle ( OrderStatusChangedToShippedIntegrationEvent @event )
{
var subscriptions = await _retriever . GetSubscriptionsOfType ( WebhookType . OrderShipped ) ;
2019-11-08 15:15:15 +00:00
_logger . LogInformation ( "Received OrderStatusChangedToShippedIntegrationEvent and got {SubscriptionCount} subscriptions to process" , subscriptions . Count ( ) ) ;
2019-01-23 20:02:46 +01:00
var whook = new WebhookData ( WebhookType . OrderShipped , @event ) ;
await _sender . SendAll ( subscriptions , whook ) ;
}
}
}