public TransferFundingSourceEventGenerationService(
     IPaymentLogger paymentLogger,
     IMapper mapper,
     IDataCache <bool> monthEndCache,
     IDataCache <LevyAccountModel> levyAccountCache,
     ILevyBalanceService levyBalanceService,
     IFundingSourcePaymentEventBuilder fundingSourcePaymentEventBuilder,
     ILevyTransactionBatchStorageService levyTransactionBatchStorageService
     )
 {
     this.paymentLogger      = paymentLogger ?? throw new ArgumentNullException(nameof(paymentLogger));
     this.mapper             = mapper ?? throw new ArgumentNullException(nameof(mapper));
     this.monthEndCache      = monthEndCache ?? throw new ArgumentNullException(nameof(monthEndCache));
     this.levyAccountCache   = levyAccountCache ?? throw new ArgumentNullException(nameof(levyAccountCache));
     this.levyBalanceService = levyBalanceService ?? throw new ArgumentNullException(nameof(levyBalanceService));
     this.fundingSourcePaymentEventBuilder   = fundingSourcePaymentEventBuilder ?? throw new ArgumentNullException(nameof(fundingSourcePaymentEventBuilder));
     this.levyTransactionBatchStorageService = levyTransactionBatchStorageService ?? throw new ArgumentNullException(nameof(levyTransactionBatchStorageService));
 }
 public FundingSourceEventGenerationService(
     IPaymentLogger logger,
     IFundingSourceDataContext dataContext,
     ILevyBalanceService levyBalanceService,
     ILevyFundingSourceRepository levyFundingSourceRepository,
     IDataCache <LevyAccountModel> levyAccountCache,
     ICalculatedRequiredLevyAmountPrioritisationService calculatedRequiredLevyAmountPrioritisationService,
     IFundingSourcePaymentEventBuilder fundingSourcePaymentEventBuilder
     )
 {
     this.logger                      = logger ?? throw new ArgumentNullException(nameof(logger));
     this.dataContext                 = dataContext ?? throw new ArgumentNullException(nameof(dataContext));
     this.levyBalanceService          = levyBalanceService ?? throw new ArgumentNullException(nameof(levyBalanceService));
     this.levyFundingSourceRepository = levyFundingSourceRepository ?? throw new ArgumentNullException(nameof(levyFundingSourceRepository));
     this.levyAccountCache            = levyAccountCache ?? throw new ArgumentNullException(nameof(levyAccountCache));
     this.calculatedRequiredLevyAmountPrioritisationService = calculatedRequiredLevyAmountPrioritisationService ?? throw new ArgumentNullException(nameof(calculatedRequiredLevyAmountPrioritisationService));
     this.fundingSourcePaymentEventBuilder = fundingSourcePaymentEventBuilder ?? throw new ArgumentNullException(nameof(fundingSourcePaymentEventBuilder));
 }