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

namespace XYY.Service.Standard.ChannelApi.CaiNiao
{
    public class Features
    {
        /// <summary>
        /// 
        /// </summary>
        public string userType { get; set; }
    }

    public class ReceiverParam
    {
        /// <summary>
        /// 
        /// </summary>
        public string zipCode { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string mobilePhone { get; set; }
        /// <summary>
        /// 杭州市
        /// </summary>
        public string city { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string countryCode { get; set; }
        /// <summary>
        /// 蒋村街道
        /// </summary>
        public string street { get; set; }
        /// <summary>
        /// 西湖区
        /// </summary>
        public string district { get; set; }
        /// <summary>
        /// 杨小明
        /// </summary>
        public string name { get; set; }
        /// <summary>
        /// 某号某幢某层
        /// </summary>
        public string detailAddress { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string telephone { get; set; }
        /// <summary>
        /// 浙江省
        /// </summary>
        public string state { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string email { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string addressId { get; set; }
    }

    public class SourceHandoverParam
    {
        /// <summary>
        /// 
        /// </summary>
        public string code { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string type { get; set; }
    }

    public class ImportCustomsParam
    {
        /// <summary>
        /// 
        /// </summary>
        public string taxNumber { get; set; }
    }

    public class CainiaoPayTaxParam
    {
        /// <summary>
        /// 
        /// </summary>
        public string whetherNeed { get; set; }
    }

    public class CainiaoCustomsParam
    {
        public bool whetherNeed { get; set; }
    }

    public class SolutionParam
    {
        /// <summary>
        /// 
        /// </summary>
        public ImportCustomsParam importCustomsParam { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public CainiaoPayTaxParam cainiaoPayTaxParam { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public CainiaoCustomsParam cainiaoCustomsParam { get; set; }

        public extraDeliveryeParam extraDeliveryeParam { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public string solutionCode { get; set; }
        public CustomerChooseCarrierParam customerChooseCarrierParam { get; set; }
        //public ServiceParam serviceParams { get; set; }

    }
     

    public class extraDeliveryeParam
    {
        public bool whetherNeed { get; set; }
    }

    public class CustomerChooseCarrierParam {
        public string carrierCode { get; set; }
    }
    //public class ServiceParam
    //{
    //    public string code { get; set; } = "CUSTOMER_CHOOSE_CARRIER";
    //    public CarrierCode serviceParamFeatures { get; set; }
    //}
    public class CarrierCode
    {
        public string carrierCode { get; set; }
    }
    public class ItemParams
    {
        /// <summary>
        /// 
        /// </summary>
        public long unitPrice { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string englishName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string itemType { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string clearanceShipUnitPrice { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string clearanceVat { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int quantity { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string unitPriceCurrency { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string hscode { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string msds { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public long weight { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string clearanceShipVat { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string clearanceUnitPrice { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string itemId { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string taxRate { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string taxCurrency { get; set; }
        /// <summary>
        /// 衣服
        /// </summary>
        public string chineseName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string itemUrl { get; set; }
    }

    //public class ItemParams
    //{
    //    /// <summary>
    //    /// 
    //    /// </summary>
    //    public ItemParam itemParam { get; set; }
    //}

    public class PackageParams
    {
        /// <summary>
        /// 
        /// </summary>
        public List<ItemParams> itemParams { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public long length { get; set; } = 1;
        /// <summary>
        /// 
        /// </summary>
        public long width { get; set; } = 1;
        /// <summary>
        /// 
        /// </summary>
        public long weight { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public long height { get; set; } = 1;
    }

    //public class PackageParams
    //{
    //    /// <summary>
    //    /// 
    //    /// </summary>
    //    public PackageParam packageParam { get; set; }
    //}

    public class SenderParam
    {
        /// <summary>
        /// 
        /// </summary>
        public string zipCode { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string mobilePhone { get; set; }
        /// <summary>
        /// 杭州市
        /// </summary>
        public string city { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string countryCode { get; set; }
        /// <summary>
        /// 蒋村街道
        /// </summary>
        public string street { get; set; }
        /// <summary>
        /// 西湖区
        /// </summary>
        public string district { get; set; }
        /// <summary>
        /// 杨小明
        /// </summary>
        public string name { get; set; }
        /// <summary>
        /// 某号某幢某层
        /// </summary>
        public string detailAddress { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string telephone { get; set; }
        /// <summary>
        /// 浙江省
        /// </summary>
        public string state { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string email { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string addressId { get; set; }
    }

    public class ReturnerParam
    {
        /// <summary>
        /// 
        /// </summary>
        public string zipCode { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string mobilePhone { get; set; }
        /// <summary>
        /// 杭州市
        /// </summary>
        public string city { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string countryCode { get; set; }
        /// <summary>
        /// 蒋村街道
        /// </summary>
        public string street { get; set; }
        /// <summary>
        /// 西湖区
        /// </summary>
        public string district { get; set; }
        /// <summary>
        /// 杨小明
        /// </summary>
        public string name { get; set; }
        /// <summary>
        /// 某号某幢某层
        /// </summary>
        public string detailAddress { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string telephone { get; set; }
        /// <summary>
        /// 浙江省
        /// </summary>
        public string state { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string email { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string addressId { get; set; }
    }

    public class DataUploadRequest
    {
        /// <summary>
        /// 
        /// </summary>
        public Features features { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public bool syncGetTrackingNumber { get; set; } = true;
        /// <summary>
        /// 
        /// </summary>
        public string outOrderId { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public ReceiverParam receiverParam { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public SourceHandoverParam sourceHandoverParam { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string locale { get; set; } = "zh_CN";
        /// <summary>
        /// 
        /// </summary>
        public SolutionParam solutionParam { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public List<PackageParams> packageParams { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public SenderParam senderParam { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public ReturnerParam returnerParam { get; set; }
    }

}
