using EVCB_OCPP.Packet20.DataTypes;
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 CustomerInformationRequest
    {
        /// <summary>
        /// The Id of the request.
        /// </summary>
        [Required]
        public int RequestId { set; get; }

        /// <summary>
        /// Flag indicating whether the Charging Station
        ///should return NotifyCustomerInformationRequest
        ///messages containing information about the customer
        ///referred to.
        /// </summary>
        [Required]
        public bool Clear { set; get; }

        /// <summary>
        /// A (e.g. vendor specific) identifier of the
        ///customer this request refers to.This field contains a
        /// custom identifier other than IdToken and Certificate.One
        /// of the possible identifiers (customerIdentifier,
        /// customerIdToken or customerCertificate) should be in
        ///the request message.
        /// </summary>
        [StringLength(64, MinimumLength = 0)]
        public string CustomerIdentifier { set; get; }


        /// <summary>
        /// The IdToken of the customer this request refers
        /// to.One of the possible identifiers(customerIdentifier,
        /// customerIdToken or customerCertificate) should be in
        ///the request message.
        /// </summary>
        public IdTokenType IdToken { set; get; }

        /// <summary>
        /// The Certificate of the customer this request
        ///  refers to.One of the possible identifiers
        /// (customerIdentifier, customerIdToken or
        ///  customerCertificate) should be in the request message
        /// </summary>
        public CertificateHashDataType CustomerCertificate { set; get; }
    }
}
