public DtoToLedgerTransactionMapperTest() { TestData = new LedgerTransactionDto { Id = TransactionId, Amount = -123.99M, Narrative = "Foo bar.", TransactionType = typeof(CreditLedgerTransaction).FullName }; }
public void ShouldMapAccountTypeForBalanceAdjustmentTransaction() { TestData = new LedgerTransactionDto { Id = TransactionId, Amount = -123.99M, Narrative = "Foo bar.", Account = StatementModelTestData.ChequeAccount.Name, TransactionType = typeof(BankBalanceAdjustmentTransaction).FullName }; var subject = new Mapper_LedgerTransactionDto_LedgerTransaction(new LedgerTransactionFactory(), new InMemoryAccountTypeRepository()); Result = subject.ToModel(TestData); Assert.AreEqual(StatementModelTestData.ChequeAccount.Name, ((BankBalanceAdjustmentTransaction)Result).BankAccount.Name); }
public async Task <LedgerTransactionDto> EditLedgerTransactionAsync(LedgerTransactionDto transactionDto) { var transaction = await _db.Transactions.FirstOrDefaultAsync(x => x.TransactionId == transactionDto.TransactionId); var originalAmount = transaction.Amount; var originalTransactionType = transaction.TransactionType; var account = await _db.Accounts.SingleOrDefaultAsync(x => x.AccountId == transactionDto.AccountId); transaction.Amount = transactionDto.Amount; transaction.TransactionType = transactionDto.TransactionType; _db.Entry(transaction).State = EntityState.Modified; account.RemoveTransactionAmountFromBalance(originalAmount, originalTransactionType); account.UpdateBalance(transaction); _db.Entry(account).State = EntityState.Modified; await _db.SaveChangesAsync(); return(transactionDto); }
public async Task <LedgerTransactionDto> AddLedgerTransactionAsync(LedgerTransactionDto transactionDto) { var account = await _db.Accounts.SingleOrDefaultAsync(x => x.AccountId == transactionDto.AccountId); var transaction = new LedgerTransaction() { Amount = transactionDto.Amount, DateTimeCreatedUTC = transactionDto.DateTimeCreatedUTC, TransactionType = transactionDto.TransactionType }; account.Transactions.Add(transaction); account.UpdateBalance(transaction); _db.Entry(account).State = EntityState.Modified; await _db.SaveChangesAsync(); transactionDto.TransactionId = transaction.TransactionId; return(transactionDto); }