using Lada.Framework.Data.Enums;
using Lada.Framework.DTO;
using Microsoft.AspNetCore.Http;

namespace Ladaer.BackEnd.Infrastructures.DTO.Models.Trucks
{
    public class TruckModel : BaseModel<int>
    {
        /// <summary>
        /// Biển số xe (bắt buộc, tối đa 20 ký tự)
        /// </summary>
        public string LicensePlate { get; set; }
        
        /// <summary>
        /// Thương hiệu xe tải (ví dụ: "Kia", "Hyundai", "Isuzu")
        /// </summary>
        public string? Brand { get; set; }
        
        /// <summary>
        /// Model xe tải (ví dụ: "K200", "Porter", "D-Max")
        /// </summary>
        public string? Model { get; set; }
        
        /// <summary>
        /// ID chi nhánh mà xe tải thuộc về
        /// </summary>
        public int AgencyId { get; set; }
        
        /// <summary>
        /// Tải trọng tối đa cho phép (tấn)
        /// </summary>
        public decimal? MaxPayload { get; set; }
        
        /// <summary>
        /// Chiều dài khu vực chứa hàng (cm)
        /// </summary>
        public int? CargoLength { get; set; }
        
        /// <summary>
        /// Chiều rộng khu vực chứa hàng (cm)
        /// </summary>
        public int? CargoWidth { get; set; }
        
        /// <summary>
        /// Chiều cao khu vực chứa hàng (cm)
        /// </summary>
        public int? CargoHeight { get; set; }
        
        /// <summary>
        /// Trạng thái vận hành hiện tại (Running/Stop)
        /// </summary>
        public OperatingStatus OperatingStatus { get; set; } = OperatingStatus.Stop;
        
        /// <summary>
        /// Trạng thái xe tải (Normal/Broken/Maintenance/etc)
        /// </summary>
        public TruckStatus Status { get; set; } = TruckStatus.Normal;
        
        /// <summary>
        /// ID tài xế hiện đang phụ trách xe
        /// </summary>
        public int CurrentDriverId { get; set; }
        
        /// <summary>
        /// Năm sản xuất của xe tải
        /// </summary>
        public int? ManufacturingYear { get; set; }
        
        /// <summary>
        /// Thông tin đăng kiểm (tối đa 200 ký tự)
        /// </summary>
        public string? RegistrationInfo { get; set; }
        
        /// <summary>
        /// Định mức khoán xăng dầu (lít/100km)
        /// </summary>
        public decimal? FuelQuotaPer100Km { get; set; }

        #region Media (ảnh đăng ký, đăng kiểm)

        /// <summary>
        /// Danh sách file ảnh upload mới
        /// </summary>
        public List<IFormFile>? Files { get; set; }

        /// <summary>
        /// Loại media tương ứng với từng file (RegistrationPhoto, InspectionPhoto)
        /// </summary>
        public List<TruckMediaType>? MediaTypes { get; set; }

        /// <summary>
        /// Danh sách ID TruckMedia hiện có cần giữ lại (khi cập nhật).
        /// ID = 0 nghĩa là vị trí đó cần upload file mới.
        /// </summary>
        public List<int>? ExistingMediaIds { get; set; }

        #endregion
    }
}
