using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

#nullable disable

namespace Ropin.Inspection.Model.Entities
{
    /// <summary>
    /// 任务计划表
    /// </summary>
    public class TasksQz : BaseViewModel
    {
        [Required, MaxLength(50)]
        public string C_StoreCode { get; set; }
        [Key]
        public Guid Id { get; set; } = Guid.NewGuid();
        /// <summary>
        /// 任务名称
        /// </summary>
        [MaxLength(200)]
        public string Name { get; set; }
        /// <summary>
        /// 任务分组
        /// </summary>
        [MaxLength(200)]
        public string JobGroup { get; set; }
        /// <summary>
        /// 任务运行时间表达式
        /// </summary>
        [MaxLength(200)]
        public string Cron { get; set; }
        /// <summary>
        /// 任务所在DLL对应的程序集名称
        /// </summary>
        [MaxLength(200)]
        public string AssemblyName { get; set; }
        /// <summary>
        /// 任务所在类
        /// </summary>
        [MaxLength(200)]
        public string ClassName { get; set; }
        /// <summary>
        /// 任务描述
        /// </summary>
        [MaxLength(1000)]
        public string Remark { get; set; }
        /// <summary>
        /// 执行次数
        /// </summary>
        [Required]
        public int RunTimes { get; set; }
        /// <summary>
        /// 开始时间
        /// </summary>
        [Required]
        public DateTime? BeginTime { get; set; }
        /// <summary>
        /// 结束时间
        /// </summary>
        [Required]
        public DateTime? EndTime { get; set; }
        /// <summary>
        /// 触发器类型(0、simple 1、cron)
        /// </summary>
        [Required]
        public int TriggerType { get; set; }
        /// <summary>
        /// 执行间隔时间, 秒为单位
        /// </summary>
        public int IntervalSecond { get; set; }
        /// <summary>
        /// 循环执行次数
        /// </summary>
        public int CycleRunTimes { get; set; }
        /// <summary>
        /// 是否启动
        /// </summary>
        public bool IsStart { get; set; } = false;
        /// <summary>
        /// 执行传参
        /// </summary>
        public string JobParams { get; set; }

        public bool? IsDeleted { get; set; }
        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreateTime { get; set; } = DateTime.Now;

        /// <summary>
        /// 创建者
        /// </summary>
        public Guid CreateBy { get; set; }
        /// <summary>
        /// 任务内存中的状态
        /// </summary>
        public List<TaskInfoDto> Triggers { get; set; }
        public virtual ICollection<TaskInfoDto> TaskInfoDtos { get; set; }

        //[ForeignKey("C_LicenseCode")]
        //public virtual TSYS_License LicenseCode { get; set; }

    }

    //public partial class TasksQz
    //{
    //    public TasksQz()
    //    {
    //        TaskInfoDtos = new HashSet<TaskInfoDto>();
    //    }

    //    public Guid Id { get; set; }
    //    public string C_LicenseCode { get; set; }
    //    public string Name { get; set; }
    //    public string JobGroup { get; set; }
    //    public string Cron { get; set; }
    //    public string AssemblyName { get; set; }
    //    public string ClassName { get; set; }
    //    public string Remark { get; set; }
    //    public int RunTimes { get; set; }
    //    public DateTime BeginTime { get; set; }
    //    public DateTime EndTime { get; set; }
    //    public int TriggerType { get; set; }
    //    public int IntervalSecond { get; set; }
    //    public int CycleRunTimes { get; set; }
    //    public bool IsStart { get; set; }
    //    public string JobParams { get; set; }
    //    public bool? IsDeleted { get; set; }
    //    public DateTime CreateTime { get; set; }
    //    public Guid CreateBy { get; set; }

    //    public virtual ICollection<TaskInfoDto> TaskInfoDtos { get; set; }
    //}
}