🐛 Fix transaction query
✨ Add orderes query
This commit is contained in:
@@ -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; }
|
||||||
|
Reference in New Issue
Block a user