public Task HandleAsync( OrderStatusChangedToPaidIntegrationEvent integrationEvent) { // Save the updated status in the read model and notify the client via SignalR. return(UpdateReadModelAndSendNotificationAsync(integrationEvent.OrderId, integrationEvent.OrderStatus, integrationEvent.Description, integrationEvent.BuyerId)); }
public async Task Handle(OrderStatusChangedToPaidDomainEvent notification, CancellationToken cancellationToken) { using (LogContext.PushProperty("IntegrationEventContext", $"{notification.OrderId}-{Program.AppName}")) { _logger.LogInformation("----- Handling integration event: {IntegrationEventId} : {AppName} - ({@IntegrationEvent})", notification.OrderId, Program.AppName, notification); var orderStatusChangedToPaidIntegrationEvent = new OrderStatusChangedToPaidIntegrationEvent(notification.OrderId); _eventBus.Publish(orderStatusChangedToPaidIntegrationEvent); } }
public async Task Handle(OrderStatusChangedToPaidDomainEvent orderStatusChangedToPaidDomainEvent, CancellationToken cancellationToken) { _logger.CreateLogger(nameof(OrderStatusChangedToPaidDomainEventHandler)) .LogTrace($"Order with Id: {orderStatusChangedToPaidDomainEvent.OrderId} has been successfully updated with " + $"a status order id: {OrderStatus.Paid.Id}"); var orderStockList = orderStatusChangedToPaidDomainEvent.OrderItems .Select(orderItem => new { orderItem.ProductId, U = orderItem.GetUnits() }); var orderStatusChangedToPaidIntegrationEvent = new OrderStatusChangedToPaidIntegrationEvent(orderStatusChangedToPaidDomainEvent.OrderId, orderStockList); await _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToPaidIntegrationEvent); }
public async Task Handle(OrderStatusChangedToPaidDomainEvent orderStatusChangedToPaidDomainEvent) { _logger.CreateLogger(nameof(OrderStatusChangedToPaidDomainEventHandler)) .LogTrace($"Order with Id: {orderStatusChangedToPaidDomainEvent.OrderId} has been successfully updated with " + $"a status order id: {OrderStatus.Paid.Id}"); var orderStockList = orderStatusChangedToPaidDomainEvent.OrderItems .Select(orderItem => new OrderStockItem(orderItem.ProductId, orderItem.GetUnits())); var orderStatusChangedToPaidIntegrationEvent = new OrderStatusChangedToPaidIntegrationEvent(orderStatusChangedToPaidDomainEvent.OrderId, orderStockList); await _endpoint.Publish(orderStatusChangedToPaidIntegrationEvent); }
public async Task Handle(OrderStatusChangedToPaidDomainEvent orderStatusChangedToPaidDomainEvent, CancellationToken cancellationToken) { var order = await _orderRepository.GetAsync(orderStatusChangedToPaidDomainEvent.OrderId); var buyer = await _buyerRepository.FindByIdAsync(order.GetBuyerId.Value.ToString()); var orderStockList = orderStatusChangedToPaidDomainEvent.OrderItems.Select(orderItem => new OrderStockItem(orderItem.ProductId, orderItem.GetUnits())); var orderStatusChangedToPaidIntegrationEvent = new OrderStatusChangedToPaidIntegrationEvent( orderStatusChangedToPaidDomainEvent.OrderId, order.OrderStatus.Name, buyer.Name, orderStockList); await _messageOutbox.Send(orderStatusChangedToPaidIntegrationEvent); }
public async Task Handle(OrderStatusChangedToPaidIntegrationEvent @event) { using (LogContext.PushProperty("IntegrationEventContext", $"{Program.AppName}")) { _logger.LogInformation("----- Handling integration event: {AppName} - ({@IntegrationEvent})", Program.AppName, @event); //we're not blocking stock/inventory foreach (var orderStockItem in @event.OrderStockItems) { var catalogItem = _catalogContext.CatalogItems.Find(orderStockItem.ProductId); catalogItem.RemoveStock(orderStockItem.Units); } await _catalogContext.SaveChangesAsync(); } }
public async Task Handle(OrderStatusChangedToPaidDomainEvent orderStatusChangedToPaidDomainEvent, CancellationToken cancellationToken) { _logger.CreateLogger <OrderStatusChangedToPaidDomainEventHandler>() .LogTrace("Order with Id: {OrderId} has been successfully updated to status {Status} ({Id})", orderStatusChangedToPaidDomainEvent.OrderId, nameof(OrderStatus.Paid), OrderStatus.Paid.Id); var order = await _orderRepository.GetAsync(orderStatusChangedToPaidDomainEvent.OrderId); var buyer = await _buyerRepository.FindByIdAsync(order.GetBuyerId.Value.ToString()); var orderStockList = orderStatusChangedToPaidDomainEvent.OrderItems .Select(orderItem => new OrderStockItem(orderItem.ProductId, orderItem.GetUnits())); var orderStatusChangedToPaidIntegrationEvent = new OrderStatusChangedToPaidIntegrationEvent( orderStatusChangedToPaidDomainEvent.OrderId, order.OrderStatus.Name, buyer.Name, orderStockList); await _orderingIntegrationEventService.AddAndSaveEventAsync(orderStatusChangedToPaidIntegrationEvent); }
public async Task HandleAsync(IDomainEvent <Order, OrderId, OrderStatusChangedToPaidDomainEvent> domainEvent, CancellationToken cancellationToken) { var order = await _aggregateStore .LoadAsync <Order, OrderId>(domainEvent.AggregateIdentity, CancellationToken.None) .ConfigureAwait(false); var buyer = await _aggregateStore .LoadAsync <Buyer, BuyerId>(order.GetBuyerId, CancellationToken.None) .ConfigureAwait(false); var orderStockList = domainEvent.AggregateEvent.OrderItems .Select(orderItem => new OrderStockItem(orderItem.ProductId, orderItem.Units)); var orderStatusChangedToPaidIntegrationEvent = new OrderStatusChangedToPaidIntegrationEvent( domainEvent.AggregateIdentity.Value, order.OrderStatus.Name, "bob", orderStockList); await _endpoint.Publish(orderStatusChangedToPaidIntegrationEvent); }
public async Task Handle(OrderPaymentSucceededIntegrationEvent @event) { _logger.LogInformation("----- Handling integration event: {IntegrationEventId} at {AppName} - ({@IntegrationEvent})", @event.Id, Program.AppName, @event); // Simulate a work time for setting paid status await Task.Delay(10 * 1000); var order = await _orderingContext.Orders .Include(o => o.OrderItems) .SingleAsync(o => o.Id == @event.OrderId); order.SetPaidStatus(); await _orderingContext.SaveChangesAsync(); var orderStockList = order.OrderItems .Select(orderItem => new OrderStockItem(orderItem.ProductId, orderItem.Units)); var orderStatusChangedToPaidIntegrationEvent = new OrderStatusChangedToPaidIntegrationEvent(order.Id, orderStockList); _eventBus.Publish(orderStatusChangedToPaidIntegrationEvent); await Task.CompletedTask; }
public async Task Handle(OrderStatusChangedToPaidDomainEvent orderStatusChangedToPaidDomainEvent, CancellationToken cancellationToken) { _logger.CreateLogger(nameof(OrderStatusChangedToPaidDomainEventHandler)) .LogTrace( $"Order with Id: {orderStatusChangedToPaidDomainEvent.OrderId} has been successfully updated with " + $"a status order id: {OrderStatus.Paid.Id}"); var order = await _orderRepository.GetAsync(orderStatusChangedToPaidDomainEvent.OrderId); var buyer = await _buyerRepository.FindByIdAsync(order.GetBuyerId.Value.ToString()); var orderStockList = orderStatusChangedToPaidDomainEvent.OrderItems .Select(orderItem => new OrderStockItem(orderItem.ProductId, orderItem.GetUnits())); var orderStatusChangedToPaidIntegrationEvent = new OrderStatusChangedToPaidIntegrationEvent( orderStatusChangedToPaidDomainEvent.OrderId, order.OrderStatus.Name, buyer.Name, orderStockList); await _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToPaidIntegrationEvent.OrderId, orderStatusChangedToPaidIntegrationEvent.OrderStatus, orderStatusChangedToPaidIntegrationEvent); }
public async Task OrderStarted(OrderStatusChangedToPaidIntegrationEvent @event) { var handler = _serviceProvider.GetRequiredService <OrderStatusChangedToPaidIntegrationEventHandler>(); await handler.Handle(@event); }
public Task HandleAsync( OrderStatusChangedToPaidIntegrationEvent @event, [FromServices] OrderStatusChangedToPaidIntegrationEventHandler handler) => handler.Handle(@event);