using Lada.Framework.Data.Enums;
using Lada.Framework.Data.Repositories;

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

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



        #region Metadata Fields

        /// <summary>
        /// Mô tả video (alt text)
        /// </summary>
        public string? AltText { get; set; }

        /// <summary>
        /// Chú thích video
        /// </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 video thuộc đơn hàng)
        /// </summary>
        public int? OrderId { get; set; }

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

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

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

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

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

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

        /// <summary>
        /// ID sản phẩm (nếu video thuộc sản phẩm)
        /// </summary>
        public int? ProductId { 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 video
        /// </summary>
        public List<string>? Tags { get; set; }

        #endregion
    }
}
