using System.Collections.Generic;
using System.Linq;
using Schaad.Accounting.Datasets;
using Schaad.Accounting.Interfaces;
using Schaad.Accounting.Models;
namespace Schaad.Accounting.Repositories
{
public class BankTransactionRepository : BaseRepository, IBankTransactionRepository
{
private readonly string BANK_TRANSACTIONS = "BankTransactions.xml";
public BankTransactionRepository(ISettingsService settingsService) : base(settingsService)
{
}
///
/// Load bank transactions
///
public List GetBankTransactionList()
{
var transactions = Load>(BANK_TRANSACTIONS);
return transactions != null ? transactions : new List();
}
///
/// Save new bank transactions, ignore existing ones (no update)
///
public int SaveBankTransactionList(string bankAccountNumber, List bankTransactions)
{
var count = 0;
var transactions = GetBankTransactionList();
foreach (var bankTrx in bankTransactions)
{
var transaction = transactions.FirstOrDefault(t => t.Id == bankTrx.Id);
if (transaction == null)
{
transaction = new BankTransaction()
{
Id = bankTrx.Id,
BookingDate = bankTrx.BookingDate,
ValueDate = bankTrx.ValueDate,
Value = (decimal)bankTrx.Value,
Text = bankTrx.Text,
BankAccountNumber = bankAccountNumber,
Debtor = bankTrx.Debtor,
Creditor = bankTrx.Creditor,
};
transactions.Add(transaction);
count++;
}
}
Save(transactions, BANK_TRANSACTIONS);
return count;
}
///
/// Get bank transaction
///
public BankTransaction GetBankTransaction(string id)
{
var transactions = GetBankTransactionList();
return transactions.FirstOrDefault(t => t.Id == id);
}
}
}