private async Task ContinueOrderingProcess(IMessageHandlerContext context) { if (Data.GracePeriodIsOver && Data.StockConfirmed) { var stockConfirmedEvent = new OrderStatusChangedToStockConfirmedIntegrationEvent(Data.OrderIdentifier); await context.Publish(stockConfirmedEvent); } }
public async Task Handle(OrderStatusChangedToStockConfirmedDomainEvent orderStatusChangedToStockConfirmedDomainEvent, CancellationToken cancellationToken) { _logger.CreateLogger(nameof(OrderStatusChangedToStockConfirmedDomainEventHandler)) .LogTrace($"Order with Id: {orderStatusChangedToStockConfirmedDomainEvent.OrderId} has been successfully updated with " + $"a status order id: {OrderStatus.StockConfirmed.Id}"); var orderStatusChangedToStockConfirmedIntegrationEvent = new OrderStatusChangedToStockConfirmedIntegrationEvent(orderStatusChangedToStockConfirmedDomainEvent.OrderId); await _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToStockConfirmedIntegrationEvent); }
public async Task Handle(OrderStatusChangedToStockConfirmedDomainEvent orderStatusChangedToStockConfirmedDomainEvent) { _logger.CreateLogger(nameof(OrderStatusChangedToStockConfirmedDomainEventHandler)) .LogTrace($"Order with Id: {orderStatusChangedToStockConfirmedDomainEvent.OrderId} has been successfully updated with " + $"a status order id: {OrderStatus.StockConfirmed.Id}"); var orderStatusChangedToStockConfirmedIntegrationEvent = new OrderStatusChangedToStockConfirmedIntegrationEvent(orderStatusChangedToStockConfirmedDomainEvent.OrderId); await _endpoint.Publish(orderStatusChangedToStockConfirmedIntegrationEvent); }
public async Task Handle(OrderStatusChangedToStockConfirmedDomainEvent orderStatusChangedToStockConfirmedDomainEvent, CancellationToken cancellationToken) { var order = await _orderRepository.GetAsync(orderStatusChangedToStockConfirmedDomainEvent.OrderId); var buyer = await _buyerRepository.FindByIdAsync(order.GetBuyerId.Value.ToString()); var orderStatusChangedToStockConfirmedIntegrationEvent = new OrderStatusChangedToStockConfirmedIntegrationEvent(order.Id, order.OrderStatus.Name, buyer.Name); await _messageOutbox.Send(orderStatusChangedToStockConfirmedIntegrationEvent); }
public async Task Handle(OrderStatusChangedToStockConfirmedDomainEvent orderStatusChangedToStockConfirmedDomainEvent, CancellationToken cancellationToken) { _logger.CreateLogger <OrderStatusChangedToStockConfirmedDomainEventHandler>() .LogTrace("Order with Id: {OrderId} has been successfully updated to status {Status} ({Id})", orderStatusChangedToStockConfirmedDomainEvent.OrderId, nameof(OrderStatus.StockConfirmed), OrderStatus.StockConfirmed.Id); var order = await _orderRepository.GetAsync(orderStatusChangedToStockConfirmedDomainEvent.OrderId); var buyer = await _buyerRepository.FindByIdAsync(order.GetBuyerId.Value.ToString()); var orderStatusChangedToStockConfirmedIntegrationEvent = new OrderStatusChangedToStockConfirmedIntegrationEvent(order.Id, order.OrderStatus.Name, buyer.Name); await _orderingIntegrationEventService.AddAndSaveEventAsync(orderStatusChangedToStockConfirmedIntegrationEvent); }
public async Task HandleAsync(IDomainEvent <Order, OrderId, OrderStatusChangedToStockConfirmedDomainEvent> 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); Console.WriteLine("BuyerId: " + order.GetBuyerId); Console.WriteLine(JsonConvert.SerializeObject(buyer)); var orderStatusChangedToStockConfirmedIntegrationEvent = new OrderStatusChangedToStockConfirmedIntegrationEvent(order.Id.Value, order.OrderStatus.Name, order.GetBuyerId.Value, "bob", order.OrderItems.Sum(x => x.UnitPrice * x.Units)); await _endpoint.Publish(orderStatusChangedToStockConfirmedIntegrationEvent); }
public async Task Handle( OrderStatusChangedToStockConfirmedDomainEvent orderStatusChangedToStockConfirmedDomainEvent, CancellationToken cancellationToken) { _logger.CreateLogger(nameof(OrderStatusChangedToStockConfirmedDomainEventHandler)) .LogTrace( $"Order with Id: {orderStatusChangedToStockConfirmedDomainEvent.OrderId} has been successfully updated with " + $"a status order id: {OrderStatus.StockConfirmed.Id}"); var order = await _orderRepository.GetAsync(orderStatusChangedToStockConfirmedDomainEvent.OrderId); var buyer = await _buyerRepository.FindByIdAsync(order.GetBuyerId.Value.ToString()); var orderStatusChangedToStockConfirmedIntegrationEvent = new OrderStatusChangedToStockConfirmedIntegrationEvent(order.Id, order.OrderStatus.Name, buyer.Name); await _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToStockConfirmedIntegrationEvent.OrderId, orderStatusChangedToStockConfirmedIntegrationEvent.OrderStatus, orderStatusChangedToStockConfirmedIntegrationEvent); }
private async Task ValidateOrder(Order order) { await Task.Delay(10 * 1000); if (await HasOrderItemsOnStock(order)) { order.SetStockConfirmedStatus(); var orderStatusChangedToStockConfirmedIntegrationEvent = new OrderStatusChangedToStockConfirmedIntegrationEvent(order.Id); _eventBus.Publish(orderStatusChangedToStockConfirmedIntegrationEvent); } else { order.SetStockRejectedStatus(); } await _orderingContext.SaveChangesAsync(); }
public async Task Handle(OrderStatusChangedToStockConfirmedDomainEvent notification, CancellationToken cancellationToken) { _logger.LogInformation(" [x] SendStockConfirmedIntegrationEventWhenStockConfirmed: " + "Preparing integration event: OrderStatusChangedToStockConfirmedIntegrationEvent"); var order = await _orderRepository.GetAsync(notification.OrderId); var buyer = await _buyerRepository.FindByIdAsync(Convert.ToInt32(order.GetBuyerId)); var paymentMethod = buyer.PaymentMethods.First(); var integrationEvent = new OrderStatusChangedToStockConfirmedIntegrationEvent(notification.OrderId, buyer: buyer.Name, paymentMethod: PaymentMethodDTO.ToPaymentMethodDto(paymentMethod)); _logger.LogInformation(" [x] SendStockConfirmedIntegrationEventWhenStockConfirmed: " + "Integration event is publishing through event bus. Order ID: {0}, Buyer: {1}, PaymentMethod: {2}", order.Id, buyer.Name, paymentMethod.CardNumber); await _orderingIntegrationEventService.AddIntegrationEventToLog(integrationEvent, null); await _orderingIntegrationEventService.PublishEvent(integrationEvent); }