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

namespace EVCB_OCPP.Packet20.Messages
{
    public class ReserveNowRequest
    {
        /// <summary>
        /// Id of reservation.
        /// </summary>
        [Required]
        public int Id { set; get; }

        [Required]
        [JsonConverter(typeof(UTCDateTimeConverter))]
        public DateTime ExpiryDateTime { set; get; }

        /// <summary>
        /// This field specifies the connector type.
        /// </summary>
        [JsonConverter(typeof(StringEnumConverter))]
        public ConnectorEnumType? ConnectorType { set; get; }

        /// <summary>
        /// This contains ID of the evse to be reserved
        /// </summary>
        public int? EvseId { set; get; }

        /// <summary>
        /// The identifier for which the reservation is
        ///made.
        /// </summary>
       [Required]
        public IdTokenType IdToken { set; get; }

        /// <summary>
        /// The group identifier for which the reservation is
       /// made.
        /// </summary>
        public IdTokenType GroupIdToken { set; get; }




    }
}