using OASystem.Domain.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OASystem.Domain.Entities.Groups
{
    /// <summary>
    /// 团组 - 出入境费用
    /// </summary>
    [SugarTable("Grp_EnterExitCost")]
    public class Grp_EnterExitCost : EntityBase
    {
        /// <summary>
        /// 团组Id
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int DiId { get; set; }

        /// <summary>
        /// 境内费用(其他费用)
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
        public decimal InsidePay { get; set; }

        #region 境内费用(其他费用)子项

        /// <summary>
        /// 签证费
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
        public decimal Visa { get; set; }

        /// <summary>
        /// 签证费描述
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(200)")]
        public string? VisaRemark { get; set; }

        /// <summary>
        /// 疫苗费
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
        public decimal YiMiao { get; set; }

        /// <summary>
        /// 核酸检测费用
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
        public decimal HeSuan { get; set; }

        /// <summary>
        /// 服务费用
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
        public decimal Service { get; set; }

        /// <summary>
        /// 参展门票
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
        public decimal Ticket { get; set; }

        /// <summary>
        /// 保险费
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
        public decimal Safe { get; set; }
        
        /// <summary>
        /// 第一项费用描述
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
        public string? FirstItemRemark { get; set; }
        #endregion

        /// <summary>
        /// 国际旅费合计(经济舱)
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
        public decimal OutsideJJPay { get; set; }

        /// <summary>
        ///  国际旅费合计(公务舱)
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
        public decimal OutsideGWPay { get; set; }

        /// <summary>
        /// 国际旅费合计(头等舱)
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
        public decimal OutsideTDPay { get; set; }


        #region 国际旅费合计(经济舱\公务舱\头等舱)

        /// <summary>
        ///  国际机票(经济舱)
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
        public decimal AirJJ { get; set; }

        /// <summary>
        ///  国际机票(公务舱)
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
        public decimal AirGW { get; set; }

        /// <summary>
        ///  国际机票(头等舱)
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
        public decimal AirTD { get; set; }

        /// <summary>
        ///  国外城市间交通费
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,2)")]
        public decimal CityTranffic { get; set; }

        /// <summary>
        ///  第二项费用描述
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
        public string TwoItemRemark { get; set; }

        #region 汇率币种

        /// <summary>
        ///  美元
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,4)")]
        public decimal RateUSD { get; set; }

        /// <summary>
        ///  日元
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,4)")]
        public decimal RateJPY { get; set; }

        /// <summary>
        ///  欧元
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,4)")]
        public decimal RateEUR { get; set; }

        /// <summary>
        ///  英镑 
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,4)")]
        public decimal RateGBP { get; set; }

        /// <summary>
        ///  港币 
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(10,4)")]
        public decimal RateHKD { get; set; }


        /// <summary>
        ///  多个币种存储
        ///  存储方式: 美元(USD):6.2350|.......|墨西哥比索(MXN):1.0000
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(500)")]
        public string? CurrencyRemark { get; set; }

        #endregion

        #endregion

        #region 选择框状态

        /// <summary>
        ///  境内费用(其他费用)选择框
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int ChoiceOne { get; set; }

        /// <summary>
        ///  国际旅费合计选择框
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int ChoiceTwo { get; set; }

        /// <summary>
        ///  经济舱小计选择框
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int SumJJC { get; set; }

        /// <summary>
        ///  公务舱小计选择框
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int SumGWC { get; set; }
        
        /// <summary>
        ///  头等舱小计选择框
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int SumTDC { get; set; }

        /// <summary>
        ///  住宿费合计选择框
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int ChoiceThree { get; set; }

        /// <summary>
        ///  伙食费合计选择框
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int ChoiceFour { get; set; }

        /// <summary>
        ///  公杂费合计选择框
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int ChoiceFive { get; set; }

        /// <summary>
        ///  境内费用(其他费用)选择框
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int ChoiceSix { get; set; }

        /// <summary>
        /// 经济舱选择框 - bottom(老OA使用 新OA弃用)
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int AirJJC_Checked { get; set; }

        /// <summary>
        /// 公务舱选择框 - bottom(老OA使用 新OA弃用)
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int AirGWC_Checked { get; set; }

        /// <summary>
        /// 头等舱选择框 - bottom(老OA使用 新OA弃用)
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int AirTDC_Checked { get; set; }

        #endregion

        /// <summary>
        /// 确认费用(确认费用后 不可更改)
        /// 1:未确认 2:已确认
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int IsConfirm { get; set; } = 1;

        /// <summary>
        /// 其他费用选择框
        /// </summary>
        public int OtherExpenses_Checked { get; set; }
    }
}