using OASystem.Domain.Dtos.QiYeWeChat;
using OASystem.Domain.ViewModels.QiYeWeChat;
namespace OASystem.API.OAMethodLib.QiYeWeChatAPI
{
    /// 
    /// 企业微信Api 服务
    /// 
    public interface IQiYeWeChatApiService
    {
        ///// 
        ///// 获取access_token
        ///// 
        ///// 
        ///// 1:人事助手 
        ///// 2:打卡
        ///// 3:邮件
        ///// 6:团组状态通知
        ///// 
        ///// 
        //Task GetToken(int applicationType);
        /// 
        /// 创建员工
        /// 
        /// 
        /// 
        Task CreateAsync(Create_Request create_Request);
        /// 
        /// 获取成员ID列表
        /// 
        /// 
        Task GetUserIdListAsync();
        /// 
        /// 获取成员信息
        /// 
        /// 
        Task GetUserInfosAsync();
        /// 
        /// 获取企业所有打卡规则
        /// 
        /// 
        Task GetCheckIn_CorpCheckInOptionAsync();
        /// 
        /// 获取月打卡数据
        /// 
        /// 
        /// 
        /// 
        Task GetCheckin_MonthDataAsync(DateTime startDt, DateTime endDt);
        /// 
        /// 获取月打卡数据 Redis
        /// 
        /// 
        /// 
        /// 
        Task GetCheckin_MonthDataRedisAsync(DateTime startDt, DateTime endDt);
        /// 
        /// 获取打卡记录数据
        /// 
        /// 需要获取打卡记录的用户列表
        /// 打卡类型。1:上下班打卡;2:外出打卡;3:全部打卡
        /// 获取打卡记录的开始时间。Unix时间戳
        /// 获取打卡记录的结束时间。Unix时间戳
        /// 
        Task GetCheckinDataAsync(List useridlist, int opencheckindatatype, DateTime startDt, DateTime endDt);
        /// 
        /// 获取打卡日报数据
        /// 
        /// 
        /// 
        /// 
        /// 
        Task GetCheckInDayDataAsync(List useridlist, DateTime startDt, DateTime endDt);
        /// 
        /// 获取审批数据(旧)
        /// 
        /// 
        /// 
        /// 
        Task GetApprovalDataAsync(DateTime startDt, DateTime endDt);
        /// 
        /// 获取审批数据(旧)
        /// 
        /// 
        /// 
        /// 
        Task> GetApprovalDatasAsync(DateTime startDt, DateTime endDt);
        /// 
        /// 获取审批数据(旧)(redis缓存)
        /// 
        /// 
        /// 
        /// 
        Task> GetApprovalDatasRedisAsync(DateTime startDt, DateTime endDt);
        ///// 
        ///// 批量获取审批单号
        ///// 
        ///// 
        ///// 
        ///// 
        ///// sp_status-审批单状态(1-审批中;2-已通过;3-已驳回;4-已撤销;6-通过后撤销;7-已删除;10-已支付)
        ///// 
        ///// 
        //Task GetApprovalInfoAsync(DateTime startDt, DateTime endDt, int record_type);
        //// 
        /// 批量获取审批详情
        /// 
        /// 
        /// 
        /// 申请人
        /// 
        /// 
        /// sp_status-审批单状态(1-审批中;2-已通过;3-已驳回;4-已撤销;6-通过后撤销;7-已删除;10-已支付)
        /// 
        /// 
        /// record_type - 审批单类型属性,1-请假;2-打卡补卡;3-出差;4-外出;5-加班; 6- 调班;7-会议室预定;8-退款审批;9-红包报销审批
        /// 
        /// 
        Task> GetApprovalDetailsAsync(DateTime startDt, DateTime endDt, string creator, int sp_status, int record_type);
        /// 
        /// 获取审批模板详情
        /// 
        /// 模板Id
        /// 
        Task GetTemplateDetailAsync(string template_id);
        /// 
        /// 获取审批详情
        /// 
        /// 审批No
        /// 
        Task GetApprovalDetailAsync(string spNo);
        /// 
        /// hook 发送团组出发信息给财务群
        /// 
        /// 
        /// 
        Task RobotSendMsg_GroupInfo(string msg);
        #region 团组状态通知
        /// 
        /// 获取部门成员
        /// 
        /// 
        Task GroupStatus_GetUserList(int departmentId = 8402038);
        /// 
        /// 创建群聊
        /// 
        /// 
        Task GroupStatus_CreateChat(string chatName, string owner, List userList, string chatId);
        /// 
        /// 向群聊发送消息
        /// 
        /// 
        /// 
        /// 
        Task GroupStatus_SendChatMsg_Markdown(string chatId, string msgContent, string msgType = "markdown");
        /// 
        /// 向用户发送信息
        /// 
        /// 
        /// 
        /// 
        /// 
        Task GroupStatus_SendMessage_ToUser_Markdown(List toUser, string msgContent, string msgType = "markdown");
        #endregion
    }
}