private bool ValidatePartnerPayment(PartnerPaymentDto partnerPayment)
        {
            var isValid = true;

            if (partnerPayment.Amount <= 0)
            {
                _log.Warning("Processed partner payment with invalid amount", context: partnerPayment);
            }

            if (string.IsNullOrEmpty(partnerPayment.PaymentRequestId))
            {
                isValid = false;
                _log.Warning("Partner payment without id", context: partnerPayment);
            }

            if (string.IsNullOrEmpty(partnerPayment.CustomerId))
            {
                isValid = false;
                _log.Warning("Partner payment without customer id", context: partnerPayment);
            }

            if (string.IsNullOrEmpty(partnerPayment.PartnerId))
            {
                isValid = false;
                _log.Warning("Partner payment event invoice id type", context: partnerPayment);
            }

            return(isValid);
        }
コード例 #2
0
        public async Task HandlePartnersPaymentProcessedAsync(PartnerPaymentDto partnerPayment)
        {
            if (partnerPayment.Status == PartnerPaymentStatus.Accepted)
            {
                await _successfulPartnersPaymentPublisher.PublishAsync(new SuccessfulPartnersPaymentEvent
                {
                    CustomerId       = partnerPayment.CustomerId,
                    Amount           = partnerPayment.Amount,
                    Timestamp        = partnerPayment.Timestamp,
                    PartnerId        = partnerPayment.PartnerId,
                    PaymentRequestId = partnerPayment.PaymentRequestId,
                    LocationId       = partnerPayment.LocationId,
                });

                _log.Info("Published SuccessfulPartnersPaymentEvent", context: partnerPayment.PaymentRequestId);
            }

            if (partnerPayment.Status == PartnerPaymentStatus.Rejected)
            {
                await _refundPartnersPaymentPublisher.PublishAsync(new RefundPartnersPaymentEvent
                {
                    CustomerId       = partnerPayment.CustomerId,
                    Amount           = partnerPayment.Amount,
                    Timestamp        = partnerPayment.Timestamp,
                    PartnerId        = partnerPayment.PartnerId,
                    PaymentRequestId = partnerPayment.PaymentRequestId,
                    LocationId       = partnerPayment.LocationId,
                });

                _log.Info("Published RefundPartnersPaymentEvent", context: partnerPayment.PaymentRequestId);
            }
        }
 public static TransactionHistoryEntity CreateForPartnersPaymentRefund(PartnerPaymentDto partnerPayment)
 {
     return(new TransactionHistoryEntity
     {
         CustomerId = partnerPayment.CustomerId,
         Timestamp = partnerPayment.Timestamp,
         TransactionId = partnerPayment.PaymentRequestId,
         AssetSymbol = partnerPayment.AssetSymbol,
         Type = OperationType.PartnersPaymentRefunded.ToString(),
     });
 }
        public async Task AddPartnerPaymentRefundAsync(PartnerPaymentDto partnerPayment)
        {
            var historyEntity        = TransactionHistoryEntity.CreateForPartnersPaymentRefund(partnerPayment);
            var partnerPaymentEntity = PartnersPaymentRefundEntity.Create(partnerPayment);

            using (var context = _contextFactory.CreateDataContext())
            {
                context.RefundedPartnersPayments.Add(partnerPaymentEntity);
                context.TransactionHistories.Add(historyEntity);

                await context.SaveChangesAsync();
            }
        }
        public async Task ProcessPartnersPaymentTokensReservedEventAsync(PartnerPaymentDto partnerPayment)
        {
            var isValid = ValidatePartnerPayment(partnerPayment);

            if (!isValid)
            {
                return;
            }

            await AddAdditionalDataToPartnerPayment(partnerPayment);

            await _partnersPaymentsRepository.AddPartnerPaymentAsync(partnerPayment);
        }
コード例 #6
0
 public static PartnersPaymentEntity Create(PartnerPaymentDto partnerPayment)
 {
     return(new PartnersPaymentEntity
     {
         Amount = partnerPayment.Amount,
         CustomerId = partnerPayment.CustomerId,
         Timestamp = partnerPayment.Timestamp,
         PartnerId = partnerPayment.PartnerId,
         PaymentRequestId = partnerPayment.PaymentRequestId,
         LocationId = partnerPayment.LocationId,
         PartnerName = partnerPayment.PartnerName,
         AssetSymbol = partnerPayment.AssetSymbol,
     });
 }
        private async Task AddAdditionalDataToPartnerPayment(PartnerPaymentDto partnerPaymentDto)
        {
            partnerPaymentDto.AssetSymbol = _tokenSymbol;

            var partner = await _partnerManagementClient.Partners.GetByIdAsync(Guid.Parse(partnerPaymentDto.PartnerId));

            if (partner == null)
            {
                _log.Warning("Partner not found for Partner Payment", context: partnerPaymentDto);
                partnerPaymentDto.PartnerName = "N/A";
            }
            else
            {
                partnerPaymentDto.PartnerName = partner.Name;
            }
        }