mirror of
https://github.com/D4M13N-D3V/comissions-app-core-api.git
synced 2025-07-29 18:09:37 +00:00
76 lines
2.6 KiB
C#
76 lines
2.6 KiB
C#
using comissions.app.api.Extensions;
|
|
using ArtPlatform.Database;
|
|
using ArtPlatform.Database.Entities;
|
|
using comissions.app.database;
|
|
using comissions.app.database.Entities;
|
|
using comissions.app.database.Enums;
|
|
using Microsoft.AspNetCore.Authorization;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace comissions.app.api.Controllers;
|
|
|
|
[ApiController]
|
|
[Authorize("admin")]
|
|
[Route("api/admin/[controller]")]
|
|
public class AdminOrdersController:ControllerBase
|
|
{
|
|
private readonly ApplicationDbContext _dbContext;
|
|
|
|
public AdminOrdersController(ApplicationDbContext dbContext)
|
|
{
|
|
_dbContext = dbContext;
|
|
}
|
|
|
|
[HttpGet]
|
|
public async Task<IActionResult> GetOrders(string search="", int offset = 0, int pageSize = 10)
|
|
{
|
|
var orders = _dbContext.SellerServiceOrders.Include(x=>x.Seller).ThenInclude(x=>x.User).Include(x=>x.Buyer)
|
|
.Where(x=>x.Seller.User.DisplayName.Contains(search)
|
|
|| x.Seller.User.Email.Contains(search)
|
|
|| x.Buyer.DisplayName.Contains(search)
|
|
|| x.Buyer.Email.Contains(search))
|
|
.Skip(offset).Take(pageSize).ToList();
|
|
return Ok(orders);
|
|
}
|
|
|
|
[HttpGet("Count")]
|
|
public async Task<IActionResult> GetOrdersCount(string search="")
|
|
{
|
|
var result = _dbContext.SellerServiceOrders.Include(x=>x.Seller).ThenInclude(x=>x.User).Include(x=>x.Buyer)
|
|
.Where(x=>x.Seller.User.DisplayName.Contains(search)
|
|
|| x.Seller.User.Email.Contains(search)
|
|
|| x.Buyer.DisplayName.Contains(search)
|
|
|| x.Buyer.Email.Contains(search))
|
|
.Count();
|
|
return Ok(result);
|
|
}
|
|
|
|
[HttpGet("{orderId:int}")]
|
|
public async Task<IActionResult> GetOrder(int orderId)
|
|
{
|
|
var order = await _dbContext.SellerServiceOrders.Include(x=>x.Seller).ThenInclude(x=>x.User).Include(x=>x.Buyer)
|
|
.FirstOrDefaultAsync(x=>x.Id==orderId);
|
|
|
|
if (order == null)
|
|
return NotFound();
|
|
|
|
return Ok(order);
|
|
}
|
|
|
|
|
|
[HttpPut("{orderId:int}/Terminate")]
|
|
public async Task<IActionResult> TerminateOrder(int orderId)
|
|
{
|
|
var order = await _dbContext.SellerServiceOrders.Include(x=>x.Seller).ThenInclude(x=>x.User).Include(x=>x.Buyer)
|
|
.FirstOrDefaultAsync(x=>x.Id==orderId);
|
|
|
|
if (order == null)
|
|
return NotFound("Order not found.");
|
|
|
|
order.Status = EnumOrderStatus.Declined;
|
|
_dbContext.SellerServiceOrders.Update(order);
|
|
await _dbContext.SaveChangesAsync();
|
|
return Ok(order);
|
|
}
|
|
} |