using Lada.Framework.DTO;
using Ladaer.BackEnd.Infrastructures.DTO.Items.ErrorReports;

namespace Ladaer.BackEnd.Infrastructures.DTO.Results.ErrorReports
{
    /// <summary>
    /// Kết quả tạo mới báo lỗi
    /// </summary>
    public class ErrorReportResult : BaseResultWithKey<int>
    {
        /// <summary>
        /// Thông tin báo lỗi vừa tạo
        /// </summary>
        public ErrorReportItem? ErrorReport { get; set; }
    }

    /// <summary>
    /// Kết quả danh sách báo lỗi
    /// </summary>
    public class ErrorReportListResult : BaseResult
    {
        /// <summary>
        /// Danh sách báo lỗi
        /// </summary>
        public List<ErrorReportItem> ErrorReports { get; set; } = new List<ErrorReportItem>();

        /// <summary>
        /// Tổng số bản ghi
        /// </summary>
        public int TotalCount { get; set; }

        /// <summary>
        /// Số trang hiện tại
        /// </summary>
        public int CurrentPage { get; set; }

        /// <summary>
        /// Kích thước trang
        /// </summary>
        public int PageSize { get; set; }

        /// <summary>
        /// Tổng số trang
        /// </summary>
        public int TotalPages => (int)Math.Ceiling((double)TotalCount / PageSize);
    }

    /// <summary>
    /// Kết quả chi tiết báo lỗi
    /// </summary>
    public class ErrorReportDetailResult : BaseResult
    {
        /// <summary>
        /// Thông tin chi tiết báo lỗi
        /// </summary>
        public ErrorReportItem? ErrorReport { get; set; }
    }

    /// <summary>
    /// Kết quả cập nhật báo lỗi
    /// </summary>
    public class ErrorReportUpdateResult : BaseResult
    {
        /// <summary>
        /// ID báo lỗi đã cập nhật
        /// </summary>
        public int ErrorReportId { get; set; }

        /// <summary>
        /// Thông tin báo lỗi sau khi cập nhật
        /// </summary>
        public ErrorReportItem? ErrorReport { get; set; }
    }
}
