/*  代码由框架生成,任何更改都可能导致被代码生成器覆盖，可自行修改。
* Ghre_Request.cs
*
*功 能： N / A
* 类 名： Ghre_Request
*
* Ver    变更日期 负责人  变更内容
* ───────────────────────────────────
*V0.01  2025/5/29 14:05:47  SimonHsiao   初版
*
* Copyright(c) 2025 Tiobon Corporation. All Rights Reserved.
*┌──────────────────────────────────┐
*│　此技术信息为本公司机密信息，未经本公司书面同意禁止向第三方披露．　│
*│　作者：SimonHsiao                                                  │
*└──────────────────────────────────┘
*/
namespace Tiobon.Core.Model.Models;


/// <summary>
/// 培训需求 (Dto.Base)
/// </summary>
public class Ghre_RequestBase
{

    /// <summary>
    /// 课程来源
    /// </summary>
    [Display(Name = "CourseSource"), Description("课程来源"), MaxLength(32, ErrorMessage = "课程来源 不能超过 32 个字符")]
    public string CourseSource { get; set; }

    /// <summary>
    /// 需求编号
    /// </summary>
    [Display(Name = "RequestNo"), Description("需求编号"), MaxLength(32, ErrorMessage = "需求编号 不能超过 32 个字符")]
    public string RequestNo { get; set; }

    /// <summary>
    /// 需求课程名
    /// </summary>
    [Display(Name = "CourseName"), Description("需求课程名"), MaxLength(32, ErrorMessage = "需求课程名 不能超过 32 个字符")]
    public string CourseName { get; set; }

    /// <summary>
    /// 课程ID
    /// </summary>
    public long? CourseId { get; set; }

    /// <summary>
    /// 培训月份
    /// </summary>
    [Display(Name = "YearMonth"), Description("培训月份"), MaxLength(32, ErrorMessage = "培训月份 不能超过 32 个字符")]
    public string YearMonth { get; set; }

    /// <summary>
    /// 需求来源
    /// </summary>
    [Display(Name = "RequestSource"), Description("需求来源"), MaxLength(32, ErrorMessage = "需求来源 不能超过 32 个字符")]
    public string RequestSource { get; set; }

    /// <summary>
    /// 需求部门
    /// </summary>
    public long? DeptId { get; set; }

    /// <summary>
    /// 申请人
    /// </summary>
    public int? ApplicantId { get; set; }

    /// <summary>
    /// 需求人数
    /// </summary>
    public int? RequestNum { get; set; }

    /// <summary>
    /// 培训对象
    /// </summary>
    [Display(Name = "TrainStaffId"), Description("培训对象"), MaxLength(2000, ErrorMessage = "培训对象 不能超过 2000 个字符")]
    public string TrainStaffId { get; set; }

    /// <summary>
    /// 需求类别
    /// </summary>
    [Display(Name = "TrainClass"), Description("需求类别"), MaxLength(32, ErrorMessage = "需求类别 不能超过 32 个字符")]
    public string TrainClass { get; set; }

    /// <summary>
    /// 需求程度
    /// </summary>
    [Display(Name = "TrainLevel"), Description("需求程度"), MaxLength(32, ErrorMessage = "需求程度 不能超过 32 个字符")]
    public string TrainLevel { get; set; }

    /// <summary>
    /// 内外训
    /// </summary>
    [Display(Name = "InOrOut"), Description("内外训"), MaxLength(32, ErrorMessage = "内外训 不能超过 32 个字符")]
    public string InOrOut { get; set; }

    /// <summary>
    /// 讲师分类
    /// </summary>
    [Display(Name = "TeacherClass"), Description("讲师分类"), MaxLength(32, ErrorMessage = "讲师分类 不能超过 32 个字符")]
    public string TeacherClass { get; set; }

    /// <summary>
    /// 申请理由
    /// </summary>
    [Display(Name = "Reason"), Description("申请理由"), MaxLength(256, ErrorMessage = "申请理由 不能超过 256 个字符")]
    public string Reason { get; set; }

    /// <summary>
    /// 人均预算
    /// </summary>
    [Display(Name = "PerCapitaBudget"), Description("人均预算"), Column(TypeName = "decimal(20,2)")]
    public decimal? PerCapitaBudget { get; set; }

    /// <summary>
    /// 合计预算
    /// </summary>
    [Display(Name = "TotalBudget"), Description("合计预算"), Column(TypeName = "decimal(20,2)")]
    public decimal? TotalBudget { get; set; }

