using Lada.Framework.Data.Enums;

namespace Lada.Framework.DTO.Models.Media
{
    /// <summary>
    /// Tùy chọn lưu tài liệu với metadata
    /// </summary>
    public class DocumentSaveOptions
    {
        /// <summary>
        /// Loại tài liệu để tổ chức thư mục
        /// </summary>
        public DocumentType DocumentType { get; set; } = DocumentType.CV;

        /// <summary>
        /// Định dạng tài liệu
        /// </summary>
        public DocumentFormat DocumentFormat { get; set; } = DocumentFormat.PDF;

        /// <summary>
        /// Có lưu metadata vào database không
        /// </summary>
        public bool SaveToDatabase { get; set; } = false;

        #region Metadata Fields

        /// <summary>
        /// Mô tả tài liệu (alt text)
        /// </summary>
        public string? AltText { get; set; }

        /// <summary>
        /// Chú thích tài liệu
        /// </summary>
        public string? Caption { get; set; }

        /// <summary>
        /// Thứ tự hiển thị
        /// </summary>
        public int DisplayOrder { get; set; } = 0;

        /// <summary>
        /// ID người tạo
        /// </summary>
        public int CreatedBy { get; set; }

        /// <summary>
        /// Tên người tạo
        /// </summary>
        public string CreatedByUserName { get; set; } = string.Empty;

        /// <summary>
        /// ID người cập nhật
        /// </summary>
        public int UpdatedBy { get; set; }

        /// <summary>
        /// Tên người cập nhật
        /// </summary>
        public string UpdatedByUserName { get; set; } = string.Empty;

        #endregion

        #region Business Entity Linking

        /// <summary>
        /// ID đơn hàng (nếu tài liệu thuộc đơn hàng)
        /// </summary>
        public int? OrderId { get; set; }

        /// <summary>
        /// ID hành trình đơn hàng (nếu tài liệu thuộc hành trình)
        /// </summary>
        public Guid? OrderTrackId { get; set; }

        /// <summary>
        /// ID gói hàng (nếu tài liệu thuộc gói hàng)
        /// </summary>
        public int? OrderPackageId { get; set; }

        /// <summary>
        /// ID chấm công (nếu tài liệu thuộc chấm công)
        /// </summary>
        public int? AttendanceId { get; set; }

        /// <summary>
        /// ID hoạt động xe tải (nếu tài liệu thuộc hoạt động xe)
        /// </summary>
        public int? TruckActivityId { get; set; }

        /// <summary>
        /// ID bảo trì xe (nếu tài liệu thuộc bảo trì)
        /// </summary>
        public int? MaintenanceId { get; set; }

        /// <summary>
        /// ID bài viết (nếu tài liệu thuộc bài viết)
        /// </summary>
        public int? PostId { get; set; }

        /// <summary>
        /// ID sản phẩm (nếu tài liệu thuộc sản phẩm)
        /// </summary>
        public int? ProductId { get; set; }

        /// <summary>
        /// ID người dùng (nếu tài liệu thuộc người dùng)
        /// </summary>
        public int? UserId { get; set; }

        #endregion

        #region Custom Properties

        /// <summary>
        /// Thuộc tính tùy chỉnh (JSON string)
        /// </summary>
        public string? CustomProperties { get; set; }

        /// <summary>
        /// Tags cho tài liệu
        /// </summary>
        public List<string>? Tags { get; set; }

        #endregion
    }
}
