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

namespace EVCB_OCPP.Packet20.DataTypes
{
    public class DCChargingParametersType
    {
        /// <summary>
        /// Maximum current (amps) supported by the
        ///electric vehicle.Includes cable capacity.
        /// </summary>
        [Required]
        public int EvMaxCurrent { set; get; }

        /// <summary>
        /// Maximum voltage supported by the electric
        /// vehicle
        /// </summary>
        [Required]
        public int EvMaxVoltage { set; get; }


        /// <summary>
        /// Amount of energy requested (in Wh). This
        ///inludes energy required for preconditioning.
        /// </summary>        
        public int EnergyAmount { set; get; }

        /// <summary>
        /// Maximum power (in W) supported by the
        ///electric vehicle.Required for DC charging.
        /// </summary>        
        public int EvMaxPower { set; get; }

        /// <summary>
        /// Energy available in the battery (in percent of the
        /// battery capacity)
        /// </summary>        
        [Range(0, 100)]
        public int? StateOfCharge { set; get; }

        /// <summary>
        /// Capacity of the electric vehicle battery (in Wh)
        /// </summary>        
        [Range(0, 100)]
        public int? EvEnergyCapacity { set; get; }

        /// <summary>
        ///Percentage of SoC at which the EV considers
        ///the battery fully charged. (possible values: 0 - 100)
        /// </summary>        
        [Range(0, 100)]
        public int? FullSoC { set; get; }

        /// <summary>
        ///Percentage of SoC at which the EV considers a
        ///fast charging process to end. (possible values: 0 - 100)
        /// </summary>        
        [Range(0, 100)]
        public int? BulkSoC { set; get; }


    }
}
