Exemple #1
0
        public override async Task <Payment> Pay(PaymentRequest request, ServerCallContext context)
        {
            var createdPayment = await _paymentRepository.CreatePayment(_mapper.Map <PaymentEntity>(request));

            if (!createdPayment.Success)
            {
                throw new RpcException(new Status(StatusCode.InvalidArgument, createdPayment.Message));
            }

            ProducerWrapper.ProduceAsync(_producerConfig, "handle-payment", createdPayment.Data);
            return(_mapper.Map <Payment>(createdPayment.Data));

            throw new RpcException(new Status(StatusCode.OK, "In progress"));
        }
Exemple #2
0
            protected override async Task ExecuteAsync(CancellationToken stoppingToken)
            {
                using (var scope = _serviceScopeFactory.CreateScope())
                {
                    var _paymentRepository = scope.ServiceProvider.GetRequiredService <IPaymentRepository>();

                    await ConsumerWrapper.Consume(_consumerConfig, stoppingToken, "handle-payment", async (cr) =>
                    {
                        var entity    = JsonConvert.DeserializeObject <PaymentEntity>(cr.Message.Value);
                        var payResult = await _paymentRepository.Pay(entity.Id);
                        if (!payResult.Success)
                        {
                            var data = new PaymentSagaEntity(entity.Id, payResult.Message);
                            ProducerWrapper.ProduceAsync(_producerConfig, "handle-payment-error", data);
                        }
                    });
                }
            }