public async Task SaveFinancialTransaction_DebitCreditSum_Validation( Domain.Models.AccountingEntry.EntrySide side1, int amount1, Domain.Models.AccountingEntry.EntrySide side2, int amount2, bool isValid) { var ledgerId = 666; var model = new Domain.Models.Transaction { Description = "Test", TransactionDate = DateTime.UtcNow, AccountingEntries = new List <Domain.Models.AccountingEntry> { new Domain.Models.AccountingEntry { Amount = amount1, Side = side1, AccountId = 1 }, new Domain.Models.AccountingEntry { Amount = amount2, Side = side2, AccountId = 2 } } }; var request = new SaveTransactionRequest(ledgerId, model); var validator = new SaveTransactionValidator(); var validationResult = await validator.ValidateAsync(request); Assert.AreEqual(isValid, validationResult.IsValid); }
public async Task <IActionResult> Post(SaveTransactionRequest request) { var categories = await _aspireBidgetApi.GetCategoriesAsync(); var accounts = await _aspireBidgetApi.GetAccountsAsync(); //TODO: worth adding problem details if (!accounts.Contains(request.Account)) { return(new BadRequestResult()); } if (!categories.Contains(request.Category)) { return(new BadRequestResult()); } if (!string.IsNullOrEmpty(request.Cleared) && request.Cleared != Options.ClearedSymbolPending && request.Cleared != Options.ClearedSymbolReconciliation && request.Cleared != Options.ClearedSymbolSettled) { return(new BadRequestResult()); } var result = await _aspireBidgetApi.SaveTransactionAsync(new Transaction( request.Date, request.Outflow, request.Inflow, request.Category, request.Account, request.Memo, request.Cleared )); return(result ? new OkResult() : new BadRequestResult()); }
public void SaveTransactionStaging(SaveTransactionRequest transaction) { try { uow.CreateUnitOfWork(); uow.TransactionRepository.SaveTransactionStagingRequest(transaction); uow.Commit(); } catch (Exception e) { throw; } }
public async Task SaveFinancialTransaction_Failure_NoParentLedger() { var ledgerId = 666; var model = new Domain.Models.Transaction { Description = "Test", TransactionDate = DateTime.UtcNow, AccountingEntries = new List <Domain.Models.AccountingEntry> { new Domain.Models.AccountingEntry { Amount = 100, Side = Domain.Models.AccountingEntry.EntrySide.Credit }, new Domain.Models.AccountingEntry { Amount = 100, Side = Domain.Models.AccountingEntry.EntrySide.Debit } } }; var request = new SaveTransactionRequest(ledgerId, model); var handler = new SaveTransactionRequestHandler(_trackingContext, Mapper.Instance); var result = await handler.Handle(request, default(CancellationToken)); }
public async Task SaveTransaction_Success() { var expectedResultCount = 1; var dataGenerationResult1 = _trackingContext.AddTestData <Domain.Entities.Ledger>(expectedResultCount); var dataGenerationResult2 = _trackingContext.AddTestData <Domain.Entities.Transaction>(expectedResultCount); Assert.IsTrue(dataGenerationResult1.Item1); Assert.IsTrue(dataGenerationResult2.Item1); var ledgerId = dataGenerationResult1.Item2[0]; var model = new Domain.Models.Transaction { Description = "Test", TransactionDate = DateTime.UtcNow, AccountingEntries = new List <Domain.Models.AccountingEntry> { new Domain.Models.AccountingEntry { Amount = 100, Side = Domain.Models.AccountingEntry.EntrySide.Credit, AccountId = 1 }, new Domain.Models.AccountingEntry { Amount = 100, Side = Domain.Models.AccountingEntry.EntrySide.Debit, AccountId = 1 } } }; var request = new SaveTransactionRequest(ledgerId, model); var handler = new SaveTransactionRequestHandler(_trackingContext, Mapper.Instance); var result = await handler.Handle(request, default(CancellationToken)); Assert.AreEqual(result, Unit.Value); }
public void SaveTransactionStaging(SaveTransactionRequest transaction) { _transactionService.SaveTransactionStaging(transaction); }
public void SaveTransactionStagingRequest(SaveTransactionRequest request) { Save(DatabaseConnection.connection, SQLStoredProcedures.saveTransactionStaging, request, _connection, _transaction); }