using CP.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using CP.Common;
using System.Configuration;
using System.Linq.Expressions;

namespace CP.Kjh.Models
{
    public class RouteHelper
    {
        #region 配置
        private static readonly Lazy<List<RouteModel>> routeList = new Lazy<List<RouteModel>>(() =>
        {
            var data = OtherHelper.ConvertXMLToObject<RouteModel>(HttpContext.Current.Server.MapPath($@"{ConfigurationManager.AppSettings["RouteXml"]}"));
            data.ForEach(p =>
            {
                if (p.ViewNewName.IsEmpty())
                    p.ViewNewName = p.OldName;
            });
            return data;
        });
        private static readonly Lazy<List<RouteModel>> homeRouteList = new Lazy<List<RouteModel>>(() => OtherHelper.ConvertXMLToObject<RouteModel>(HttpContext.Current.Server.MapPath($@"{ConfigurationManager.AppSettings["HomeRouteXml"]}")));


        /// <summary>
        /// 彩种类型配置数据
        /// </summary>
        public static List<RouteModel> RouteList { get { return routeList.Value; } }

        /// <summary>
        /// 首页的路由配置数据
        /// </summary>
        public static List<RouteModel> HomeRouteList { get { return homeRouteList.Value; } }

        #endregion



        /// <summary>
        /// 得到新版类型名称
        /// </summary>
        /// <param name="oldTypeName"></param>
        /// <returns></returns>
        public static string GetNewTypeName(string oldTypeName)
        {
            var list = RouteList.Where(p => p.OldName == oldTypeName).ToList();
            if (list.Count > 0)
                return list[0].NewName;
            return oldTypeName;
        }

        /// <summary>
        /// 得到旧版类型名称
        /// </summary>
        /// <param name="newTypeName"></param>
        /// <returns></returns>
        public static string GetOldTypeName(string newTypeName)
        {
            var list = RouteList.Where(p => p.NewName == newTypeName).ToList();
            if (list.Count > 0)
                return list[0].OldName;
            return newTypeName;

        }

      
        /// <summary>
        /// 得到路由集合
        /// </summary>
        /// <returns></returns>
        public static List<RouteModel> GetRouteList(CzTypeEnum? czTypeEnum)
        {
            if (czTypeEnum.HasValue)
                return RouteList.Where(p => p.CzTypeEnum == (int)czTypeEnum && p.IsShow == true).ToList();
            return RouteList;
        }

        /// <summary>
        /// 得到首页的路由集合
        /// </summary>
        /// <returns></returns>
        public static List<RouteModel> GetHomeRouteList()
        {
            return HomeRouteList;
        }

    }
}