using System.Collections.Generic; namespace Microsoft.eShopOnContainers.Services.Ordering.SignalrHub.IntegrationEvents.EventHandling; public class OrderStatusChangedToCompletedIntegrationEventHandler : IIntegrationEventHandler { private readonly IHubContext _hubContext; private readonly ILogger _logger; public OrderStatusChangedToCompletedIntegrationEventHandler( IHubContext hubContext, ILogger logger) { _hubContext = hubContext ?? throw new ArgumentNullException(nameof(hubContext)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } public async Task Handle(OrderStatusChangedToCompletedIntegrationEvent @event) { using (_logger.BeginScope(new List> { new ("IntegrationEventContext", @event.Id) })) { _logger.LogInformation("Handling integration event: {IntegrationEventId} - ({@IntegrationEvent})", @event.Id, @event); await _hubContext.Clients .Group(@event.BuyerName) .SendAsync("UpdatedOrderState", new { OrderId = @event.OrderId, Status = @event.OrderStatus }); } } }