commit
This commit is contained in:
@@ -11,7 +11,7 @@ namespace OrderService.API.Application.Queries;
|
||||
/// EN: Query for POS dashboard data.
|
||||
/// VI: Query cho dữ liệu dashboard POS.
|
||||
/// </summary>
|
||||
public record GetPosDashboardQuery(Guid ShopId) : IRequest<PosDashboardDto>;
|
||||
public record GetPosDashboardQuery(Guid ShopId, string? Period = "today") : IRequest<PosDashboardDto>;
|
||||
|
||||
/// <summary>
|
||||
/// EN: POS dashboard DTO with today's stats.
|
||||
@@ -90,12 +90,18 @@ public class GetPosDashboardQueryHandler : IRequestHandler<GetPosDashboardQuery,
|
||||
|
||||
public async Task<PosDashboardDto> Handle(GetPosDashboardQuery request, CancellationToken cancellationToken)
|
||||
{
|
||||
var today = DateTime.UtcNow.Date;
|
||||
var tomorrow = today.AddDays(1);
|
||||
var now = DateTime.UtcNow;
|
||||
var fromDate = request.Period?.ToLower() switch
|
||||
{
|
||||
"7d" => now.Date.AddDays(-7),
|
||||
"30d" => now.Date.AddDays(-30),
|
||||
_ => now.Date // "today" or default
|
||||
};
|
||||
var toDate = now.Date.AddDays(1);
|
||||
var parameters = new DynamicParameters();
|
||||
parameters.Add("ShopId", request.ShopId);
|
||||
parameters.Add("Today", today);
|
||||
parameters.Add("Tomorrow", tomorrow);
|
||||
parameters.Add("Today", fromDate);
|
||||
parameters.Add("Tomorrow", toDate);
|
||||
|
||||
// EN: Aggregate stats for today / VI: Thống kê tổng hợp hôm nay
|
||||
var aggregateSql = @"
|
||||
|
||||
@@ -181,13 +181,14 @@ public class OrdersController : ControllerBase
|
||||
[ProducesResponseType(typeof(PosDashboardDto), StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<PosDashboardDto>> GetPosDashboard(
|
||||
[FromQuery] Guid shopId,
|
||||
[FromQuery] string? period = "today",
|
||||
CancellationToken cancellationToken = default)
|
||||
{
|
||||
_logger.LogInformation(
|
||||
"EN: Getting POS dashboard for shop {ShopId} / VI: Lấy dashboard POS cho shop {ShopId}",
|
||||
shopId);
|
||||
"EN: Getting POS dashboard for shop {ShopId} period {Period} / VI: Lấy dashboard POS cho shop {ShopId} kỳ {Period}",
|
||||
shopId, period);
|
||||
|
||||
var query = new GetPosDashboardQuery(shopId);
|
||||
var query = new GetPosDashboardQuery(shopId, period);
|
||||
var result = await _mediator.Send(query, cancellationToken);
|
||||
|
||||
return Ok(result);
|
||||
|
||||
Reference in New Issue
Block a user