    /// <summary>
    /// 发起人
    /// </summary>
    public int? SponsorId { get; set; }

    /// <summary>
    /// 状态
    /// </summary>
    [Display(Name = "Status"), Description("状态"), MaxLength(32, ErrorMessage = "状态 不能超过 32 个字符")]
    public string Status { get; set; }

    /// <summary>
    /// 备注
    /// </summary>
    [Display(Name = "RemarkSz"), Description("备注"), MaxLength(2000, ErrorMessage = "备注 不能超过 2000 个字符")]
    public string RemarkSz { get; set; }

    /// <summary>
    /// 默认标志
    /// </summary>
    public int? IsDefault { get; set; }

    /// <summary>
    /// WorkID
    /// </summary>
    public int? WorkID { get; set; }

    /// <summary>
    /// WorkNo
    /// </summary>
    [Display(Name = "WorkNo"), Description("WorkNo"), MaxLength(100, ErrorMessage = "WorkNo 不能超过 100 个字符")]
    public string WorkNo { get; set; }

    /// <summary>
    /// ToDoType
    /// </summary>
    [Display(Name = "ToDoType"), Description("ToDoType"), MaxLength(100, ErrorMessage = "ToDoType 不能超过 100 个字符")]
    public string ToDoType { get; set; }

    /// <summary>
    /// BatchSID
    /// </summary>
    [Display(Name = "BatchSID"), Description("BatchSID"), MaxLength(100, ErrorMessage = "BatchSID 不能超过 100 个字符")]
    public string BatchSID { get; set; }

    /// <summary>
    /// WorkState
    /// </summary>
    public int? WorkState { get; set; }

    /// <summary>
    /// ShiftID
    /// </summary>
    public int? ShiftID { get; set; }

    /// <summary>
    /// ConfirmUserID
    /// </summary>
    public int? ConfirmUserID { get; set; }

    /// <summary>
    /// ConfirmTime
    /// </summary>
    public DateTime? ConfirmTime { get; set; }

    /// <summary>
    /// ConfirmComment
    /// </summary>
    [Display(Name = "ConfirmComment"), Description("ConfirmComment"), MaxLength(2000, ErrorMessage = "ConfirmComment 不能超过 2000 个字符")]
    public string ConfirmComment { get; set; }

    /// <summary>
    /// 同意人
    /// </summary>
    public long? AgreeUserId { get; set; }

    /// <summary>
    /// 同意时间
    /// </summary>
    public DateTime? AgreeTime { get; set; }

    /// <summary>
    /// 同意理由
    /// </summary>
    [Display(Name = "AgreeReason"), Description("同意理由"), MaxLength(2000, ErrorMessage = "同意理由 不能超过 2000 个字符")]
    public string AgreeReason { get; set; }

    /// <summary>
    /// 拒绝人
    /// </summary>
    public long? RefuseUserId { get; set; }

    /// <summary>
    /// 拒绝时间
    /// </summary>
    public DateTime? RefuseTime { get; set; }

    /// <summary>
    /// 拒绝理由
    /// </summary>
    [Display(Name = "RefuseReason"), Description("拒绝理由"), MaxLength(2000, ErrorMessage = "拒绝理由 不能超过 2000 个字符")]
    public string RefuseReason { get; set; }

    /// <summary>
    /// 预留字段1
    /// </summary>
    [Display(Name = "Reverse1"), Description("预留字段1"), MaxLength(1000, ErrorMessage = "预留字段1 不能超过 1000 个字符")]
    public string Reverse1 { get; set; }

    /// <summary>
    /// 预留字段2
    /// </summary>
    [Display(Name = "Reverse2"), Description("预留字段2"), MaxLength(1000, ErrorMessage = "预留字段2 不能超过 1000 个字符")]
    public string Reverse2 { get; set; }

    /// <summary>
    /// 预留字段3
    /// </summary>
    [Display(Name = "Reverse3"), Description("预留字段3"), MaxLength(1000, ErrorMessage = "预留字段3 不能超过 1000 个字符")]
    public string Reverse3 { get; set; }

    /// <summary>
    /// 预留字段4
    /// </summary>
    [Display(Name = "Reverse4"), Description("预留字段4"), MaxLength(1000, ErrorMessage = "预留字段4 不能超过 1000 个字符")]
    public string Reverse4 { get; set; }

