using Model;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
namespace BLL
{
    public static class PMPDataService
    {
        //private static readonly string PmpApiUrl = "http://mdm.cwcec.com:8020/";
        private static readonly string PmpApiUrl = SysConstSetService.WuHuanPMPPath;
        /// 
        /// 根据主项目code获取主项目数据
        /// 
        /// 
        /// 
        public static Model.PMP_Project GetPMPProjectByCode(string proCode)
        {
            return Funs.DB.PMP_Project.OrderBy(x => x.RealEndDate).FirstOrDefault(e => e.StNum == proCode);
        }
        /// 
        /// 根据主项目code获取主项目数据
        /// 
        /// 
        /// 
        public static List GetPMPProjectListByCode(string proCode)
        {
            var list = (from x in Funs.DB.PMP_Project where x.StNum == proCode orderby x.Code select x).ToList();
            return list;
        }
        /// 
        /// 获取token
        /// 
        /// 五环PMP系统token有效期48小时
        /// 
        public static Model.TokenItem GetToken()
        {
            Model.TokenItem tokenItem = new Model.TokenItem();
            tokenItem.Token = BLL.SysConstSetService.WuHuanPMPToken;
            tokenItem.ExpiryTime = BLL.SysConstSetService.WuHuanPMPTokenExTime;
            if (string.IsNullOrEmpty(tokenItem.Token) || string.IsNullOrEmpty(tokenItem.ExpiryTime))
            {
                tokenItem = GetWuHuanPMPToken();
            }
            else if (DateTime.Now > DateTime.Parse(tokenItem.ExpiryTime))
            {
                tokenItem = GetWuHuanPMPToken();
            }
            return tokenItem;
        }
        /// 
        /// 获取五环PMP系统Token
        /// 
        /// 他们的token有效期48小时
        /// 
        public static Model.TokenItem GetWuHuanPMPToken()
        {
            string getUrl = PmpApiUrl + "/api/standard/dis/token?appId=v7lm6i30&appSecret=0qnbsy28e1hldzbm7rnyjs4n93s4eu62";
            TokenItem tokenItem = new TokenItem();
            try
            {
                var strJosn = Http(getUrl);
                if (!string.IsNullOrEmpty(strJosn))
                {
                    JObject obj = JObject.Parse(strJosn);
                    if (obj["data"] != null)
                    {
                        string tokenStr = obj["data"].ToString();
                        tokenItem.Token = tokenStr;
                        tokenItem.ExpiryTime = DateTime.Now.AddHours(40).ToString("yyyy-MM-dd HH:mm:ss");
                        SysConstSetService.SetWuHuanPMPToken(tokenItem.Token);
                        SysConstSetService.SetWuHuanPMPTokenExpirationTime(tokenItem.ExpiryTime);
                    }
                }
            }
            catch (Exception eee)
            {
                ErrLogInfo.WriteLog("获取五环PMP系统Token出错:" + eee.StackTrace + eee.Message);
            }
            return tokenItem;
        }
        /// 
        /// 项目档案查询接口
        /// 
        public static void GetPMPProjectMasterData()
        {
            string url = $"{PmpApiUrl}/api/standard/dis/query_all";
            var token = GetToken();
            Hashtable newToken = new Hashtable { { "Authorization", token.Token } };
            string mess = string.Empty;
            string total = string.Empty;
            string code = string.Empty;
            string data = string.Empty;
            string rows = string.Empty;
            List list = new List();
            int pageSize = 1000;//一次性最多返回1000条数据
            List searchCond = new List();
            for (int pageNum = 1; pageNum < 10; pageNum++)
            {
                var tempData = new
                {
                    actRet = 1,
                    pageNumber = pageNum,
                    pageSize = pageSize,
                    sortName = "id",
                    searchDestCode = "",
                    sortOrder = "desc",
                    searchDisStatus = "",
                    menuName = "项目档案",
                    status = 1,
                    //searchCond = new List