41 lines
1.8 KiB
C#
41 lines
1.8 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
|
|
namespace Distribution.Features.StockReport;
|
|
|
|
[ApiController]
|
|
[Route("api/reports/stock")]
|
|
public class StockReportController(StockReportService service) : ControllerBase
|
|
{
|
|
[HttpGet("overview")]
|
|
public async Task<IActionResult> Overview([FromQuery] Guid? locationId, [FromQuery] int expiryDays = 30)
|
|
{
|
|
var error = StockReportService.ValidateExpiry(expiryDays, 1, 1);
|
|
return error is null ? Ok(await service.GetOverviewAsync(locationId, expiryDays)) : BadRequest(new { message = error });
|
|
}
|
|
|
|
[HttpGet("ledger")]
|
|
public async Task<IActionResult> Ledger(
|
|
[FromQuery] Guid? locationId, [FromQuery] Guid? categoryId, [FromQuery] Guid? brandId,
|
|
[FromQuery] DateTime? from, [FromQuery] DateTime? to, [FromQuery] string? status = null,
|
|
[FromQuery] bool activeOnly = true, [FromQuery] string? search = null,
|
|
[FromQuery] int page = 1, [FromQuery] int pageSize = 50)
|
|
{
|
|
var end = (to ?? DateTime.Now).Date;
|
|
var start = (from ?? end.AddDays(-30)).Date;
|
|
var f = new StockReportFilter(locationId, categoryId, brandId, search, start, end, status, activeOnly);
|
|
var error = StockReportService.Validate(f, page, pageSize);
|
|
return error is null ? Ok(await service.GetLedgerAsync(f, page, pageSize)) : BadRequest(new { message = error });
|
|
}
|
|
|
|
[HttpGet("expiry")]
|
|
public async Task<IActionResult> Expiry(
|
|
[FromQuery] Guid? locationId, [FromQuery] string? search = null, [FromQuery] int days = 30,
|
|
[FromQuery] int page = 1, [FromQuery] int pageSize = 50)
|
|
{
|
|
var error = StockReportService.ValidateExpiry(days, page, pageSize);
|
|
return error is null
|
|
? Ok(await service.GetExpiryAsync(locationId, search, days, page, pageSize))
|
|
: BadRequest(new { message = error });
|
|
}
|
|
}
|