using EVCB_OCPP.Packet20.DataTypes;
using EVCB_OCPP.Packet20.Utilites;
using Newtonsoft.Json;
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 NotifyEventRequest
    {
        /// <summary>
        /// Timestamp of the moment this message was
        ///generated at the Charging Station.
        /// </summary>
        [Required]
        [JsonConverter(typeof(UTCDateTimeConverter))]
        public DateTime GeneratedAt { set; get; }

        /// <summary>
        /// “to be continued” indicator. Indicates whether
        // another part of the monitoringData follows in an
        ///upcoming notifyMonitoringReportRequest message.
        /// Default value when omitted is false
        /// </summary>
        public bool? Tbc { set; get; }

        /// <summary>
        /// Sequence number of this message. First
        ///message starts at 0
        /// </summary>
        [Required]
        public int SeqNo { set; get; }



        /// <summary>List of EventData. An EventData element
        /// contains only the Component, Variable and
        /// VariableMonitoring data that caused the event. The list of
        ///  EventData will usally contain one eventData element, but
        ///  the Charging Station may decide to group multiple events
        ///in one notification. For example, when multiple events
        /// triggered at the same time.The Id of the request.
        /// </summary>
        [Required]
        public List<EventDataType> EventData { set; get; }
    }
}
