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


/// <summary>
/// 开班管理 (Dto.Base)
/// </summary>
public class Ghre_OpenClassBase
{

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

    /// <summary>
    /// 开班名称
    /// </summary>
    [Display(Name = "OpenClassName"), Description("开班名称"), MaxLength(64, ErrorMessage = "开班名称 不能超过 64 个字符")]
    public string OpenClassName { get; set; }

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

    /// <summary>
    /// 开班形式
    /// </summary>
    [Display(Name = "OpenClassWay"), Description("开班形式"), MaxLength(32, ErrorMessage = "开班形式 不能超过 32 个字符")]
    public string OpenClassWay { get; set; }

    /// <summary>
    /// 培训计划
    /// </summary>
    public long? PlanId { get; set; }

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

    /// <summary>
    /// 课程/场景ID
    /// </summary>
    public long? LinkId { get; set; }

    /// <summary>
    /// 试卷ID
    /// </summary>
    public long? ExamPaperId { get; set; }

    /// <summary>
    /// 反馈单ID
    /// </summary>
    public long? FeedbackId { get; set; }

    /// <summary>
    /// 开班负责人ID
    /// </summary>
    public int? ManagerId { get; set; }

    /// <summary>
    /// 讲师ID
    /// </summary>
    public long? TeacherId { get; set; }

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

    /// <summary>
    /// 开班开始日期
    /// </summary>
    public DateTime? StartTime { get; set; }

    /// <summary>
    /// 开班结束日期
    /// </summary>
    public DateTime? EndTime { get; set; }

    /// <summary>
    /// 报名开始日期
    /// </summary>
    public DateTime? RegisterStartTime { get; set; }

    /// <summary>
    /// 报名结束日期
    /// </summary>
    public DateTime? RegisterEndTime { get; set; }

    /// <summary>
    /// 考试开始日期
    /// </summary>
    public DateTime? ExamStartTime { get; set; }

    /// <summary>
    /// 考试结束日期
    /// </summary>
    public DateTime? ExamEndTime { get; set; }

    /// <summary>
    /// 开班人数
    /// </summary>
    public int? StudentCount { get; set; }

    /// <summary>
    /// 课时数
    /// </summary>
    [Display(Name = "StandardHour"), Description("课时数"), Column(TypeName = "decimal(20,2)")]
    public decimal? StandardHour { get; set; }

    /// <summary>
    /// 评估方式
    /// </summary>
    [Display(Name = "ScoringMethod"), Description("评估方式"), MaxLength(32, ErrorMessage = "评估方式 不能超过 32 个字符")]
    public string ScoringMethod { get; set; }

    /// <summary>
    /// 评估方式2
    /// </summary>
    public long? ScoringMethodId { get; set; }

    /// <summary>
    /// 学员群组ID
    /// </summary>
    public long? StaffGroupId { get; set; }

    /// <summary>
    /// 开班通知模板ID
    /// </summary>
    public long? MessageTemplateId { get; set; }

    /// <summary>
    /// 开班通知内容
    /// </summary>
    [Display(Name = "NoticeContent"), Description("开班通知内容"), MaxLength(2000, ErrorMessage = "开班通知内容 不能超过 2000 个字符")]
    public string NoticeContent { get; set; }

    /// <summary>
    /// 讲师开班通知模板ID
    /// </summary>
    public long? TeacherMessageTemplateId { get; set; }

    /// <summary>
    /// 讲师开班通知内容
    /// </summary>
    [Display(Name = "TeacherNoticeContent"), Description("讲师开班通知内容"), MaxLength(2000, ErrorMessage = "讲师开班通知内容 不能超过 2000 个字符")]
    public string TeacherNoticeContent { get; set; }

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

    /// <summary>
    /// 是否需要学习
    /// </summary>
    public bool? IsRequireStudy { get; set; }

    /// <summary>
    /// 发布状态
    /// </summary>
    public int? ReleaseStatus { get; set; }

    /// <summary>
    /// 开课状态
    /// </summary>
    public int? OpenStatus { get; set; }

    /// <summary>
    /// 结案状态
    /// </summary>
    public int? CloseStatus { get; set; }

    /// <summary>
    /// 考试ID
    /// </summary>
    public long? ExamId { get; set; }

    /// <summary>
    /// 状态
    /// </summary>
    [Display(Name = "Status"), Description("状态"), MaxLength(2000, ErrorMessage = "状态 不能超过 2000 个字符")]
    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>
    /// 预留字段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>
    public int? OnlineScorePercentage { get; set; }

    /// <summary>
    /// 线下实操分数占比
    /// </summary>
    public int? OfflineScorePercentage { get; set; }

    /// <summary>
    /// 考试成绩规则
    /// </summary>
    [Display(Name = "ScoreRule"), Description("考试成绩规则"), MaxLength(32, ErrorMessage = "考试成绩规则 不能超过 32 个字符")]
    public string ScoreRule { get; set; }

    /// <summary>
    /// 学习完成规则
    /// </summary>
    [Display(Name = "StudyFinishedRule"), Description("学习完成规则"), MaxLength(32, ErrorMessage = "学习完成规则 不能超过 32 个字符")]
    public string StudyFinishedRule { get; set; }

    /// <summary>
    /// 是否允许查看答案和解析
    /// </summary>
    public bool? IsViewResult { get; set; }

    /// <summary>
    /// 查看答案和解析后，是否允许重新考试
    /// </summary>
    public bool? IsAfterViewResultRetake { get; set; }

    /// <summary>
    /// 讲师上级ID
    /// </summary>
    public int? ParentTeacherId { get; set; }

    /// <summary>
    /// 上级反馈单ID
    /// </summary>
    public long? ParentFeedbackId { get; set; }

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



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

    /// <summary>
    /// 课程场景ID
    /// </summary>
    public long? CourseSceneId { get; set; }

    public List<DateTime> StartEndTime { get; set; } = new List<DateTime>();

    public List<DateTime> RegisterStartEndTime { get; set; } = new List<DateTime>();

    public List<DateTime> ExamStartEndTime { get; set; } = new List<DateTime>();

    /// <summary>
    /// 开班课表
    /// </summary>
    public List<InsertGhre_OpenClassScheduleInput> Schedules { get; set; } = new List<InsertGhre_OpenClassScheduleInput>();

    /// <summary>
    /// 开班课表
    /// </summary>
    public List<Ghre_Attachment> Attachments { get; set; } = new List<Ghre_Attachment>();
}
