// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!

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

namespace @Model.NameSpace;

    /// <summary>
    /// @(@Model.BusName)基础输入参数
    /// </summary>
    public class @(@Model.ClassName)BaseInput
    {
@foreach (var column in Model.TableField){
if (@column.ColumnKey != "True"){

        @:/// <summary>
        @:/// @column.ColumnComment
        @:/// </summary>
        @:public virtual @column.NetType @column.PropertyName { get; set; }
        @:
}
}
    }

    /// <summary>
    /// @(@Model.BusName)分页查询输入参数
    /// </summary>
    public class Page@(@Model.ClassName)Input : BasePageInput
    {
        /// <summary>
        /// 关键字查询
        /// </summary>
        public string? SearchKey { get; set; }

@foreach (var column in Model.TableField){
    if (@column.QueryWhether == "Y"){

        @:/// <summary>
        @:/// @column.ColumnComment
        @:/// </summary>
        if(@column.NetType?.EndsWith("?") == true){
        @:public @column.NetType @column.PropertyName { get; set; }
        }else {
        @:public @(@column.NetType)? @column.PropertyName { get; set; }
        }
        @:

    if(@column.NetType?.TrimEnd('?') == "DateTime" && @column.QueryType == "~"){
        @:/// <summary>
        @: /// @(@column.ColumnComment)范围
        @: /// </summary>
        @: public DateTime?[] @(@column.PropertyName)Range { get; set; } 

}

}
}
    }

    /// <summary>
    /// @(@Model.BusName)增加输入参数
    /// </summary>
    public class Add@(@Model.ClassName)Input : @(@Model.ClassName)BaseInput
    {
@foreach (var column in Model.TableField){
if (@column.WhetherRequired == "Y"){
        @:/// <summary>
        @:/// @column.ColumnComment
        @:/// </summary>
        @:[Required(ErrorMessage = "@(@column.ColumnComment)不能为空")]
        @:public override @column.NetType @column.PropertyName { get; set; }
        @:
}
}
    }

    /// <summary>
    /// @(@Model.BusName)删除输入参数
    /// </summary>
    public class Delete@(@Model.ClassName)Input : BaseIdInput
    {
@foreach (var column in Model.TableField){
if (@column.ColumnKey == "True" && @column.PropertyName != "Id"){
        @:/// <summary>
        @:/// @column.ColumnComment
        @:/// </summary>
        @:[Required(ErrorMessage = "@(@column.ColumnComment)不能为空")]
        @:public @column.NetType @column.PropertyName { get; set; }
        @:
}
}
    }

    /// <summary>
    /// @(@Model.BusName)更新输入参数
    /// </summary>
    public class Update@(@Model.ClassName)Input : @(@Model.ClassName)BaseInput
    {
@foreach (var column in Model.TableField){
if (@column.ColumnKey == "True"){
        @:/// <summary>
        @:/// @column.ColumnComment
        @:/// </summary>
        @:[Required(ErrorMessage = "@(@column.ColumnComment)不能为空")]
        @:public @column.NetType @column.PropertyName { get; set; }
        @:
}
}
    }

    /// <summary>
    /// @(@Model.BusName)主键查询输入参数
    /// </summary>
    public class QueryById@(@Model.ClassName)Input : Delete@(@Model.ClassName)Input
    {

    }