using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OASystem.Domain.Dtos.QiYeWeChat
{
    /// <summary>
    /// 企业微信 
    /// 审批数据(旧) Dto
    /// </summary>
    public class ApprovalData_Request
    {
        /// <summary>
        /// 调用接口凭证。必须使用审批应用的secret获取
        /// </summary>
        public string? access_token { get; set; }

        /// <summary>
        /// 获取审批记录的开始时间。Unix时间戳
        /// </summary>
        public uint starttime { get; set; }

        /// <summary>
        /// 获取审批记录的结束时间。Unix时间戳
        /// </summary>
        public uint endtime { get; set; }

        /// <summary>
        /// 第一个拉取的审批单号,不填从该时间段的第一个审批单拉取
        /// </summary>
        public long? next_spnum { get; set; }
    }


    /// <summary>
    /// 企业微信 
    /// 批量获取审批单号  Dto
    /// </summary>
    public class ApprovalInfo_Request
    {
        /// <summary>
        /// 调用接口凭证。必须使用审批应用或企业内自建应用的secret获取
        /// </summary>
        public string? access_token { get; set; }

        /// <summary>
        /// 审批单提交的时间范围,开始时间,UNix时间戳
        /// </summary>
        public long starttime { get; set; }

        /// <summary>
        /// 审批单提交的时间范围,结束时间,UNix时间戳
        /// </summary>
        public long endtime { get; set; }

        /// <summary>
        /// 分页查询游标,默认为空串,后续使用返回的new_next_cursor进行分页拉取
        /// </summary>
        public string? new_cursor { get; set; }

        /// <summary>
        /// 一次请求拉取审批单数量,默认值为100,上限值为100。若accesstoken为自建应用,仅允许获取在应用可见范围内申请人提交的表单,
        /// 返回的sp_no_list个数可能和size不一致,开发者需用next_cursor判断表单记录是否拉取完
        /// </summary>
        public int size { get; set; } = 100;
        /// <summary>
        /// 筛选条件,可对批量拉取的审批申请设置约束条件,支持设置多个条件
        /// key   筛选类型,包括:
        /// key   template_id - 模板类型/模板id;
        /// key   creator - 申请人;
        /// key   department - 审批单提单者所在部门;
        /// key   sp_status - 审批状态;
        /// key   record_type - 审批单类型属性,1-请假;2-打卡补卡;3-出差;4-外出;5-加班; 6- 调班;7-会议室预定;8-退款审批;9-红包报销审批
        /// key   注意:
        /// key   1、仅“部门”支持同时配置多个筛选条件。
        /// key   2、不同类型的筛选条件之间为“与”的关系,同类型筛选条件之间为“或”的关系
        /// key   3、record_type筛选类型仅支持2021/05/31以后新提交的审批单,历史单不支持表单类型属性过滤
        /// value 筛选值,对应为:template_id-模板id;creator-申请人userid ;department-所在部门id;sp_status-审批单状态(1-审批中;2-已通过;3-已驳回;4-已撤销;6-通过后撤销;7-已删除;10-已支付)
        /// </summary>
        public List<Dic>? filters { get; set; }
    }

    public class Dic
    {
        public string key { get; set; }

        public string value { get; set; }
    }

    /// <summary>
    /// 企业微信
    /// 获取审批申请详情 Dto
    /// </summary>
    public class ApprovalDetail_Request
    {

        /// <summary>
        /// 调用接口凭证。必须使用审批应用或企业内自建应用的secret获取
        /// </summary>
        public string? access_token { get; set; }

        /// <summary>
        /// 审批单编号
        /// </summary>
        public string sp_no { get; set; }

    }

    public class RobotSendMsg_GroupInfo_Param
    {
        public string msgtype { get; set; } = "markdown";

        /// <summary>
        /// 
        /// </summary>
        public RobotSendMsg_GroupInfo_Content markdown { get; set; }

    }

    public class RobotSendMsg_GroupInfo_Content
    {
        public string content { get; set; }
    }

    public class GroupStatus_CreateChat
    {
        /// <summary>
        /// 群聊名,最多50个utf8字符,超过将截断
        /// </summary>
        public string name { get; set; }

        /// <summary>
        /// 指定群主的id。如果不指定,系统会随机从userlist中选一人作为群主
        /// </summary>
        public string owner { get; set; }

        /// <summary>
        /// 群成员id列表。至少2人,至多2000人
        /// </summary>
        public List<string> userlist { get; set; }

        /// <summary>
        /// 群聊的唯一标志,不能与已有的群重复;字符串类型,最长32个字符。只允许字符0-9及字母a-zA-Z。如果不填,系统会随机生成群id
        /// </summary>
        public string chatid { get; set; }
    }

    public class GroupStatus_AppChatSend_Markdown
    {
        public string chatid { get; set; }
        public string msgtype { get; set; }
        public RobotSendMsg_GroupInfo_Content markdown { get; set; }
    }

    public class GroupStatus_AppSend_Markdown
    {
        /// <summary>
        /// 成员ID列表(消息接收者,多个接收者用‘|’分隔,最多支持1000个)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送
        /// </summary>
        public string touser { get; set; } = "";

        /// <summary>
        /// 部门ID列表,多个接收者用‘|’分隔,最多支持100个。当touser为@all时忽略本参数
        /// </summary>
        public string toparty { get; set; } = "";

        /// <summary>
        /// 标签ID列表,多个接收者用‘|’分隔,最多支持100个。当touser为@all时忽略本参数
        /// </summary>
        public string totag { get; set; } = "";

        /// <summary>
        /// 消息类型,此时固定为:markdown
        /// </summary>
        public string msgtype { get; set; } = "markdown";

        /// <summary>
        /// 企业应用的id,整型。企业内部开发,可在应用的设置页面查看;第三方服务商,可通过接口 获取企业授权信息 获取该参数值
        /// </summary>
        public int agentid { get; set; } = 1000008;

        /// <summary>
        /// markdown内容,最长不超过2048个字节,必须是utf8编码
        /// </summary>
        public RobotSendMsg_GroupInfo_Content markdown { get; set; }

        /// <summary>
        /// 表示是否开启重复消息检查,0表示否,1表示是,默认0
        /// </summary>
        public int enable_duplicate_check { get; set; } = 0;

        /// <summary>
        /// 表示是否重复消息检查的时间间隔,默认1800s,最大不超过4小时
        /// </summary>
        public int duplicate_check_interval { get; set; } = 1800;
    }
}