namespace Basket.API.IntegrationEvents.EventHandling; public class OrderStartedIntegrationEventHandler : IIntegrationEventHandler { private readonly IBasketRepository _repository; private readonly ILogger _logger; public OrderStartedIntegrationEventHandler( IBasketRepository repository, ILogger logger) { _repository = repository ?? throw new ArgumentNullException(nameof(repository)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } public async Task Handle(OrderStartedIntegrationEvent @event) { using (_logger.BeginScope(new List> { new ("IntegrationEventContext", @event.Id) })) { _logger.LogInformation("Handling integration event: {IntegrationEventId} - ({@IntegrationEvent})", @event.Id, @event); await _repository.DeleteBasketAsync(@event.UserId.ToString()); } } }