public async Task <IActionResult> Get([FromQuery] PagedTransactionRequest request) { var response = _dataService.GetTransactionsAsync(request); var count = _dataService.GetTotalTransactionCountAsync(request.IgnorePayments); var trxResp = new TransactionsResponse() { Data = await response, Total = await count, Skip = request.Skip, Take = request.Take }; return(Ok(trxResp)); }
public async Task <IEnumerable <TransactionRecord> > GetTransactionsAsync(PagedTransactionRequest request) { using (var connection = new NpgsqlConnection(_connectionString)) { await connection.OpenAsync(); List <TransactionRecord> results = new List <TransactionRecord>(); try { using (var trx = await connection.BeginTransactionAsync()) { using (var cmd = connection.CreateCommand()) { if (request.IgnorePayments) { cmd.CommandText = SELECT_TRX_NO_PAYMENTS; } else { cmd.CommandText = SELECT_TRX_PAYMENTS; } cmd.AddParam("take", request.Take); cmd.AddParam("skip_trx", request.Skip); cmd.Transaction = trx; using (var dr = await cmd.ExecuteReaderAsync()) { while (await dr.ReadAsync()) { results.Add(new TransactionRecord() { TransactionDate = dr.GetDateTime(1), PostDate = dr.GetDateTime(2), ReferenceId = dr.GetString(3), Description = dr.GetString(4), Amount = dr.GetDecimal(5), AccountNumber = dr.GetString(6), CardNumber = dr.GetString(7), CardholderName = dr.GetString(8), Mcc = dr.GetString(9), MccDescription = dr.GetString(10), MccGroup = dr.GetString(11) }); } } } } } finally { await connection.CloseAsync(); } return(results); } }