using System;
using System.Collections.Generic;

namespace MDL.Models
{
    /// <summary>
    /// 将Base64 Label转换为URL格式的请求
    /// </summary>
    public class ConvertBase64ToUrlRequest
    {
        /// <summary>
        /// 中性面单单号
        /// </summary>
        public string NeutralWaybillNumber { get; set; }
    }

    /// <summary>
    /// 批量解析标签数据请求
    /// </summary>
    public class BatchParseLabelRequest
    {
        /// <summary>
        /// 解析模式：all(全部有标签订单)、range(时间范围)、customer(指定客户)、single(单条)、batch(批量订单)
        /// </summary>
        public string Mode { get; set; }

        /// <summary>
        /// 单条模式或指定模式下的单号（single和customer模式必填）
        /// </summary>
        public string? WaybillNumber { get; set; }

        /// <summary>
        /// 批量订单单号列表（batch模式使用）
        /// </summary>
        public List<string>? WaybillNumbers { get; set; }

        /// <summary>
        /// 指定客户ID（customer模式使用）
        /// </summary>
        public int? CustomerId { get; set; }

        /// <summary>
        /// 开始日期（range模式使用）
        /// </summary>
        public DateTime? StartDate { get; set; }

        /// <summary>
        /// 结束日期（range模式使用）
        /// </summary>
        public DateTime? EndDate { get; set; }

        /// <summary>
        /// 限制返回的最大数量
        /// </summary>
        public int? Limit { get; set; }
    }

    /// <summary>
    /// 批量解析标签数据响应
    /// </summary>
    public class BatchParseLabelResponse
    {
        /// <summary>
        /// 处理结果状态
        /// </summary>
        public string Status { get; set; }

        /// <summary>
        /// 处理的总数量
        /// </summary>
        public int ProcessedCount { get; set; }

        /// <summary>
        /// 成功处理的数量
        /// </summary>
        public int SuccessCount { get; set; }

        /// <summary>
        /// 处理失败的数量
        /// </summary>
        public int ErrorCount { get; set; }

        /// <summary>
        /// 响应消息
        /// </summary>
        public string Message { get; set; }

        /// <summary>
        /// 错误详情（如果有）
        /// </summary>
        public string ErrorDetails { get; set; }

        /// <summary>
        /// 开始时间戳（毫秒）
        /// </summary>
        public long StartTimestamp { get; set; }

        /// <summary>
        /// 结束时间戳（毫秒）
        /// </summary>
        public long EndTimestamp { get; set; }

        /// <summary>
        /// 总耗时（毫秒）
        /// </summary>
        public long TotalDuration { get; set; }

        /// <summary>
        /// 单个订单的处理时间记录
        /// </summary>
        public List<BatchProcessItemRecord> ProcessRecords { get; set; }
    }

    /// <summary>
    /// 单个批量订单的处理记录
    /// </summary>
    public class BatchProcessItemRecord
    {
        /// <summary>
        /// 订单单号
        /// </summary>
        public string WaybillNumber { get; set; }

        /// <summary>
        /// 处理状态：success、error
        /// </summary>
        public string Status { get; set; }

        /// <summary>
        /// 处理耗时（毫秒）
        /// </summary>
        public int Duration { get; set; }

        /// <summary>
        /// 处理时间戳（毫秒）
        /// </summary>
        public long Timestamp { get; set; }

        /// <summary>
        /// 错误消息（如果失败）
        /// </summary>
        public string ErrorMessage { get; set; }
    }

    /// <summary>
    /// 缓存统计查询响应
    /// </summary>
    public class CacheStatisticsResponse
    {
        /// <summary>
        /// 响应状态
        /// </summary>
        public string Status { get; set; }

        /// <summary>
        /// 统计数据
        /// </summary>
        public CacheStatistics Data { get; set; }
    }
}
