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

namespace OASystem.Domain.Entities.Groups
{
    /// <summary>
    /// 签证进度表
    /// </summary>
    [SugarTable("Grp_VisaProgress")]
    public class Grp_VisaProgress : EntityBase
    {
        /// <summary>
        /// 团组表Id
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int DiId { get; set; }
        /// <summary>
        /// 国家
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
        public string Country { get; set; }
        /// <summary>
        /// 收集资料
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
        public string GetData { get; set; }
        /// <summary>
        /// 收集资料时间
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
        public DateTime GetDataTime { get; set; }
        /// <summary>
        /// 取护照
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
        public string GetPassport { get; set; }
        /// <summary>
        /// 取护照时间
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
        public DateTime GetPassportTime { get; set; }
        /// <summary>
        /// 填资料
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
        public string FillData { get; set; }
        /// <summary>
        /// 填资料时间
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
        public DateTime FillDataTime { get; set; }
        /// <summary>
        /// 送签
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
        public string SendVisa { get; set; }
        /// <summary>
        /// 送签时间
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
        public DateTime SendVisaTime { get; set; }
        /// <summary>
        /// 出签
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
        public string SignOut { get; set; }
        /// <summary>
        /// 出签时间
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
        public DateTime SignOutTime { get; set; }
        /// <summary>
        /// 归还护照
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
        public string SendBackPassport { get; set; }
        /// <summary>
        /// 归还护照时间
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "DateTime")]
        public string SendBackPassporTime { get; set; }
        /// <summary>
        /// 护照接收者
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
        public string Receiver { get; set; }
    }


    /// <summary>
    /// 签证进度客户表
    /// 同团组下同一客户在不同国家数据是重复的
    /// </summary>
    [SugarTable("Grp_VisaProgressCustomer")]
    public class Grp_VisaProgressCustomer : EntityBase
    {
        /// <summary>
        /// 团组表Id
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int DiId { get; set; }

        /// <summary>
        /// 客户表Id
        /// DeleClient.Id
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int CustomerId { get; set; }

        /// <summary>
        /// 客户姓
        /// 正式使用新版OA后弃用
        /// </summary>
        [SugarColumn(IsNullable = false, ColumnDataType = "varchar(50)")]
        public string LastName { get; set; }

        /// <summary>
        /// 客户名
        /// 正式使用新版OA后弃用
        /// </summary>
        [SugarColumn(IsNullable = false, ColumnDataType = "varchar(50)")]
        public string FirstName { get; set; }

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

        /// <summary>
        /// 该国家签证进度
        /// 0：未完成，1：已完成，2：忽略，3：签证未通过
        /// </summary>
        [SugarColumn(IsNullable = false, ColumnDataType = "int")]
        public int WorkStatus { get; set; }

        /// <summary>
        /// 最后操作人Id
        /// 新增时为空
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int LastOperatorId { get; set; }

        /// <summary>
        /// 最后操作时间
        /// 新增时为空
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "datetime")]
        public DateTime LastOperatorDt { get; set; }
    }

    public enum Enum_DelegationVisaPicType
    {
        [Description("护照首页")]
        FirstPage,

        [Description("批件")]
        Documents,

        [Description("免签证明")]
        Exemption,

        [Description("派遣函红头文件")]
        Dispatch,

        [Description("签证页")]
        Visa,

        [Description("发票")]
        Invoice
    }

    [SugarTable("Grp_VisaProgressCustomerPicture")]
    public class Grp_VisaProgressCustomerPicture : EntityBase
    {
        /// <summary>
        /// 签证进度客户表Id
        /// </summary>
        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
        public int VisaProgressCustomerId { get; set; }

        /// <summary>
        /// 图片名称
        /// </summary>
        [SugarColumn(IsNullable = false, ColumnDataType = "varchar(100)")]
        public string PicName { get; set; }

        /// <summary>
        /// 图片路径
        /// </summary>
        [SugarColumn(IsNullable = false, ColumnDataType = "nvarchar(200)")]
        public string PicPath { get; set; }

        /// <summary>
        /// 图片所属签证上传类型
        /// 0：护照首页
        /// 1：批件
        /// 2：免签证明
        /// 3：派遣函红头文件
        /// 4：签证页
        /// 5：发票
        /// </summary>
        [SugarColumn(IsNullable = false, ColumnDataType = "int")]
        public Enum_DelegationVisaPicType PicType { get; set; }
    }
}
