🐛 Fix transaction query

 Add orderes query
This commit is contained in:
2025-09-08 14:26:17 +08:00
parent 8dddfe77cd
commit 1a89c48790

View File

@@ -49,25 +49,50 @@ public class WalletController(AppDatabase db, WalletService ws, PaymentService p
var accountWallet = await db.Wallets.Where(w => w.AccountId == currentUser.Id).FirstOrDefaultAsync(); var accountWallet = await db.Wallets.Where(w => w.AccountId == currentUser.Id).FirstOrDefaultAsync();
if (accountWallet is null) return NotFound(); if (accountWallet is null) return NotFound();
var query = db.PaymentTransactions.AsQueryable() var query = db.PaymentTransactions
.Where(t => .Where(t => t.PayeeWalletId == accountWallet.Id || t.PayerWalletId == accountWallet.Id)
(t.PayeeWalletId == null || t.PayeeWalletId == accountWallet.Id) && .AsQueryable();
(t.PayerWalletId == null || t.PayerWalletId == accountWallet.Id) &&
!(t.PayerWalletId == null && t.PayeeWalletId == null)
);
var transactionCount = await query.CountAsync(); var transactionCount = await query.CountAsync();
Response.Headers["X-Total"] = transactionCount.ToString();
var transactions = await query var transactions = await query
.Skip(offset) .Skip(offset)
.Take(take) .Take(take)
.OrderByDescending(t => t.CreatedAt) .OrderByDescending(t => t.CreatedAt)
.ToListAsync(); .ToListAsync();
Response.Headers["X-Total"] = transactionCount.ToString();
return Ok(transactions); return Ok(transactions);
} }
[HttpGet("orders")]
[Authorize]
public async Task<ActionResult<List<Order>>> GetOrders(
[FromQuery] int offset = 0, [FromQuery] int take = 20
)
{
if (HttpContext.Items["CurrentUser"] is not Account.Account currentUser) return Unauthorized();
var accountWallet = await db.Wallets.Where(w => w.AccountId == currentUser.Id).FirstOrDefaultAsync();
if (accountWallet is null) return NotFound();
var query = db.PaymentOrders.AsQueryable()
.Include(o => o.Transaction)
.Where(o => o.Transaction != null && (o.Transaction.PayeeWalletId == accountWallet.Id || o.Transaction.PayerWalletId == accountWallet.Id))
.AsQueryable();
var orderCount = await query.CountAsync();
Response.Headers["X-Total"] = orderCount.ToString();
var orders = await query
.Skip(offset)
.Take(take)
.OrderByDescending(t => t.CreatedAt)
.ToListAsync();
return Ok(orders);
}
public class WalletBalanceRequest public class WalletBalanceRequest
{ {
public string? Remark { get; set; } public string? Remark { get; set; }