using Lada.Framework.DTO;
using Lada.Framework.DTO.SmartTable;

namespace Ladaer.BackEnd.Infrastructures.DTO.Models.Orders
{
    /// <summary>
    /// Model xuất Excel đơn hàng
    /// </summary>
    public class OrderExcelExportModel : BaseModel<int>
    {
        /// <summary>
        /// Thông số tìm kiếm (giống Search nhưng không có phân trang)
        /// </summary>
        public SmartTableParam SearchParam { get; set; } = new SmartTableParam();

        /// <summary>
        /// Tên file Excel (tùy chọn)
        /// </summary>
        public string? FileName { get; set; }

        /// <summary>
        /// Có bao gồm header không
        /// </summary>
        public bool IncludeHeader { get; set; } = true;

        /// <summary>
        /// Có format ngày tháng không
        /// </summary>
        public bool FormatDates { get; set; } = true;

        /// <summary>
        /// Đường dẫn thư mục lưu file (tùy chọn)
        /// </summary>
        public string? FolderPath { get; set; }

        /// <summary>
        /// Validate model
        /// </summary>
        /// <returns>Danh sách lỗi validation</returns>
        public List<string> Validate()
        {
            var errors = new List<string>();

            if (SearchParam == null)
            {
                errors.Add("SearchParam không được null");
            }

            return errors;
        }

        /// <summary>
        /// Có bao gồm thông tin địa chỉ không
        /// </summary>
        public bool IncludeAddresses { get; set; } = true;

        /// <summary>
        /// Có bao gồm thông tin gói hàng không
        /// </summary>
        public bool IncludePackages { get; set; } = true;

        /// <summary>
        /// Có bao gồm thông tin tài chính không
        /// </summary>
        public bool IncludeFinancial { get; set; } = true;

        /// <summary>
        /// Có bao gồm thông tin thời gian không
        /// </summary>
        public bool IncludeTimeTrack { get; set; } = true;
    }
}
