private bool TryParseTransaction(string line, out Transaction transaction) { transaction = null; var parts = line.Split('\t'); if (parts.Length != 8) return false; var data = new { AccountNumber = parts[0], Corrency = parts[1], Date1 = DateTime.ParseExact(parts[2], "yyyyMMdd", CultureInfo.InvariantCulture), BalanceBefore = decimal.Parse(parts[3], new NumberFormatInfo { NumberDecimalSeparator = "," }), BalanceAfter = decimal.Parse(parts[4], new NumberFormatInfo { NumberDecimalSeparator = "," }), Date2 = DateTime.ParseExact(parts[5], "yyyyMMdd", CultureInfo.InvariantCulture), Amount = decimal.Parse(parts[6], new NumberFormatInfo { NumberDecimalSeparator = ","}), Description = parts[7] }; transaction = new Transaction { AccountNumber = data.AccountNumber, Date = data.Date1, BalanceBefore = data.BalanceBefore, BalanceAfter = data.BalanceAfter, Debit = data.Amount > 0 ? data.Amount : 0, Credit = data.Amount < 0 ? Math.Abs(data.Amount) : 0, Description = data.Description }; return true; }
private void Categorize(Transaction transaction, IEnumerable<ICategorizer> categorizers) { foreach (var categorizer in categorizers) { var category = categorizer.FindCategory(transaction.Description); if (category != null) { transaction.SubCategory = category; return; } } }