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); }
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); }
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; } }