public async Task Put([FromBody] PaymentModel paymentModel) { var payment = _paymentContext.Payments.Update(paymentModel); await _paymentContext.SaveChangesAsync(); if (paymentModel.IsPaid) { var @event = new OrderPaidIntegrationEvent(paymentModel.OrderId); _eventBus.Publish(@event); } }
private async Task ConfirmOrder(OrderPaidIntegrationEvent message) { using var scope = _serviceProvider.CreateScope(); var orderRepository = scope.ServiceProvider.GetRequiredService <IOrderRepository>(); var order = await orderRepository.GetOrderById(message.OrderId); order.ConfirmOrder(); orderRepository.UpdateOrder(order); if (!await orderRepository.UnitOfWork.Commit()) { throw new DomainException($"An error occured to confirm the order {message.OrderId}"); } }
private async Task FinalizeOrder(OrderPaidIntegrationEvent message) { using (var scope = _serviceProvider.CreateScope()) { var orderRepository = scope.ServiceProvider.GetRequiredService <IOrderRepository>(); var order = await orderRepository.GetById(message.OrderId); order.FinalizeOrder(); orderRepository.Update(order); if (!await orderRepository.UnitOfWork.Commit()) { throw new DomainException($"Problems when finalizing the order {message.OrderId}"); } } }