public async Task <Transaction> UpdateTransaction(string authId, UpdateTransactionInput input)
    {
        await using var connection = await _databaseConnectionFactory.GetConnection();

        var existingTransaction = await connection.QuerySingleOrDefaultAsync <TransactionRecord>(
            "SELECT id FROM transaction WHERE auth_id = @AuthId AND id = @TransactionId", new
        {
            AuthId        = authId,
            TransactionId = input.TransactionId
        });

        if (existingTransaction == null)
        {
            throw new Exception("Transaction not found"); // TODO - Handle with custom exception
        }
        var sql =
            "UPDATE transaction SET category = @Category, details = @Details WHERE auth_id = @AuthId AND id = @TransactionId";

        var affectedRows = await connection.ExecuteAsync(sql,
                                                         new
        {
            Category = input.Category, Details = input.Details, TransactionId = input.TransactionId, AuthId = authId
        });

        Console.WriteLine($"Affected rows: {affectedRows}");

        var transaction = (await GetTransactionsForIds(new[] { input.TransactionId })).First();

        return(transaction);
    }
예제 #2
0
    public async Task <IActionResult> UpdateTransaction(UpdateTransactionInput input)
    {
        var authId = GetAuthId();

        var result = await _transactionsService.UpdateTransaction(authId, input);

        return(Ok(result));
    }
        public async Task CanUpdateTransaction()
        {
            var input = GetInput();
            var importedTransactions = await _transactionsRepository.ImportTransactions(_authId, input);

            var transaction = importedTransactions.First();

            var category    = "Food and drink";
            var details     = "New World Weekly Shop";
            var updateInput = new UpdateTransactionInput(transaction.Id, category, details);

            var updatedTransaction = await _transactionsRepository.UpdateTransaction(_authId, updateInput);

            Assert.Equal(transaction.Id, updatedTransaction.Id);
            Assert.Equal(category, updatedTransaction.Category);
            Assert.Equal(details, updatedTransaction.Details);
        }
예제 #4
0
 public Task <Transaction> UpdateTransaction(string authId, UpdateTransactionInput input)
 {
     return(_transactionsRepository.UpdateTransaction(authId, input));
 }