using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OASystem.Domain.Entities.Groups
{
    /// <summary>
    /// 团组倒推表
    /// Is....: 0 是 1 否
    /// A:自然日  B:工作日
    /// </summary>
    [SugarTable("Grp_InvertedList")]
    public class Grp_InvertedList : EntityBase
    {
        /// <summary>
        /// 团组Id
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int DiId { get; set; }

        /// <summary>
        /// 报批资料准备时间 - A
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(30)")]
        public string ApprovalDataDt { get; set; }

        /// <summary>
        /// 报批资料准备
        /// 是否完成
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int IsApprovalData { get; set; } = 1;

        /// <summary>
        /// 报批资料准备 
        /// 备注
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
        public string ApprovalDataRemark { get; set; } = "准备报批资料(包括:邀请函,请示,报批行程,报批费用)";

        /// <summary>
        /// 报批时间 - A
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(30)")]
        public string ApprovalDt { get; set; }

        /// <summary>
        /// 报批时间
        /// 1 预批件 2 正常批件 默认值??-1
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int ApprovalType { get; set; }

        /// <summary>
        /// 报批
        /// 是否完成
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int IsApproval { get; set; } = 1;

        /// <summary>
        /// 报批 
        /// 备注
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
        public string ApprovalRemark { get; set; } = "客户准备报批资料并递交到省外办,同时我司开始收集客户签证需要的资料";

        /// <summary>
        /// 出批件时间 - A
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(30)")]
        public string IssueApprovalDt { get; set; }

        /// <summary>
        /// 出批件
        /// 是否完成
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int IsIssueApproval { get; set; } = 1;

        /// <summary>
        /// 出批件 
        /// 备注
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
        public string IssueApprovalRemark { get; set; } = "出预批件、制作护照-护照出";

        /// <summary>
        /// 办护照时间 - B
        /// 弃用
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(30)")]
        public string ApplyPassportDt { get; set; }

        /// <summary>
        /// 办护照
        /// 是否完成
        /// 弃用
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int IsApplyPassport { get; set; } = 1;

        /// <summary>
        /// 办护照 
        /// 备注
        /// 弃用
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
        public string ApplyPassportRemark { get; set; }

        /// <summary>
        /// 签证资料准备时间 - A
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(30)")]
        public string VisaInformationDt { get; set; }

        /// <summary>
        /// 签证资料准备
        /// 是否完成
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int IsVisaInformation { get; set; } = 1;

        /// <summary>
        /// 签证资料准备 
        /// 备注
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
        public string VisaInformationRemark { get; set; } = "汇总客户签证信息,准备送签资料";

        /// <summary>
        /// 送签时间 - B
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(30)")]
        public string SendVisaDt { get; set; }

        /// <summary>
        /// 送签
        /// 是否完成
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int IsSendVisa { get; set; } = 1;

        /// <summary>
        /// 送签 
        /// 备注
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
        public string SendVisaRemark { get; set; } = "签证周期暂无或免签\r\n(签证周期仅供参考)";

        /// <summary>
        /// 出签时间 - B
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(30)")]
        public string IssueVisaDt { get; set; }

        /// <summary>
        /// 出签
        /// 是否完成
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int IsIssueVisa { get; set; } = 1;

        /// <summary>
        /// 出签 
        /// 备注
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
        public string IssueVisaRemark { get; set; } = "外办领取签证";


        /// <summary>
        /// 机票 - B
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(30)")]
        public string AirTicketDt { get; set; }

        /// <summary>
        /// 机票
        /// 是否完成
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int IsAirTicket { get; set; } = 1;

        /// <summary>
        /// 机票 
        /// 备注
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
        public string AirTicketRemark { get; set; } = "机票预订、出票、值机";

        /// <summary>
        /// 酒店 - B
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(30)")]
        public string HotelDt { get; set; }

        /// <summary>
        /// 酒店
        /// 是否完成
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int IsHotel { get; set; } = 1;

        /// <summary>
        /// 酒店 
        /// 备注
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
        public string HotelRemark { get; set; } = "酒店确认、预订、确认号";

        /// <summary>
        /// 行前会 - A
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(30)")]
        public string PreTripMeetingDt { get; set; }

        /// <summary>
        /// 行前会
        /// 是否完成
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int IsPreTripMeeting { get; set; } = 1;

        /// <summary>
        /// 行前会 
        /// 备注
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
        public string PreTripMeetingRemark { get; set; } = "开行前会为出访人员交代细节";

        /// <summary>
        /// 送机 - A
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(30)")]
        public string AirportdDropOffDt { get; set; }

        /// <summary>
        /// 送机
        /// 是否完成
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int IsAirportdDropOff { get; set; } = 1;

        /// <summary>
        /// 送机 
        /// 备注
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(300)")]
        public string AirportdDropOffRemark { get; set; } = "为出访人员办理登机服务及行李打包等";

        #region 每项是否选中 0 false 1 true

        /// <summary>
        /// 送机 是否选中
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "bit")]
        public bool IsSelectedAirportd { get; set; } = true;

        /// <summary>
        /// 报批/提供送签资料 是否选中
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "bit")]
        public bool IsSelectedApprovalData { get; set; } = true;

        /// <summary>
        /// 出批件 是否选中
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "bit")]
        public bool IsSelectedIssueApproval { get; set; } = true;

        /// <summary>
        /// 签证资料准备 是否选中
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "bit")]
        public bool IsSelectedVisaInfo { get; set; } = true;

        /// <summary>
        /// 送签签证 是否选中
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "bit")]
        public bool IsSelectedSendVisa { get; set; } = true;

        /// <summary>
        /// 出签 是否选中
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "bit")]
        public bool IsSelectedIssueVisa { get; set; } = true;

        /// <summary>
        /// 机票 是否选中
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "bit")]
        public bool IsSelectedAirTicket { get; set; } = true;

        /// <summary>
        /// 酒店 是否选中
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "bit")]
        public bool IsSelectedHotel { get; set; } = true;

        /// <summary>
        /// 行前会 是否选中
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "bit")]
        public bool IsSelectedPreTripMeeting { get; set; } = true;

        /// <summary>
        /// 送机 是否选中
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "bit")]
        public bool IsSelectedAirportdDropOff { get; set; } = true;
        #endregion
    }

    /// <summary>
    /// 倒推表签证 国家信息
    /// (数据来源:签证标准费用表 默认值)
    /// </summary>
    [SugarTable("Grp_InvertedListVisaCountry")]
    public class Grp_InvertedListVisaCountry : EntityBase
    {
        /// <summary>
        /// 倒推表Id
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int ILId { get; set; }

        /// <summary>
        /// 国家
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(100)")]
        public string Country { get; set; }

        /// <summary>
        /// 公务类型ID 
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int OfficialTypeId { get; set; }

        /// <summary>
        /// 签证类型ID 
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int VisaTypeId { get; set; }

        /// <summary>
        /// 签证时间(工作日) 
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int VisaDay { get; set; }
    }
}