public CashoutService( [NotNull] IAssetSettingsService assetSettingsService, [NotNull] IBcnSettingsResolver bcnSettingsResolver, [NotNull] ITransferService transferService, [NotNull] ITransactionsService transactionsService, [NotNull] IMerchantWalletService merchantWalletService, [NotNull] IWalletBalanceValidator walletBalanceValidator, [NotNull] IWalletHistoryService walletHistoryService, [NotNull] RetryPolicySettings retryPolicySettings, [NotNull] ILogFactory logFactory) { _assetSettingsService = assetSettingsService ?? throw new ArgumentNullException(nameof(assetSettingsService)); _bcnSettingsResolver = bcnSettingsResolver ?? throw new ArgumentNullException(nameof(bcnSettingsResolver)); _transferService = transferService ?? throw new ArgumentNullException(nameof(transferService)); _transactionsService = transactionsService ?? throw new ArgumentNullException(nameof(transactionsService)); _merchantWalletService = merchantWalletService ?? throw new ArgumentNullException(nameof(merchantWalletService)); _walletBalanceValidator = walletBalanceValidator ?? throw new ArgumentNullException(nameof(walletBalanceValidator)); _walletHistoryService = walletHistoryService ?? throw new ArgumentNullException(nameof(walletHistoryService)); _log = logFactory.CreateLog(this); _retryPolicy = Policy .Handle <InsufficientFundsException>() .Or <CashoutOperationFailedException>() .Or <CashoutOperationPartiallyFailedException>() .WaitAndRetryAsync( retryPolicySettings.DefaultAttempts, attempt => TimeSpan.FromSeconds(Math.Pow(2, attempt)), (ex, timespan) => _log.Error(ex, "Cashout with retry")); }
public PaymentRequestService( [NotNull] IPaymentRequestRepository paymentRequestRepository, [NotNull] IOrderService orderService, [NotNull] IPaymentRequestPublisher paymentRequestPublisher, [NotNull] ITransferService transferService, [NotNull] IPaymentRequestStatusResolver paymentRequestStatusResolver, [NotNull] ILogFactory logFactory, [NotNull] IWalletManager walletsManager, [NotNull] ITransactionsService transactionsService, [NotNull] ExpirationPeriodsSettings expirationPeriods, [NotNull] IMerchantWalletService merchantWalletService, [NotNull] IDistributedLocksService paymentLocksService, [NotNull] ITransactionPublisher transactionPublisher, [NotNull] IDistributedLocksService checkoutLocksService, [NotNull] IWalletBalanceValidator walletBalanceValidator, [NotNull] RetryPolicySettings retryPolicySettings, [NotNull] IAutoSettleSettingsResolver autoSettleSettingsResolver, [NotNull] IAssetSettingsService assetSettingsService) { _paymentRequestRepository = paymentRequestRepository ?? throw new ArgumentNullException(nameof(paymentRequestRepository)); _orderService = orderService ?? throw new ArgumentNullException(nameof(orderService)); _paymentRequestPublisher = paymentRequestPublisher ?? throw new ArgumentNullException(nameof(paymentRequestPublisher)); _transferService = transferService ?? throw new ArgumentNullException(nameof(transferService)); _paymentRequestStatusResolver = paymentRequestStatusResolver ?? throw new ArgumentNullException(nameof(paymentRequestStatusResolver)); _log = logFactory.CreateLog(this); _walletsManager = walletsManager ?? throw new ArgumentNullException(nameof(walletsManager)); _transactionsService = transactionsService ?? throw new ArgumentNullException(nameof(transactionsService)); _expirationPeriods = expirationPeriods ?? throw new ArgumentNullException(nameof(expirationPeriods)); _merchantWalletService = merchantWalletService ?? throw new ArgumentNullException(nameof(merchantWalletService)); _paymentLocksService = paymentLocksService ?? throw new ArgumentNullException(nameof(paymentLocksService)); _transactionPublisher = transactionPublisher ?? throw new ArgumentNullException(nameof(transactionPublisher)); _checkoutLocksService = checkoutLocksService ?? throw new ArgumentNullException(nameof(checkoutLocksService)); _walletBalanceValidator = walletBalanceValidator ?? throw new ArgumentNullException(nameof(walletBalanceValidator)); _autoSettleSettingsResolver = autoSettleSettingsResolver ?? throw new ArgumentNullException(nameof(autoSettleSettingsResolver)); _assetSettingsService = assetSettingsService ?? throw new ArgumentNullException(nameof(assetSettingsService)); _settlementRetryPolicy = Policy .Handle <InsufficientFundsException>() .Or <SettlementOperationFailedException>() .Or <SettlementOperationPartiallyFailedException>() .WaitAndRetryAsync( retryPolicySettings.SettlementAttempts, attempt => TimeSpan.FromSeconds(Math.Pow(2, attempt)), (ex, timespan) => _log.Error(ex, "Settlement with retry")); _paymentRetryPolicy = Policy .Handle <InsufficientFundsException>() .Or <PaymentOperationFailedException>() .Or <PaymentOperationPartiallyFailedException>() .WaitAndRetryAsync( retryPolicySettings.DefaultAttempts, attempt => TimeSpan.FromSeconds(Math.Pow(2, attempt)), (ex, timespan) => _log.Error(ex, "Payment with retry")); }