using Lada.Framework.DTO;
using System.ComponentModel.DataAnnotations;

namespace Ladaer.BackEnd.Infrastructures.DTO.Models.Trucks
{
    /// <summary>
    /// Đối tượng đại diện cho thông tin bảo dưỡng xe tải.
    /// </summary>
    public class TruckMaintenanceModel : BaseModel<int>
    {
        /// <summary>
        /// Id của đại lý.
        /// </summary>
        public int AgencyId { get; set; }

        /// <summary>
        /// Id của xe tải.
        /// </summary>
        public int TruckId { get; set; }

        /// <summary>
        /// Tiêu đề của hoạt động bảo dưỡng.
        /// </summary>
        [MaxLength(512)]
        public string Title { get; set; }

        /// <summary>
        /// Mô tả của hoạt động bảo dưỡng.
        /// </summary>
        [MaxLength(2048)]
        public string Description { get; set; }

        /// <summary>
        /// Id của người dùng thực hiện bảo dưỡng.
        /// </summary>
        public int UserId { get; set; }

        /// <summary>
        /// Tên của gara thực hiện bảo dưỡng.
        /// </summary>
        [MaxLength(512)]
        public string GarageName { get; set; }

        /// <summary>
        /// Địa chỉ của gara thực hiện bảo dưỡng.
        /// </summary>
        [MaxLength(512)]
        public string GarageAddress { get; set; }

        /// <summary>
        /// Số điện thoại của gara thực hiện bảo dưỡng.
        /// </summary>
        [MaxLength(11)]
        public string GaragePhone { get; set; }

        /// <summary>
        /// Chi phí bảo dưỡng.
        /// </summary>
        public decimal Cost { get; set; }

        /// <summary>
        /// Có hóa đơn hay không.
        /// </summary>
        public bool HasInvoice { get; set; }

        /// <summary>
        /// URL của hóa đơn.
        /// </summary>
        [MaxLength(2048)]
        public string InvoiceUrl { get; set; }

        /// <summary>
        /// Thời gian bắt đầu bảo dưỡng.
        /// </summary>
        public DateTimeOffset StartTime { get; set; }

        /// <summary>
        /// Thời gian kết thúc bảo dưỡng.
        /// </summary>
        public DateTimeOffset EndTime { get; set; }

        /// <summary>
        /// Thời gian bảo dưỡng tiếp theo.
        /// </summary>
        public DateTimeOffset NextTime { get; set; }

        /// <summary>
        /// Danh sách các liên kết bảo dưỡng xe tải.
        /// </summary>
        public List<TruckMaintLinkModel> TruckMaintLinkModels { get; set; }
    }
}