    /// <summary>
    /// 预留字段5
    /// </summary>
    [Display(Name = "Reverse5"), Description("预留字段5"), MaxLength(1000, ErrorMessage = "预留字段5 不能超过 1000 个字符")]
    public string Reverse5 { get; set; }

    /// <summary>
    /// 预留字段6
    /// </summary>
    [Display(Name = "Reverse6"), Description("预留字段6"), MaxLength(1000, ErrorMessage = "预留字段6 不能超过 1000 个字符")]
    public string Reverse6 { get; set; }

    /// <summary>
    /// 预留字段7
    /// </summary>
    [Display(Name = "Reverse7"), Description("预留字段7"), MaxLength(1000, ErrorMessage = "预留字段7 不能超过 1000 个字符")]
    public string Reverse7 { get; set; }

    /// <summary>
    /// 预留字段8
    /// </summary>
    [Display(Name = "Reverse8"), Description("预留字段8"), MaxLength(1000, ErrorMessage = "预留字段8 不能超过 1000 个字符")]
    public string Reverse8 { get; set; }

    /// <summary>
    /// 预留字段9
    /// </summary>
    [Display(Name = "Reverse9"), Description("预留字段9"), MaxLength(1000, ErrorMessage = "预留字段9 不能超过 1000 个字符")]
    public string Reverse9 { get; set; }

    /// <summary>
    /// 预留字段10
    /// </summary>
    [Display(Name = "Reverse10"), Description("预留字段10"), MaxLength(1000, ErrorMessage = "预留字段10 不能超过 1000 个字符")]
    public string Reverse10 { get; set; }

    /// <summary>
    /// 预留字段11
    /// </summary>
    public int? ReverseI1 { get; set; }

    /// <summary>
    /// 预留字段12
    /// </summary>
    public int? ReverseI2 { get; set; }

    /// <summary>
    /// 培训天数
    /// </summary>
    [Display(Name = "TrainDays"), Description("培训天数"), Column(TypeName = "decimal(20,2)")]
    public decimal? TrainDays { get; set; }

    /// <summary>
    /// 培训类别
    /// </summary>
    [Display(Name = "TrainCategory"), Description("培训类别"), MaxLength(2000, ErrorMessage = "培训类别 不能超过 2000 个字符")]
    public string TrainCategory { get; set; }

    /// <summary>
    /// 现状
    /// </summary>
    [Display(Name = "StatusQuo"), Description("现状"), MaxLength(2000, ErrorMessage = "现状 不能超过 2000 个字符")]
    public string StatusQuo { get; set; }

    /// <summary>
    /// 培训预期效果
    /// </summary>
    [Display(Name = "DesiredResult"), Description("培训预期效果"), MaxLength(2000, ErrorMessage = "培训预期效果 不能超过 2000 个字符")]
    public string DesiredResult { get; set; }

    /// <summary>
    /// 系统内置
    /// </summary>
    public int? BuiltIn { get; set; }

    /// <summary>
    /// 外训机构
    /// </summary>
    [Display(Name = "OutSideOrg"), Description("外训机构"), MaxLength(128, ErrorMessage = "外训机构 不能超过 128 个字符")]
    public string OutSideOrg { get; set; }

    /// <summary>
    /// 培训机构ID
    /// </summary>
    public long? SchoolId { get; set; }

    /// <summary>
    /// 预算类别
    /// </summary>
    [Display(Name = "Budget"), Description("预算类别"), MaxLength(32, ErrorMessage = "预算类别 不能超过 32 个字符")]
    public string Budget { get; set; }

    /// <summary>
    /// 有无合同
    /// </summary>
    [Display(Name = "IsContract"), Description("有无合同"), MaxLength(32, ErrorMessage = "有无合同 不能超过 32 个字符")]
    public string IsContract { get; set; }

    /// <summary>
    /// 费用是否已支付
    /// </summary>
    [Display(Name = "IsPay"), Description("费用是否已支付"), MaxLength(32, ErrorMessage = "费用是否已支付 不能超过 32 个字符")]
    public string IsPay { get; set; }

    /// <summary>
    /// 支付金额说明
    /// </summary>
    [Display(Name = "PayRemark"), Description("支付金额说明"), MaxLength(32, ErrorMessage = "支付金额说明 不能超过 32 个字符")]
    public string PayRemark { get; set; }

    /// <summary>
    /// 集团数据归属
    /// </summary>
    public int? DataBelongID { get; set; }
}
