using MathNet.Numerics.Statistics;
using OASystem.Domain.Entities.Groups;
using System.ComponentModel;
namespace OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice
{
    public enum QiyeWeChatEnum
    {
        /// 
        /// 测试用
        /// 
        [Description("groupstatuschat01")]
        TestChat = 0,
        /// 
        /// 团组通知-公司客户群(国交部经理、主管、财务部),发送条件(1.确认出团)
        /// 
        [Description("CompanyCRMChat01")]
        CompanyCRMChat = 1,
        /// 
        /// 团组通知-市场客户群(市场部经理、主管;国交部经理、主管)发送条件(1.确认出团) 暂时不用
        /// 
        [Description("MarketCRMChat01")]
        MarketCRMChat,
        /// 
        /// 团组通知-财务群(财务部全员),发送条件(1.费用审核-通过;2,团组出访时间出发-7 天,结束-3 天,通知财务三人签合同、收尾款)
        /// 
        [Description("CaiWuChat01")]
        CaiWuChat,
        /// 
        /// 团组通知-国交管理群(国交部经理、主管),发送条件(1.费用审核-提交)
        /// 
        [Description("GuoJiaoLeader01")]
        GuoJiaoLeaderChat,
    }
    public class MarkdownLib
    {
        /// 
        /// 通知文本-确认出团
        /// 
        /// 
        /// 
        public static string GroupStatus_Create(GroupStatus_CreateModel info)
        {
            string result = string.Format(@" `确认出团`  
>团组名称:{0} 
>团组类型:{1}
>出访日期:{2} 
>出访人数/天数:{3}人/{4}天 
>客户单位:{5}
>客户名称:{6}
[详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/)
", info.TeamName, info.TeamDid_Text, info.VisitDateRange, info.VisitPNumber, info.VisitDays, info.ClientUnit, info.ClientName);
            return result;
        }
        /// 
        /// 通知文本-费用申请
        /// 
        /// 
        public static string GroupStatus_ApplyFee(GroupStatus_ApplyFeeModel info)
        {
            string result = string.Format(@" `团组费用录入`  
>团组:{0} 
- {7}
>费用模块:{1}
>费用名称:{2}
>付款金额:{3}
>申请人:{4}
>申请时间:{5} 
- 当前团组费用待审核数量: {6}
[详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", info.TeamName, info.PriceModule, info.PriceName, info.Price, info.CreateUser, info.CreateDt, info.QueueCount, info.TitleStr);
            return result;
        }
        /// 
        /// 费用审核通知-团组费用-群聊
        /// 
        /// 
        /// 
        public static string AuditResult_ApplyFee_Chat(AuditResult_ApplyFee_GroupModel info)
        {
            string result = string.Format(@" `{0}`  
{2}
>审核时间:{8}
>团组:{3}
>费用模块:{4}
>费用名称:{5}
>付款金额:{6}
>申请人:{7}
[详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", info.Title, info.ResultColor, info.Result, info.TeamName, info.PriceModule, info.PriceName, info.Price, info.CreateUser, info.GMAuditDate);
            return result;
        }
        /// 
        /// 费用审核通知-团组费用-用户
        /// 
        /// 
        /// 
        public static string AuditResult_ApplyFee_User(AuditResult_ApplyFee_GroupModel info)
        {
            string result = string.Format(@" `{0}`  
{2}
>审核时间:{7}
>团组:{3}
>费用模块:{4}
>费用名称:{5}
>付款金额:{6}
[详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", info.Title, info.ResultColor, info.Result, info.TeamName, info.PriceModule, info.PriceName, info.Price, info.GMAuditDate);
            return result;
        }
        /// 
        /// 费用支付通知-团组费用-用户
        /// 
        /// 
        /// 
        public static string PayResult_Group_ToUser(PayResult_Group_ToUserModel info)
        {
            string result = string.Format(@" `团组费用支付`  
>团组:{0}
>费用模块:{1}
>费用名称:{2}
>付款金额:{3}
>该笔费用已支付
>支付时间:{4}
[详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", info.TeamName, info.PriceModule, info.PriceName, info.Price, info.PayDt);
            return result;
        }
        /// 
        /// 团组出发前一周提醒财务检查合同、尾款
        /// 
        /// 
        public static string GroupRemindersToCaiwuChat(List list_7day, List list_3day)
        {
            string teamNames1 = ">暂无";
            string teamNames2 = ">暂无";
            if (list_7day.Count > 0)
            {
                teamNames1 = "";
                foreach (var item in list_7day)
                {
                    string startDt = item.VisitStartDate.ToString("yyyy-MM-dd");
                    teamNames1 += ">(" + startDt + ")" + item.TeamName + " \n\n";
                }
                //list_7day.ForEach(s => teamNames1 += ">" + s.TeamName + "\n\n");
            }
            if (list_3day.Count > 0)
            {
                teamNames2 = "";
                foreach (var item in list_3day)
                {
                    string endDt = item.VisitEndDate.ToString("yyyy-MM-dd");
                    teamNames2 += ">(" + endDt + ")" + item.TeamName + " \n\n";
                }
                //list_3day.ForEach(s => teamNames2 += ">" + s.TeamName + "\n\n");
            }
            string result = string.Format(@" `团组状态提醒`  
> - 下列团组将于7天内出发:
{0}
> - 下列团组将于3天内结束:
{1}
请注意检查合同、尾款状态
[详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/)  ", teamNames1, teamNames2);
            return result;
        }
        /// 
        /// 日付申请提交时推送财务群
        /// 
        /// 
        public static string DailyPayReminders_Create_ToCaiwuChat(DailyPayReminders_Create_ToCaiwuChatModel info)
        {
            string result = string.Format(@" `日付申请录入`  
- {6}
>费用名称:{0}
>公司:{5}
>费用标识:{4}
>付款金额:{1}
>申请人:{2}
>申请时间:{3}
[详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/)  ", info.PriceName, info.Price, info.CreateUser, info.CreateDt, info.FeeSign, info.Company, info.TitleStr);
            return result;
        }
        /// 
        /// 日付申请审核结果推送给申请人
        /// 
        /// 
        public static string DailyPayReminder_Audit_ToUser(DailyPayReminder_Audit_ToUserModel info)
        {
            string result = string.Format(@" `日付申请`  
{1}
>费用名称:{2}
>付款金额:{3}
>审核时间:{4}
 ", info.ResultColor, info.Result, info.PriceName, info.Price, info.AuditDate);
            return result;
        }
        /// 
        /// 日付申请审核结果推送给财务群(总经理审核通过)
        /// 
        /// 
        public static string DailyPayReminder_Audit_ToCaiwuChat(DailyPayReminder_Audit_ToCaiwuChatModel info)
        {
            string result = string.Format(@" `日付申请`  
 - 新增一笔通过总经理审核的日付申请
>费用名称:{0}
>付款金额:{1}
>申请人:{2}
>审核时间:{3}
 ", info.PriceName, info.Price, info.CreateUser, info.AuditDate);
            return result;
        }
        /// 
        /// 日付申请已付款推送给申请人
        /// 
        /// 
        public static string DailyPayReminder_Pay_ToUser(DailyPayReminder_Pay_ToUserModel info)
        {
            string result = string.Format(@" `日付申请`  
你有一笔日付申请费用已付款
>费用名称:{0}
>付款金额:{1}
>支付时间:{2}
 ", info.PriceName, info.Price, info.PayDt);
            return result;
        }
        /// 
        /// 成本通知发送给用户
        /// 
        /// 
        public static string GroupShare_ToUser(GroupShare_ToUserModel info)
        {
            string result = string.Format(@" `成本通知`  
团组成本费用已更新
>团组名称:{0}
>更新时间:{1}
>请注意在费用录入页面中核对成本信息
>若无对应团组权限请联系国交部经理或信息部人员
 ", info.TeamName, info.RefreshDate);
            return result;
        }
        /// 
        /// 出入境费用明细更改通知发送给用户
        /// 
        /// 
        public static string GroupShare_ToGM(GroupShare_ToGMModel info)
        {
            string result = string.Format(@" `出入境费用明细操作通知`  
>团组:{0} 
>操作人员:{1}
>操作时间:{2} 
[请点击进入明细进行查看或确认]({3}) ", info.TeamName, info.CreateUser, info.RefreshDate, info.Url);
            return result;
        }
        /// 
        /// 出入境费用 确认 通知发送给 财务相关人员
        /// 
        /// 
        public static string GroupShare_ToFinance(GroupShare_ToUserModel info)
        {
            string result = string.Format(@" `出入境费用确认操作通知`  
>团组:{0} 
>操作时间:{1} 
[出入境费用已确认,请进行相关流程操作。] ", info.TeamName, info.RefreshDate);
            return result;
        }
    }
    #region 实体类
    public class GroupShare_ToGMModel : GroupShare_ToUserModel
    {
        public string CreateUser { get; set; }
        public string Url { get; set; }
    }
    public class GroupShare_ToUserModel
    {
        public string TeamName { get; set; }
        public string RefreshDate { get; set; }
    }
    public class DailyPayReminder_Pay_ToUserModel
    {
        public string PriceName { get; set; }
        public string Price { get; set; }
        public string PayDt { get; set; }
    }
    public class DailyPayReminder_Audit_ToCaiwuChatModel
    {
        public string PriceName { get; set; }
        public string Price { get; set; }
        public string CreateUser { get; set; }
        public string AuditDate { get; set; }
    }
    public class DailyPayReminder_Audit_ToUserModel
    {
        public string ResultColor { get; set; } = "info"; //warning
        public string Result { get; set; } = "你有一笔日付申请已通过审核"; // 你有一笔日付申请未通过财务/总经理审核
        public string PriceName { get; set; }
        public string Price { get; set; }
        /// 
        /// 财务或总经理审核时间
        /// 
        public string AuditDate { get; set; }
    }
    public class DailyPayReminders_Create_ToCaiwuChatModel
    {
        public string PriceName { get; set; }
        public string Price { get; set; }
        public string CreateUser { get; set; }
        public string CreateDt { get; set; }
        public string FeeSign { get; set; }
        public string Company { get; set; }
        /// 
        /// [更新]一项费用待审核
        /// 
        public string TitleStr { get; set; } = "[新增]一项费用待审核";
    }
    public class PayResult_Group_ToUserModel
    {
        public string TeamName { get; set; }
        public string PriceModule { get; set; }
        public string PriceName { get; set; }
        public string Price { get; set; }
        public string PayDt { get; set; }
    }
    public class AuditResult_ApplyFee_GroupModel
    {
        public string Title { get; set; } = "团组费用审核结果";
        public string ResultColor { get; set; } = "info";  //info 或 warning
        public string Result { get; set; } = "总经理审核通过"; //总经理审核通过 或 总经理审核未通过 
        public string TeamName { get; set; }
        public string PriceModule { get; set; }
        public string PriceName { get; set; }
        public string Price { get; set; }
        public string CreateUser { get; set; }
        public string GMAuditDate { get; set; }
    }
    public class GroupStatus_ApplyFeeModel
    {
        public string TeamName { get; set; }
        public string PriceModule { get; set; }
        public string PriceName { get; set; }
        public string Price { get; set; }
        public string CreateUser { get; set; }
        public string CreateDt { get; set; }
        public int QueueCount { get; set; }
        /// 
        /// [更新]一项费用待审核
        /// 
        public string TitleStr { get; set; } = "[新增]一项费用待审核";
    }
    public class GroupStatus_CreateModel
    {
        public string TeamName { get; set; }
        public string TeamDid_Text { get; set; }
        public string VisitDateRange { get; set; }
        public int VisitPNumber { get; set; }
        public int VisitDays { get; set; }
        public string ClientUnit { get; set; }
        public string ClientName { get; set; }
    }
    #endregion
}