using MathNet.Numerics.Statistics;
using OASystem.Domain.Entities.Groups;
using System.ComponentModel;

namespace OASystem.API.OAMethodLib.QiYeWeChatAPI.AppNotice
{
    public enum QiyeWeChatEnum
    {
        /// <summary>
        /// 测试用
        /// </summary>
        [Description("groupstatuschat01")]
        TestChat = 0,

        /// <summary>
        /// 团组通知-公司客户群(国交部经理、主管、财务部),发送条件(1.确认出团)
        /// </summary>
        [Description("CompanyCRMChat01")]
        CompanyCRMChat = 1,

        /// <summary>
        /// 团组通知-市场客户群（市场部经理、主管；国交部经理、主管）发送条件(1.确认出团) 暂时不用
        /// </summary>
        [Description("MarketCRMChat01")]
        MarketCRMChat,

        /// <summary>
        /// 团组通知-财务群（财务部全员）,发送条件(1.费用审核-通过;2,团组出访时间出发-7 天，结束-3 天，通知财务三人签合同、收尾款)
        /// </summary>
        [Description("CaiWuChat01")]
        CaiWuChat,

        /// <summary>
        /// 团组通知-国交管理群(国交部经理、主管),发送条件(1.费用审核-提交)
        /// </summary>
        [Description("GuoJiaoLeader01")]
        GuoJiaoLeaderChat,
    }

    public class MarkdownLib
    {

