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);
        }
Beispiel #2
0
        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());
        }
Beispiel #3
0
 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);
        }
Beispiel #6
0
 public void SaveTransactionStaging(SaveTransactionRequest transaction)
 {
     _transactionService.SaveTransactionStaging(transaction);
 }
 public void SaveTransactionStagingRequest(SaveTransactionRequest request)
 {
     Save(DatabaseConnection.connection, SQLStoredProcedures.saveTransactionStaging, request, _connection, _transaction);
 }