using OpenAuth.App.Config;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OpenAuth.App.WorkFlow
{
    public class WFTask
    {
        /// <summary>
        /// 流程单元ID
        /// </summary>
        public string UnitId { get; set; }
        /// <summary>
        /// 任务名称
        /// </summary>
        public string Name { get; set; }
        /// <summary>
        /// 任务令牌
        /// </summary>
        public string Token { get; set; }
        /// <summary>
        /// 任务类型 1.审核任务 2传阅任务 3.子流程 4.重新创建 5.会签任务 10.脚本任务 21.等待任务（系统自己完成）22.取消等待任务 23.找不到审核人直接跳过 24.自动审核规则跳过 25.会签任务记录 26 更新任务状态 100 结束任务
        /// </summary>
        public int Type { get; set; }
        /// <summary>
        /// 上一个流程单元ID
        /// </summary>
        public string PrevUnitId { get; set; }
        /// <summary>
        /// 上一个流程单元名称
        /// </summary>
        public string PrevUnitName { get; set; }
        /// <summary>
        /// 是否是驳回任务
        /// </summary>
        public bool IsReject { get; set; }
        /// <summary>
        /// 是否允许批量审核
        /// </summary>
        public bool IsBatchAudit { get; set; }

        /// <summary>
        /// 通知策略 1.短信 2.邮箱 3.微信 4.IM
        /// </summary>
        public string MessageType { get; set; }

        /// <summary>
        /// 是否超时通知
        /// </summary>
        public bool IsOvertimeMessage { get; set; }
        /// <summary>
        /// 第一次通知 单位（时）
        /// </summary>
        public int OvertimeMessageStart { get; set; }
        /// <summary>
        /// 间隔通知 单位（时）
        /// </summary>
        public int OvertimeMessageInterval { get; set; }
        /// <summary>
        /// 超时流转时间 单位（时）
        /// </summary>
        public int OvertimeGo { get; set; }
        /// <summary>
        /// 超时通知策略 1.短信 2.邮箱 3.微信 4.IM
        /// </summary>
        public string OvertimeMessageType { get; set; }

        /// <summary>
        /// 脚本执行类型 1SQL 2接口 3IOC
        /// </summary>
        public string ExecuteType { get; set; }
        /// <summary>
        /// 执行SQL数据库编码
        /// </summary>
        public string SqlDb { get; set; }
        /// <summary>
        /// 执行SQL语句
        /// </summary>
        public string SqlStr { get; set; }
        /// <summary>
        /// 撤回的时候执行SQL语句
        /// </summary>
        public string SqlStrRevoke { get; set; }
        /// <summary>
        /// 调用接口
        /// </summary>
        public string ApiUrl { get; set; }
        /// <summary>
        /// 撤回的时候调用接口
        /// </summary>
        public string ApiUrlRevoke { get; set; }
        /// <summary>
        /// 注入类名
        /// </summary>
        public string Ioc { get; set; }
        /// <summary>
        /// 撤回的时候注入类名
        /// </summary>
        public string IocRevoke { get; set; }

        /// <summary>
        /// 处理人信息
        /// </summary>
        public WFUserInfo User { get; set; }
        /// <summary>
        /// 子流程的流程模板id
        /// </summary>
        public string ChildSchemeInfoId { get; set; }
    }
}
