using EVCB_OCPP.Packet20.DataTypes.EnumTypes;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EVCB_OCPP.Packet20.DataTypes
{
    public class ChargingProfileCriterionType
    {
        /// <summary>
        /// Defines the purpose of the schedule transferred
        /// by this profile
        /// </summary>
        [JsonConverter(typeof(StringEnumConverter))]
        public ChargingProfilePurposeEnumType ChargingProfilePurpose { set; get; }

        /// <summary>
        /// Value determining level in hierarchy stack of
        /// profiles.Higher values have precedence over lower
        ///values.Lowest level is 0
        /// </summary>
        public int? StackLevel { set; get; }

        /// <summary>
        ///  List of all the chargingProfileIds requested. Any
        ///ChargingProfile that matches one of these profiles will be
        /// reported.If omitted, the Charging Station SHALL not filter
        /// on chargingProfileId. This field SHALL NOT contain more
        /// ids than set in ChargingProfileEntries.maxLimit
        /// </summary>
        public List<int> ChargingProfileId { set; get; }

        /// <summary>
        /// For which charging limit sources, charging
        /// profiles SHALL be reported.If omitted, the Charging
        /// Station SHALL not filter on chargingLimitSource.
        /// </summary>
        [JsonConverter(typeof(StringEnumConverter))]
        public List<ChargingLimitSourceEnumType> chargingLimitSource { set; get; }
    }
}
