using Lada.Framework.Data.Enums;

namespace Lada.Framework.Infrastructures.AppSettings
{
    /// <summary>
    /// Cấu hình xử lý media (ảnh và video)
    /// </summary>
    public class MediaProcessingSettings
    {
        /// <summary>
        /// Đường dẫn gốc lưu trữ media
        /// </summary>
        public string RootPath { get; set; } = "C:\\uploads\\";

        /// <summary>
        /// Domain để tạo URL hiển thị
        /// </summary>
        public string Domain { get; set; } = "https://localhost:5001/";

        /// <summary>
        /// Thư mục con chứa file đã tối ưu
        /// </summary>
        public string OutputFolder { get; set; } = "optimized";

        /// <summary>
        /// Thư mục tạm để xử lý
        /// </summary>
        public string TempPath { get; set; } = "C:\\temp\\";

        #region Image Settings

        /// <summary>
        /// Chiều rộng tối đa của ảnh (pixel)
        /// </summary>
        public int MaxImageWidth { get; set; } = 1200;

        /// <summary>
        /// Chất lượng ảnh (1-100)
        /// </summary>
        public int ImageQuality { get; set; } = 80;

        /// <summary>
        /// Format ảnh mặc định sau khi xử lý
        /// </summary>
        public ImageFormat DefaultImageFormat { get; set; } = ImageFormat.WebP;

        #endregion

        #region Video Settings

        /// <summary>
        /// Thời lượng video tối đa (giây)
        /// </summary>
        public int MaxVideoDuration { get; set; } = 300; // 5 phút

        /// <summary>
        /// Độ phân giải video mặc định
        /// </summary>
        public VideoResolution DefaultVideoResolution { get; set; } = VideoResolution.HD1080;

        /// <summary>
        /// Đường dẫn FFmpeg executable
        /// </summary>
        public string FFmpegPath { get; set; } = "";

        #endregion

        #region Document Settings

        /// <summary>
        /// Có tự động convert document sang PDF không
        /// </summary>
        public bool AutoConvertToPdf { get; set; } = true;

        /// <summary>
        /// Đường dẫn LibreOffice executable (để convert document)
        /// </summary>
        public string LibreOfficePath { get; set; } = "";

        /// <summary>
        /// Có xóa file gốc sau khi convert thành công không
        /// </summary>
        public bool DeleteOriginalAfterConvert { get; set; } = true;

        #endregion

        #region Database Settings

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

        /// <summary>
        /// Connection string cho database (nếu cần)
        /// </summary>
        public string? ConnectionString { get; set; }

        #endregion
    }

    /// <summary>
    /// Độ phân giải video
    /// </summary>
    public enum VideoResolution
    {
        /// <summary>
        /// 720p HD
        /// </summary>
        HD720 = 720,

        /// <summary>
        /// 1080p Full HD
        /// </summary>
        HD1080 = 1080,

        /// <summary>
        /// 1440p 2K
        /// </summary>
        HD1440 = 1440,

        /// <summary>
        /// 2160p 4K
        /// </summary>
        UHD4K = 2160
    }
}
