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 NotifyReportRequest
    {
        /// <summary>
        /// The id of the GetReportRequest or
        /// GetBaseReportRequest that requested this report
        /// </summary>
        [Required]
        public int RequestId { 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>
        /// Timestamp of the moment this message was
        ///generated at the Charging Station.
        /// </summary>
        [Required]
        [JsonConverter(typeof(UTCDateTimeConverter))]
        public DateTime GeneratedAt { set; get; }

        /// <summary>
        /// List of ReportData
        /// </summary>
        public List<ReportDataType> ReportData { set; get; }
    }
}