public async Task <Result <CreditCardRefundResult> > Refund(CreditCardRefundMoneyRequest request, CreditCardPaymentInfo paymentInfo, PaymentProcessors paymentProcessor, string maskedNumber, string referenceCode, int paymentId, ApiCaller apiCaller, int agentId) { return(await RefundInPayfort() .Tap(WriteAuditLog)); async Task <Result <CreditCardRefundResult> > RefundInPayfort() { return(request.Amount.IsGreaterThan(0m) ? paymentProcessor == PaymentProcessors.Payfort ? await _payfortService.Refund(request) : await _nGeniusRefundService.Refund(paymentId, request.Amount.ToMoneyAmount(request.Currency), paymentInfo.ExternalId, request.MerchantReference) : new CreditCardRefundResult(default, default, request.MerchantReference));
public async Task <Result <CreditCardCaptureResult> > Capture(CreditCardCaptureMoneyRequest request, CreditCardPaymentInfo paymentInfo, PaymentProcessors paymentProcessor, string maskedNumber, Currencies currency, ApiCaller apiCaller, int agentId) { return(await Capture() .Tap(WriteAuditLog)); Task <Result <CreditCardCaptureResult> > Capture() { return(paymentProcessor switch { PaymentProcessors.Payfort => _payfortService.Capture(request), PaymentProcessors.NGenius => _nGeniusPaymentService.Capture(paymentInfo.ExternalId, paymentInfo.InternalReferenceCode, request.Amount.ToMoneyAmount(request.Currency)), _ => throw new NotSupportedException($"Payment processor `{nameof(paymentProcessor)}` not supported") });