        /// <summary>
        /// 通知文本-确认出团
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public static string GroupStatus_Create(GroupStatus_CreateModel info)
        {
            string result = string.Format(@" `确认出团`  

>团组名称：<font color='info'>{0}</font> 

>团组类型：{1}
>出访日期：<font color='comment'>{2}</font> 
>出访人数/天数：{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;
        }

        /// <summary>
        /// 通知文本-费用申请
        /// </summary>
        /// <returns></returns>
        public static string GroupStatus_ApplyFee(GroupStatus_ApplyFeeModel info)
        {
            string result = string.Format(@" `团组费用录入`  

>团组：<font color='info'>{0}</font> 

<font color='comment'>- </font>{7}

>费用模块：{1}
>费用名称：<font color='warning'>{2}</font>
>付款金额：<font color='warning'>{3}</font>

>申请人：{4}
>申请时间：<font color='comment'>{5}</font> 

<font color='comment'>- </font>当前团组费用待审核数量： {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;
        }

        /// <summary>
        /// 费用审核通知-团组费用-群聊
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public static string AuditResult_ApplyFee_Chat(AuditResult_ApplyFee_GroupModel info)
        {
            string result = string.Format(@" `{0}`  

<font color='{1}'>{2}</font>
>审核时间：<font color='comment'>{8}</font>

>团组：{3}

>费用模块：{4}
>费用名称：<font color='warning'>{5}</font>
>付款金额：<font color='warning'>{6}</font>

>申请人：{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;
        }


        /// <summary>
        /// 费用审核通知-团组费用-用户
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public static string AuditResult_ApplyFee_User(AuditResult_ApplyFee_GroupModel info)
        {
            string result = string.Format(@" `{0}`  

<font color='{1}'>{2}</font>
>审核时间：<font color='comment'>{7}</font>

>团组：{3}

>费用模块：{4}
>费用名称：<font color='warning'>{5}</font>
>付款金额：<font color='warning'>{6}</font>

[详细信息请前往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;
        }

        /// <summary>
        /// 费用支付通知-团组费用-用户
        /// </summary>
        /// <param name="info"></param>
        /// <returns></returns>
        public static string PayResult_Group_ToUser(PayResult_Group_ToUserModel info)
        {
            string result = string.Format(@" `团组费用支付`  

>团组：{0}

>费用模块：{1}
>费用名称：<font color='warning'>{2}</font>
>付款金额：<font color='warning'>{3}</font>

><font color='info'>该笔费用已支付</font>
>支付时间：<font color='comment'>{4}</font>

[详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/) ", info.TeamName, info.PriceModule, info.PriceName, info.Price, info.PayDt);

            return result;
        }

        /// <summary>
        /// 团组出发前一周提醒财务检查合同、尾款
        /// </summary>
        /// <returns></returns>
        public static string GroupRemindersToCaiwuChat(List<Grp_DelegationInfo> list_7day, List<Grp_DelegationInfo> list_3day)
        {
            string teamNames1 = "><font color='comment'>暂无</font>";
            string teamNames2 = "><font color='comment'>暂无</font>";

            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(@" `团组状态提醒`  

><font color='warning'> - 下列团组将于7天内出发：</font>
{0}

><font color='warning'> - 下列团组将于3天内结束：</font>
{1}

<font color='info'>请注意检查合同、尾款状态</font>

[详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/)  ", teamNames1, teamNames2);

            return result;
        }

        /// <summary>
        /// 日付申请提交时推送财务群
        /// </summary>
        /// <returns></returns>
        public static string DailyPayReminders_Create_ToCaiwuChat(DailyPayReminders_Create_ToCaiwuChatModel info)
        {
            string result = string.Format(@" `日付申请录入`  

<font color='comment'>- </font>{6}

>费用名称：<font color='warning'>{0}</font>
>公司：<font color='comment'>{5}</font>
>费用标识：<font color='comment'>{4}</font>
>付款金额：<font color='warning'>{1}</font>

>申请人：{2}
>申请时间：<font color='comment'>{3}</font>

[详细信息请前往OA系统查看](http://oa.pan-american-intl.com:4399/)  ", info.PriceName, info.Price, info.CreateUser, info.CreateDt, info.FeeSign, info.Company, info.TitleStr);

            return result;
        }


        /// <summary>
        /// 日付申请审核结果推送给申请人
        /// </summary>
        /// <returns></returns>
        public static string DailyPayReminder_Audit_ToUser(DailyPayReminder_Audit_ToUserModel info)
        {
            string result = string.Format(@" `日付申请`  

<font color='{0}'>{1}</font>

>费用名称：{2}
>付款金额：<font color='warning'>{3}</font>

>审核时间：<font color='comment'>{4}</font>

 ", info.ResultColor, info.Result, info.PriceName, info.Price, info.AuditDate);

            return result;
        }

        /// <summary>
        /// 日付申请审核结果推送给财务群(总经理审核通过)
        /// </summary>
        /// <returns></returns>
        public static string DailyPayReminder_Audit_ToCaiwuChat(DailyPayReminder_Audit_ToCaiwuChatModel info)
        {
            string result = string.Format(@" `日付申请`  

<font color='info'> - 新增一笔通过总经理审核的日付申请</font>

>费用名称：{0}
>付款金额：<font color='warning'>{1}</font>

>申请人：{2}

>审核时间：<font color='comment'>{3}</font>

 ", info.PriceName, info.Price, info.CreateUser, info.AuditDate);

            return result;
        }

        /// <summary>
        /// 日付申请已付款推送给申请人
        /// </summary>
        /// <returns></returns>
        public static string DailyPayReminder_Pay_ToUser(DailyPayReminder_Pay_ToUserModel info)
        {
            string result = string.Format(@" `日付申请`  

<font color='info'>你有一笔日付申请费用已付款</font>

>费用名称：{0}
>付款金额：<font color='warning'>{1}</font>

>支付时间：<font color='comment'>{2}</font>

 ", info.PriceName, info.Price, info.PayDt);

            return result;
        }


        /// <summary>
        /// 成本通知发送给用户
        /// </summary>
        /// <returns></returns>
        public static string GroupShare_ToUser(GroupShare_ToUserModel info)
        {
            string result = string.Format(@" `成本通知`  

<font color='info'>团组成本费用已更新</font>

>团组名称：{0}
>更新时间：<font color='warning'>{1}</font>

><font color='comment'>请注意在费用录入页面中核对成本信息</font>

><font color='comment'>若无对应团组权限请联系国交部经理或信息部人员</font>

 ", info.TeamName, info.RefreshDate);



            return result;
        }

    }


    #region 实体类

    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; }

        /// <summary>
        /// 财务或总经理审核时间
        /// </summary>
        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; }
        /// <summary>
        /// [更新]一项费用待审核
        /// </summary>
        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; }

        /// <summary>
        /// [更新]一项费用待审核
        /// </summary>
        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

}
