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

namespace XYY.Service.Standard.ChannelApi.HermesPUDO
{
    class SourceAddress
    {
        /// <summary>
        /// 
        /// </summary>
        public string lastName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string street { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string postcode { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string city { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string country { get; set; }

        public string company { get; set; }

        /// <summary>
        /// 
        /// </summary>
        public List<string> addressAdditionalFields { get; set; }
    }

    class DestinationAddress
    {
        /// <summary>
        /// 
        /// </summary>
        public string firstName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string lastName { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string company { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string street { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string houseNo { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string postcode { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string city { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string country { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string phone { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string mail { get; set; }
    }

    class Item
    {
        /// <summary>
        /// 
        /// </summary>
        public string sku { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string category { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string countryOfManufacture { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string description { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public decimal value { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int weight { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int quantity { get; set; }
    }

    class ParcelData
    {
        /// <summary>
        /// 
        /// </summary>
        public decimal depth { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public decimal length { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public decimal width { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int weight { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public int? shipmentCost { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string packagingType { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public string currency { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public List<Item> items { get; set; }
    }

    class RequestHomeDelivery
    {
    }

    class Services
    {
        /// <summary>
        /// 
        /// </summary>
        public PudoDelivery pudoDelivery { get; set; }
    }


    class PudoDelivery
    {
        public string pudoId { get; set; }
        public bool autoSelect { get; set; }
    }

    class Label
    {
        /// <summary>
        /// 
        /// </summary>
        public string output { get; set; }
    }

    class RequestDelivery
    {
        /// <summary>
        /// 
        /// </summary>
        public SourceAddress sourceAddress { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public DestinationAddress destinationAddress { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public ParcelData parcelData { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public List<string> customerReferences { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Services services { get; set; }
        /// <summary>
        /// 
        /// </summary>
        public Label label { get; set; }
    }

    /// <summary>
    /// parcel home delivery request param
    /// </summary>
    class PODRequest
    {
        /// <summary>
        /// 
        /// </summary>
        public RequestDelivery delivery { get; set; }
    }
}
