using Admin.NET.Core;
using System.ComponentModel.DataAnnotations;

namespace Admin.NET.Application;

    /// <summary>
    /// 标签打印基础输入参数
    /// </summary>
    public class PrintLabelBaseInput
    {
        /// <summary>
        /// 打印模板ID
        /// </summary>
        public virtual long TemplateId { get; set; }
        
        /// <summary>
        /// 收货数量
        /// </summary>
        public virtual int Count { get; set; }
        
        /// <summary>
        /// 单位
        /// </summary>
        public virtual string Unit { get; set; }
        
        /// <summary>
        /// 标签数量
        /// </summary>
        public virtual int? LabelCount { get; set; }
        
        /// <summary>
        /// 标准包装数量
        /// </summary>
        public virtual int? PackageCount { get; set; }
        
        /// <summary>
        /// 包装单位
        /// </summary>
        public virtual string PackageUnit { get; set; }
        
        /// <summary>
        /// 生产日期
        /// </summary>
        public virtual DateTime ProductDate { get; set; }
        
        /// <summary>
        /// 失效日期
        /// </summary>
        public virtual DateTime EndDate { get; set; }
        
        /// <summary>
        /// 批次
        /// </summary>
        public virtual int? Batch { get; set; }
        
        /// <summary>
        /// 备注
        /// </summary>
        public virtual string? Remarks { get; set; }
        
        /// <summary>
        /// 租户Id
        /// </summary>
        public virtual long? TenantId { get; set; }
        
        /// <summary>
        /// 创建时间
        /// </summary>
        public virtual DateTime? CreateTime { get; set; }
        
        /// <summary>
        /// 更新时间
        /// </summary>
        public virtual DateTime? UpdateTime { get; set; }
        
        /// <summary>
        /// 创建者Id
        /// </summary>
        public virtual long? CreateUserId { get; set; }
        
        /// <summary>
        /// 创建者姓名
        /// </summary>
        public virtual string? CreateUserName { get; set; }
        
        /// <summary>
        /// 修改者Id
        /// </summary>
        public virtual long? UpdateUserId { get; set; }
        
        /// <summary>
        /// 修改者姓名
        /// </summary>
        public virtual string? UpdateUserName { get; set; }
        
        /// <summary>
        /// 软删除
        /// </summary>
        public virtual bool IsDelete { get; set; }
        
    }

    /// <summary>
    /// 标签打印分页查询输入参数
    /// </summary>
    public class PrintLabelInput : BasePageInput
    {
        /// <summary>
        /// 关键字查询
        /// </summary>
        public string? SearchKey { get; set; }

        /// <summary>
        /// 打印模板ID
        /// </summary>
        public long? TemplateId { get; set; }
        
        /// <summary>
        /// 收货数量
        /// </summary>
        public int? Count { get; set; }
        
        /// <summary>
        /// 单位
        /// </summary>
        public string? Unit { get; set; }
        
        /// <summary>
        /// 标签数量
        /// </summary>
        public int? LabelCount { get; set; }
        
        /// <summary>
        /// 标准包装数量
        /// </summary>
        public int? PackageCount { get; set; }
        
        /// <summary>
        /// 包装单位
        /// </summary>
        public string? PackageUnit { get; set; }
        
        /// <summary>
        /// 生产日期
        /// </summary>
        public DateTime? ProductDate { get; set; }
        
        /// <summary>
         /// 生产日期范围
         /// </summary>
         public List<DateTime?> ProductDateRange { get; set; } 
        /// <summary>
        /// 失效日期
        /// </summary>
        public DateTime? EndDate { get; set; }
        
        /// <summary>
         /// 失效日期范围
         /// </summary>
         public List<DateTime?> EndDateRange { get; set; } 
        /// <summary>
        /// 批次
        /// </summary>
        public int? Batch { get; set; }
        
        ///// <summary>
        ///// 备注
        ///// </summary>
        //public string? Remarks { get; set; }
        
    }

    /// <summary>
    /// 标签打印增加输入参数
    /// </summary>
    public class AddPrintLabelInput : PrintLabelBaseInput
    {
        /// <summary>
        /// 打印模板ID
        /// </summary>
        [Required(ErrorMessage = "打印模板ID不能为空")]
        public override long TemplateId { get; set; }
        
        /// <summary>
        /// 收货数量
        /// </summary>
        [Required(ErrorMessage = "收货数量不能为空")]
        public override int Count { get; set; }
        
        /// <summary>
        /// 单位
        /// </summary>
        [Required(ErrorMessage = "单位不能为空")]
        public override string Unit { get; set; }
        
        /// <summary>
        /// 包装单位
        /// </summary>
        [Required(ErrorMessage = "包装单位不能为空")]
        public override string PackageUnit { get; set; }
        
        /// <summary>
        /// 生产日期
        /// </summary>
        [Required(ErrorMessage = "生产日期不能为空")]
        public override DateTime ProductDate { get; set; }
        
        /// <summary>
        /// 失效日期
        /// </summary>
        [Required(ErrorMessage = "失效日期不能为空")]
        public override DateTime EndDate { get; set; }
        
        /// <summary>
        /// 软删除
        /// </summary>
        [Required(ErrorMessage = "软删除不能为空")]
        public override bool IsDelete { get; set; }
        
    }

    /// <summary>
    /// 标签打印删除输入参数
    /// </summary>
    public class DeletePrintLabelInput : BaseIdInput
    {
    }

    /// <summary>
    /// 标签打印更新输入参数
    /// </summary>
    public class UpdatePrintLabelInput : PrintLabelBaseInput
    {
        /// <summary>
        /// 主键Id
        /// </summary>
        [Required(ErrorMessage = "主键Id不能为空")]
        public long Id { get; set; }
        
    }

    /// <summary>
    /// 标签打印主键查询输入参数
    /// </summary>
    public class QueryByIdPrintLabelInput : DeletePrintLabelInput
    {

    }