using OASystem.Domain.Entities.Resource;
using System.Text.Json.Serialization;
namespace OASystem.Domain.ViewModels.Resource
{
    public class CountryFeeCostView : Res_CountryFeeCost
    {
        /// 
        /// 距今更新天数
        /// 
        public int DaysSinceUpdate
        {
            get
            {
                var now = DateTime.Now;
                if (!string.IsNullOrWhiteSpace(LastUpdateTime) && DateTime.TryParse(LastUpdateTime, out var lastTime))
                {
                    return (now - lastTime).Days;
                }
                return (now - CreateTime).Days;
            }
        }
    }
    /// 
    /// 省份签证费用详情
    /// 
    public class VisaFeeStandardDetails
    {
        public int Id { get; set; }
        /// 
        /// 签证费用表Id(Res_VisaFeeStandard)
        /// 
        public int ParentId { get; set; }
        /// 
        /// 签证费用归属省份Id(Sys_Cities)
        /// 
        public int ProvinceId { get; set; }
        /// 
        /// 省份名称
        /// 
        public string ProvinceName { get; set; }
        /// 
        /// 送签地址
        /// 
        public string VisaAddress { get; set; }
        /// 
        /// 是否落地签
        /// 
        public bool IsVisaOnArrival { get; set; } = false;
        /// 
        /// 是否电子签
        /// 
        public bool IsElectronicSign { get; set; } = false;
        /// 
        /// 签证时间(工作日)
        /// 
        public string VisaTime { get; set; }
        /// 
        ///  是否免签(大公务)
        /// 
        public bool IsVisaExemptionLarge { get; set; } = false;
        /// 
        /// 签证费用(大公务)
        /// 
        public decimal LargeVisaPrice { get; set; }
        /// 
        /// 代办费(大公务)
        /// 
        public decimal LargeAgencyFee { get; set; } = 0.00m;
        /// 
        ///  是否免签(小公务)
        /// 
        public bool IsVisaExemptionSmall { get; set; } = false;
        /// 
        /// 签证费用(小公务)
        /// 
        public decimal SmallVisaPrice { get; set; } = 0.00m;
        /// 
        /// 代办费(小公务)
        /// 
        public decimal SmallAgencyFee { get; set; } = 0.00m;
        /// 
        ///  外办费用(普通)
        /// 
        public decimal NormExtFee { get; set; } = 0.00m;
        /// 
        /// 外办费用(加急)
        /// 
        public decimal UrgExtFee { get; set; } = 0.00m;
        /// 
        /// 签证是否加急
        /// 
        public bool IsUrgent { get; set; } = false;
        /// 
        /// 加急时间(工作日)
        /// 
        public int UrgentTime { get; set; }
        /// 
        /// 加急费用
        /// 
        public decimal UrgentPrice { get; set; }
        /// 
        /// 加急费用描述 
        /// 
        public string UrgentPriceDesc { get; set; }
        /// 
        /// 备注
        /// 
        public string Remark { get; set; }
        public VisaFeeStandardDetails() { }
        /// 
        /// 按照指定的省份排序
        /// 
        /// 数据源
        /// 省份排序集合
        /// 
        public static List SortByProvinces(List people, List specifiedOrder)
        {
            return people
                .OrderBy(person => specifiedOrder.IndexOf(person.ProvinceName))
                .ThenBy(person => person.ProvinceId) // 对未指定的省份按Id顺序排序
                .ToList();
        }
    }
    public class VisaFeeStandardDetailsView : VisaFeeStandardDetails
    {
        public string CountryName { get; set; }
    }
    /// 
    /// 签证info
    /// 
    public class VisaFeeStandardInfo
    {
        /// 
        /// Id
        /// 
        public int Id { get; set; }
        /// 
        /// 洲名
        /// 
        public string Continent { get; set; }
        /// 
        /// 国家名
        /// 
        public string Country { get; set; }
        /// 
        /// 签证费用类型 0 因公 1 因私
        /// 
        public int FeeType { get; set; } = 0;
    }
    /// 
    /// 签证info View
    /// 
    public class VisaFeeStandardInfoView : VisaFeeStandardInfo
    {
        /// 
        /// 省份签证费用集合
        /// 
        public List VisaFees { get; set; }
    }
    public class VisaFeeStandardListView : VisaFeeStandardInfo
    {
        /// 
        /// 省份签证费用集合
        /// 
        [JsonIgnore]
        public List VisaFees { get; set; }
        /// 
        /// 省份签证费用描述
        /// 
        public string ProvinceVisaFeeLabel
        {
            get
            {
                return GetVisaFeeLabel();
            }
        }
        /// 
        /// 最后更新人
        /// 
        public string LastUpdateUserName { get; set; }
        /// 
        /// 最后更新时间
        /// 
        public DateTime LastUpdateTime { get; set; }
        /// 
        /// 距今更新天数
        /// 
        public int DaysSinceUpdate
        {
            get
            {
                return (DateTime.Now - LastUpdateTime).Days;
            }
        }
        /// 
        /// 获取省份签证描述
        /// 
        /// 
        private string GetVisaFeeLabel()
        {
            var label = new StringBuilder();
            VisaFees.ForEach(info =>
            {
                label.AppendLine($"{info.ProvinceName}");
                label.AppendLine();
                if (FeeType == 0) //因公
                {
                    label.AppendLine($"送签地址: {info.VisaAddress}");
                    var isVisaOnArrival = info.IsVisaOnArrival ? "是" : "否";
                    label.AppendLine($"是否落地签:{isVisaOnArrival}");
                    var isElectronicSign = info.IsElectronicSign ? "是" : "否";
                    label.AppendLine($"是否电子签:{isElectronicSign}");
                    label.AppendLine($"签证时间(工作日):{info.VisaTime}");
                    var isVisaExemptionLarge = info.IsVisaExemptionLarge ? "是" : "否";
                    label.AppendLine($"公务护照免签:{isVisaExemptionLarge}");
                    label.AppendLine($"公务护照签证费:{info.LargeVisaPrice:#0.00}");
                    label.AppendLine($"公务护照签证代办费:{info.LargeAgencyFee:#0.00}");
                    var isVisaExemptionSmall = info.IsVisaExemptionSmall ? "是" : "否";
                    label.AppendLine($"公务普通护照免签:{isVisaExemptionSmall}");
                    label.AppendLine($"公务普通护照签证费:{info.SmallVisaPrice:#0.00}");
                    label.AppendLine($"公务普通护照代办费:{info.SmallAgencyFee:#0.00}");
                    if (info.ProvinceId == 103)
                    {
                        label.AppendLine($"重庆外办出入境证明费用(普通):{info.NormExtFee:#0.00}");
                        label.AppendLine($"重庆外办出入境证明费用(加急):{info.UrgExtFee:#0.00}");
                    }
                    var isUrgent = info.IsUrgent ? "是" : "否";
                    label.AppendLine($"签证是否加急:{isVisaExemptionSmall}");
                    label.AppendLine($"加急时间(工作日):{info.UrgentTime}");
                    label.AppendLine($"加急费用:{info.UrgentPrice:#0.00}");
                    label.AppendLine($"加急费用描述 :{info.UrgentPriceDesc}");
                    label.AppendLine($"备注 :{info.Remark}");
                }
                else if (FeeType == 1) //因私
                {
                    var isVisaExemptionSmall = info.IsVisaExemptionSmall ? "是" : "否";
                    label.AppendLine($"普通护照免签:{isVisaExemptionSmall}");
                    label.AppendLine($"签证费:{info.SmallVisaPrice:#0.00}");
                    label.AppendLine($"送签地点:{info.VisaAddress}");
                    label.AppendLine($"办理时间(工作日):{info.VisaTime}");
                }
                label.AppendLine();
                label.AppendLine();
            });
            return label.ToString();
        }
    }
}