private void TestMethodRoFile(ITransactionFileReader reader) { // Arrange const string resourceFile = "Tranzactii_pe_perioada.csv"; // Act var transactions = reader.Read(GlobalSettings.GetResourceFilePath(resourceFile), new CultureInfo("ro-RO")); // Assert Assert.IsTrue(transactions.Count == 3); var lastTransaction = transactions[transactions.Count - 1]; Assert.IsTrue((lastTransaction.TransactionDate == new DateTime(2016, 4, 29)) && (lastTransaction.TransactionType == TransactionType.Debit) && (lastTransaction.TransactionDetails == "Cumparare POS") && (lastTransaction.Amount == 13.9m)); var totalDebits = transactions.Where(t => t.TransactionType == TransactionType.Debit).Sum(t => t.Amount); Assert.IsTrue(totalDebits == 257.57m); }
private void TestMethodEnFile(ITransactionFileReader reader) { // Arrange const string resourceFile = "Inquiry_statements.csv"; // Act var transactions = reader.Read(GlobalSettings.GetResourceFilePath(resourceFile), new CultureInfo("en-US")); // Assert var firstTransaction = transactions[0]; Assert.IsTrue((firstTransaction.TransactionDate == new DateTime(2016, 4, 1)) && (firstTransaction.TransactionType == TransactionType.Debit) && (firstTransaction.TransactionDetails == "Foreign exchange Home'Bank") && (firstTransaction.Amount == 693.17M)); var lastTransaction = transactions[transactions.Count - 1]; Assert.IsTrue((lastTransaction.TransactionDate == new DateTime(2016, 2, 4)) && (lastTransaction.TransactionType == TransactionType.Credit) && (lastTransaction.TransactionDetails == "Incoming funds") && (lastTransaction.Amount == 2500m)); }
public ActionResponse Insert(DataSource dataSource, string transactionReportFile, Period period) { var ret = new ParametrizedActionResponse <int>(); var repoDataSource = GetDataSource(dataSource); if (repoDataSource != null) { var culture = new CultureInfo(repoDataSource.Culture); var transactionsFromFile = period == GlobalConstants.MaxPeriod ? _fileReader.Read(transactionReportFile, culture) : _fileReader.Read(transactionReportFile, period, culture); //removing any duplicates var transactionHash = new HashSet <Transaction>(); foreach (var transaction in transactionsFromFile) { while (transactionHash.Contains(transaction)) { transaction.TransactionDate = transaction.TransactionDate.AddSeconds(1); } transactionHash.Add(transaction); } if (transactionsFromFile.Count > 0) { var selectedPeriod = new Period(transactionsFromFile[0].TransactionDate, transactionsFromFile[transactionsFromFile.Count - 1].TransactionDate); IList <Transaction> dbTransactions = _unitOfWork.TransactionRepository.Set. Where( t => (t.DataSourceId == dataSource.Id) && (period.StartDate <= t.TransactionDate) && (t.TransactionDate <= period.EndDate)).ToList(); foreach (var dbTransaction in dbTransactions) { if (transactionHash.Contains(dbTransaction)) { transactionHash.Remove(dbTransaction); } } foreach ( var transaction in transactionsFromFile.Where(transaction => transactionHash.Contains(transaction))) { transaction.DataSourceId = repoDataSource.Id; _unitOfWork.TransactionRepository.Insert(transaction); } _unitOfWork.Save(); ret.Result = transactionHash.Count; ret.Status = ActionResponseCode.Success; } else { ret.Status = ActionResponseCode.NoActionPerformed; ret.ActionResponseMessage = Resources.ZeroTransactionsInFile; } } else { ret.Result = -1; ret.Status = ActionResponseCode.NotFound; } return(ret); }