private IPaymentReader GetReader(FileRawPaymentRecordProvider provider) { IPaymentReader reader; var filename = provider.PaymentFilePath; if (filename.EndsWith("_alphapayment.txt")) { reader = new AlphaPaymentReader(provider); } else if (filename.EndsWith("_betapayment.txt")) { reader = new BetaPaymentReader(provider, DateTime.Today); } else { throw new ApplicationException($"Unable to determine type for payment file: {filename}"); } return reader; }
public void HandleFile(string filename, IPaymentReceiver receiver) { ICollection<PaymentBundle> bundles; using (var provider = new FileRawPaymentRecordProvider(filename)) { var reader = GetReader(provider); bundles = reader.ProcessAllRecords(); } foreach (var bundle in bundles) { receiver.StartPaymentBundle(bundle.AccountNumber, bundle.PaymentDate, bundle.Currency); foreach (var payment in bundle.Payments) { receiver.Payment(payment.Amount, payment.Reference); } receiver.EndPaymentBundle(); } }