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

namespace Ladaer.BackEnd.Controllers.Reports.Operations
{
    /// <summary>
    /// Controller để xử lý các báo cáo hoạt động lái xe
    /// </summary>
    [Route("api/[controller]")]
    [ApiController]
    [Authorize]
    public class DriverReportController : ControllerBase
    {
        private readonly IDriverReportService _driverReportService;

        /// <summary>
        /// Khởi tạo một thể hiện của <see cref="DriverReportController"/>.
        /// </summary>
        /// <param name="driverReportService">Dịch vụ báo cáo lái xe.</param>
        public DriverReportController(IDriverReportService driverReportService)
        {
            _driverReportService = driverReportService;
        }

        /// <summary>
        /// Lấy báo cáo năng suất lái xe theo từng ngày
        /// </summary>
        /// <param name="param">Tham số bảng thông minh</param>
        /// <returns>Danh sách báo cáo năng suất lái xe theo ngày</returns>
        [HttpPost("GetDriverProductivityReportByDate")]
        [Authorize(Roles = "DriverReport.GetDriverProductivityReportByDate")]
        public async Task<IActionResult> GetDriverProductivityReportByDate([FromBody] SmartTableParam param)
        {
            try
            {
                var currentUser = User.GetCurrentUser();
                var results = await _driverReportService.GetDriverProductivityReportByDateAsync(
                    param, currentUser.UserId);

                return Ok(results);
            }
            catch (Exception ex)
            {
                return BadRequest(new { message = ex.Message });
            }
        }
    }
}
