using OASystem.Domain.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OASystem.Domain.Entities.PersonnelModule
{
    /// <summary>
    /// 人事 任务单
    /// 任务分配
    /// </summary>
    [SugarTable("Pm_TaskAllocation")]
    public class Pm_TaskAllocation: EntityBase
    {
        /// <summary>
        /// 团组ID（没有团组为-1）
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int DiId { get; set; }

        /// <summary>
        /// 任务归属部门ID
        /// CompanyId = 2 的部门Id 为任务部门Id
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int DepId { get; set; }

        /// <summary>
        /// 任务名称
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
        public string? TaskName { get; set; }

        /// <summary>
        /// 任务内容
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
        public string? TaskContent { get; set; }

        /// <summary>
        /// 任务优先级 1 2 3 4
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int TaskPriority { get; set; }

        /// <summary>
        /// 任务预计开始时间(由发布者设置开始时间)
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
        public string? PredictBeginTime { get; set; }

        /// <summary>
        /// 任务预计结束时间(由发布者设置结束时间)
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
        public string? PredictEndTime { get; set; }

        /// <summary>
        /// 任务状态
        /// 0 未开始 1 进行中 2 待审核 3 未完成 4 已完成 5 任务终止
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public TaskEnum Status { get; set; } = TaskEnum.NotStarted;

        /// <summary>
        ///  0 否 1 是  
        ///  发布者确认任务是否完成(员工任务完成时间小于或等于有效时间 默认完成)
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int IsComplete { get; set; } = 0;

        /// <summary>
        /// 0 否 1 是  
        /// 是否纳入绩效考核
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int IsIntoPerformance { get; set; } = 0;
    }
}
