using Newtonsoft.Json;
using OASystem.Domain.Attributes;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OASystem.Domain.Dtos.Groups
{
    /// <summary>
    /// 接团客户名单
    /// </summary>
    public class TourClientListDto
    {
    }


    /// <summary>
    /// 接团客户名单
    /// 根据团组Id查询List
    /// </summary>
    public class TourClientListByDiIdDto : UserPageFuncDtoBase
    {
        public int DiId { get; set; }
    }

    /// <summary>
    /// 接团客户名单
    /// 基础数据 Dto
    /// </summary>
    public class TourClientListBasicDataInitDto : UserPageFuncDtoBase { }

    /// <summary>
    /// 接团客户名单
    /// 根据Id 查询 Details
    /// </summary>
    public class TourClientListDetailsDto : UserPageFuncDtoBase
    {
        public int Id { get; set; }
    }

    /// <summary>
    /// 接团客户名单
    /// Add Or Edit
    /// </summary>
    public class TourClientListAddOrEditDto : UserPageFuncDtoBase
    {
        /// <summary>
        /// 数据Id
        /// Id == 0 Add 
        /// Id >= 1 Update 
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 团组Id
        /// </summary>
        public int DiId { get; set; }

        /// <summary>
        /// 是否陪同
        /// 1 否 2 是
        /// </summary>
        public int IsAccompany { get; set; } = 1;

        /// <summary>
        /// 姓
        /// </summary>
        [Encrypted]
        public string? LastName { get; set; }

        /// <summary>
        /// 名
        /// </summary>
        [Encrypted]
        public string? FirstName { get; set; }

        /// <summary>
        /// 姓名拼音
        /// 姓/名 eg: LEI/YI
        /// </summary>
        [Encrypted]
        public string? Pinyin { get; set; }

        /// <summary>
        /// 性别
        /// 0 男1 女 -1 未设置
        /// </summary>
        public int Sex { get; set; }

        /// <summary>
        /// 手机号
        /// </summary>
        [Encrypted]
        public string? Phone { get; set; }

        /// <summary>
        /// 公司名全称
        /// </summary>
        [Encrypted]
        public string? CompanyFullName { get; set; }

        /// <summary>
        /// 职位
        /// </summary>
        [Encrypted]
        public string? Job { get; set; }

        /// <summary>
        /// 身份证No
        /// </summary>
        [Encrypted]
        public string? IDCardNo { get; set; }

        /// <summary>
        /// 生日
        /// </summary>
        public string? BirthDay { get; set; }

        /// <summary>
        /// 舱位类型(数据类型表Id)
        /// </summary>
        public int ShippingSpaceTypeId { get; set; }

        /// <summary>
        /// 舱位特殊需求
        /// </summary>
        public string? ShippingSpaceSpecialNeeds { get; set; }

        /// <summary>
        /// 酒店特殊需求
        /// </summary>
        public string? HotelSpecialNeeds { get; set; }

        /// <summary>
        /// 餐食特殊需求
        /// </summary>
        public string? MealSpecialNeeds { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string? Remark { get; set; }
    }

    /// <summary>
    /// json字符串 AddMultiple(添加多个)
    /// </summary>
    public class PostTourClientListJsonFormatAddMultipleDto : UserPageFuncDtoBase
    {
        /// <summary>
        /// 团组Id
        /// </summary>
        public int DiId { get; set; }

        /// <summary>
        /// json字符串
        /// </summary>
        public string JsonLabel { get; set; }
    }




    /// <summary>
    /// 接团客户名单
    /// AddMultiple
    /// </summary>
    public class TourClientListAddMultipleDto : UserPageFuncDtoBase
    {
        /// <summary>
        /// 团组Id
        /// </summary>
        public int DiId { get; set; }

        /// <summary>
        /// 接团客户名单
        /// AddMultiple Infos
        /// </summary>
        public List<TourClientListInfo>? TourClientListInfos { get; set; }

    }

    /// <summary>
    /// 接团客户名单
    /// AddMultiple Info
    /// </summary>
    public class TourClientListInfoCN
    {
        /// <summary>
        /// 姓
        /// </summary>
        [JsonProperty("姓名")]
        [Encrypted]
        public string? Name { get; set; }

        /// <summary>
        /// 性别
        /// 0 男1 女 其他值 未设置
        /// </summary>
        [JsonProperty("性别")]
        public string Sex { get; set; } 

        /// <summary>
        /// 公司名全称
        /// </summary>
        [JsonProperty("单位")]
        [Encrypted]
        public string? CompanyFullName { get; set; }

        /// <summary>
        /// 职位
        /// </summary>
        [JsonProperty("职务")]
        [Encrypted]
        public string? Job { get; set; }

        /// <summary>
        /// 生日
        /// </summary>
        [JsonProperty("出生日期")]
        public string? BirthDay { get; set; }
    }


    /// <summary>
    /// 接团客户名单
    /// AddMultiple Info
    /// </summary>
    public class TourClientListInfo
    {
        /// <summary>
        /// 是否陪同
        /// 1 否 2 是
        /// </summary>
        public int IsAccompany { get; set; } = 1;
        /// <summary>
        /// 姓
        /// </summary>
        [Encrypted]
        public string? LastName { get; set; }

        /// <summary>
        /// 名
        /// </summary>
        [Encrypted]
        public string? FirstName { get; set; }

        /// <summary>
        /// 拼音
        /// </summary>
        [Encrypted]
        public string Pinyin { get; set; }

        /// <summary>
        /// 性别
        /// 0 男1 女 其他值 未设置
        /// </summary>
        public int Sex { get; set; }

        /// <summary>
        /// 公司名全称
        /// </summary>
        [Encrypted]
        public string? CompanyFullName { get; set; }

        /// <summary>
        /// 职位
        /// </summary>
        [Encrypted]
        public string? Job { get; set; }

        /// <summary>
        /// 身份证No
        /// </summary>
        [Encrypted]
        public string? IDCardNo { get; set; }

        /// <summary>
        /// 手机号
        /// </summary>
        [Encrypted]
        public string? Phone { get; set; }

        /// <summary>
        /// 生日
        /// </summary>
        public string? BirthDay { get; set; }

        /// <summary>
        /// 舱位类型(数据类型表Id)
        /// </summary>
        public int ShippingSpaceTypeId { get; set; }

        /// <summary>
        /// 舱位特殊需求
        /// </summary>
        public string? ShippingSpaceSpecialNeeds { get; set; }

        /// <summary>
        /// 酒店特殊需求
        /// </summary>
        public string? HotelSpecialNeeds { get; set; }

        /// <summary>
        /// 餐食特殊需求
        /// </summary>
        public string? MealSpecialNeeds { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string? Remark { get; set; }
    }




    public class TourClientListProcessInfo : TourClientListInfo
    {
        public int Id { get; set; } 
    }

    // <summary>
    /// 接团客户名单
    /// AddMultiple Info
    /// </summary>
    public class TourClientListInfo1
    {
        /// <summary>
        /// 姓
        /// </summary>
        public string LastName { get; set; }
        /// <summary>
        /// 名
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 性别
        /// </summary>
        public string Sex { get; set; }
        /// <summary>
        /// 生日
        /// </summary>
        public string Birthday { get; set; }
        /// <summary>
        /// 身份证
        /// </summary>
        public string IDcard { get; set; } 
        /// <summary>
        /// 单位
        /// </summary>
        public string Company { get; set; }
        /// <summary>
        /// 职位
        /// </summary>
        public string Job { get; set; }
        /// <summary>
        /// 手机号
        /// </summary>
        public string Phone { get; set; }

        /// <summary>
        /// 仓位类型
        /// </summary>
        public int Berth { get; set; } = 460;

        /// <summary>
        /// 仓位备注
        /// </summary>
        public string BerthNotes { get; set; }

        /// <summary>
        /// 房间备注
        /// </summary>
        public string RoomNotes { get; set; }

        /// <summary>
        /// 餐食备注
        /// </summary>
        public string MealNotes { get; set; }
        /// <summary>
        /// 备注
        /// </summary>
        public string Remark { get; set; }
    }

    /// <summary>
    /// 接团客户名单
    /// Del
    /// </summary>
    public class TourClientListDelDto : UserPageFuncDtoBase
    {
        /// <summary>
        /// 数据Id
        /// Id>=0 Del 
        /// Id<0 无效
        /// </summary>
        public int Id { get; set; }
    }

    /// <summary>
    /// 接团客户名单
    /// 客户名单下载
    /// </summary>
    public class PostTourClientListDownloadFile: UserPageFuncDtoBase
    {
        public int DiId { get; set; }


        /// <summary>
        /// 语言 0:中文,1:英文
        /// </summary>
        public int Language { get; set; } = 0;
    }

    public class ClientInfo
    {
        [Encrypted]
        public string LastName { get; set; }
        [Encrypted]
        public string FirstName { get; set; }
        public string Name { get{
                return this.LastName + this.FirstName ;
            } }
        public int Sex { get; set; }
        public DateTime ?Birthday { get; set; }
        [Encrypted]
        public string Company { get; set; }
        [Encrypted]
        public string Job { get; set; }
    }

    public class ClientInfoInfo_Group : ClientInfo
    {
        public int DiId { get; set; }
        public DateTime CreateTime { get; set; }
    }


    public class ClientAirInfo: ClientInfo
    {
        public int AirType { get; set; }
    }
}