using Lada.Framework.Data.Enums;
using Lada.Framework.DTO;

namespace Ladaer.BackEnd.Infrastructures.DTO.Items.ErrorReports
{
    /// <summary>
    /// Item hiển thị thông tin báo lỗi
    /// </summary>
    public class ErrorReportItem : BaseItem<int>
    {
        /// <summary>
        /// URL trang web xảy ra lỗi
        /// </summary>
        public string Url { get; set; } = string.Empty;

        /// <summary>
        /// Nội dung mô tả lỗi
        /// </summary>
        public string ErrorDescription { get; set; } = string.Empty;

        /// <summary>
        /// Trạng thái xử lý báo lỗi
        /// </summary>
        public ErrorReportStatus Status { get; set; }

        /// <summary>
        /// Tên trạng thái hiển thị
        /// </summary>
        public string StatusDisplay { get; set; } = string.Empty;

        /// <summary>
        /// Ghi chú từ admin khi xử lý
        /// </summary>
        public string AdminNote { get; set; } = string.Empty;

        /// <summary>
        /// ID người dùng báo lỗi (nếu có)
        /// </summary>
        public int? ReportedByUserId { get; set; }

        /// <summary>
        /// Tên người báo lỗi
        /// </summary>
        public string ReporterName { get; set; } = string.Empty;

        /// <summary>
        /// Email người báo lỗi
        /// </summary>
        public string ReporterEmail { get; set; } = string.Empty;

        /// <summary>
        /// Số điện thoại người báo lỗi
        /// </summary>
        public string ReporterPhone { get; set; } = string.Empty;

        /// <summary>
        /// Thông tin trình duyệt
        /// </summary>
        public string BrowserInfo { get; set; } = string.Empty;

        /// <summary>
        /// Thông tin thiết bị
        /// </summary>
        public string DeviceInfo { get; set; } = string.Empty;

        /// <summary>
        /// Danh sách hình ảnh lỗi
        /// </summary>
        public List<ErrorReportMediaItem> MediaItems { get; set; } = new List<ErrorReportMediaItem>();
    }

    /// <summary>
    /// Item hiển thị thông tin media báo lỗi
    /// </summary>
    public class ErrorReportMediaItem : BaseItem<int>
    {
        /// <summary>
        /// ID báo lỗi
        /// </summary>
        public int ErrorReportId { get; set; }

        /// <summary>
        /// URL hiển thị hình ảnh
        /// </summary>
        public string ImageUrl { get; set; } = string.Empty;

        /// <summary>
        /// Tên file gốc
        /// </summary>
        public string OriginalFileName { get; set; } = string.Empty;

        /// <summary>
        /// Kích thước file (bytes)
        /// </summary>
        public long FileSize { get; set; }

        /// <summary>
        /// Kích thước file hiển thị
        /// </summary>
        public string FileSizeDisplay { get; set; } = string.Empty;

        /// <summary>
        /// Loại file
        /// </summary>
        public string ContentType { get; set; } = string.Empty;

        /// <summary>
        /// Mô tả hình ảnh
        /// </summary>
        public string Description { get; set; } = string.Empty;

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