using Lada.Framework.DTO.SmartTable;
using Lada.Framework.Infrastructures.Helpers;
using Ladaer.BackEnd.Infrastructures.Services.Report.Orders;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;

namespace Ladaer.BackEnd.Controllers.Reports
{
    [Route("api/[controller]")]
    [ApiController]
    [Authorize]
    public class ReportController : ControllerBase
    {
        private readonly IOrderReportService _orderReportService;

        public ReportController(IOrderReportService orderReportService)
        {
            _orderReportService = orderReportService;
        }

        [HttpPost("OrderProduction")]
        [Authorize(Roles = "Report.OrderProduction")]
        public async Task<IActionResult> OrderProduction([FromBody] SmartTableParam param)
        {
            var currentUser = User.GetCurrentUser();

            var result = await _orderReportService.GetOrderProductionAsync(param, currentUser.UserId);
            return Ok(result);
        }

        /// <summary>
        /// Lấy báo cáo số lượng đơn và doanh số theo tuyến
        /// </summary>
        /// <param name="param">Tham số bảng thông minh chứa các điều kiện lọc:
        /// - StartDate/EndDate: Khoảng thời gian
        /// - SaleId: Lọc theo sale (chỉ Founder)
        /// - SourceCityId: Lọc theo tỉnh/thành phố gửi
        /// - DestCityId: Lọc theo tỉnh/thành phố nhận
        /// </param>
        /// <returns>Danh sách báo cáo theo tuyến và trạng thái</returns>
        [HttpPost("OrderReportByRoute")]
        [Authorize(Roles = "Report.OrderReportByRoute")]
        public async Task<IActionResult> OrderReportByRoute([FromBody] SmartTableParam param)
        {
            try
            {
                var currentUser = User.GetCurrentUser();
                var result = await _orderReportService.GetOrderReportByRouteAsync(param, currentUser.UserId);
                return Ok(result);
            }
            catch (Exception ex)
            {
                return BadRequest(new { message = ex.Message });
            }
        }

    }
}