示例#1
0
        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);
            }
        }
示例#2
0
        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}");
                }
            }
        }