示例#1
0
        /// <summary>
        /// Return a JSON representation of this object.
        /// </summary>
        /// <param name="CustomChargingScheduleSerializer">A delegate to serialize custom charging schedule requests.</param>
        /// <param name="CustomChargingSchedulePeriodSerializer">A delegate to serialize custom charging schedule periods.</param>
        public JObject ToJSON(CustomJObjectSerializerDelegate <ChargingSchedule> CustomChargingScheduleSerializer             = null,
                              CustomJObjectSerializerDelegate <ChargingSchedulePeriod> CustomChargingSchedulePeriodSerializer = null)
        {
            var JSON = JSONObject.Create(

                Duration.HasValue
                               ? new JProperty("duration", Duration.Value)
                               : null,

                StartSchedule.HasValue
                               ? new JProperty("startSchedule", StartSchedule.Value.ToIso8601())
                               : null,

                new JProperty("chargingRateUnit", ChargingRateUnit.AsText()),

                new JProperty("chargingSchedulePeriod", ChargingSchedulePeriods.Select(value => value.ToJSON(CustomChargingSchedulePeriodSerializer))),

                Duration.HasValue
                               ? new JProperty("minChargingRate", MinChargingRate.Value.ToString("0.#"))
                               : null

                );

            return(CustomChargingScheduleSerializer != null
                       ? CustomChargingScheduleSerializer(this, JSON)
                       : JSON);
        }
示例#2
0
        /// <summary>
        /// Return the HashCode of this object.
        /// </summary>
        /// <returns>The HashCode of this object.</returns>
        public override Int32 GetHashCode()
        {
            unchecked
            {
                return(ChargingRateUnit.GetHashCode() * 13 ^
                       ChargingSchedulePeriods.GetHashCode() * 11 ^

                       (Duration.HasValue
                            ? Duration.GetHashCode() * 7
                            : 0) ^

                       (StartSchedule.HasValue
                            ? StartSchedule.GetHashCode() * 5
                            : 0) ^

                       (MinChargingRate.HasValue
                            ? MinChargingRate.GetHashCode() * 3
                            : 0));
            }
        }
示例#3
0
        /// <summary>
        /// Compares two id tag infos for equality.
        /// </summary>
        /// <param name="ChargingSchedule">An id tag info to compare with.</param>
        /// <returns>True if both match; False otherwise.</returns>
        public Boolean Equals(ChargingSchedule ChargingSchedule)
        {
            if (ChargingSchedule is null)
            {
                return(false);
            }

            return(ChargingRateUnit.Equals(ChargingSchedule.ChargingRateUnit) &&

                   ChargingSchedulePeriods.Count().Equals(ChargingSchedule.ChargingSchedulePeriods.Count()) &&

                   ((!Duration.HasValue && !ChargingSchedule.Duration.HasValue) ||
                    (Duration.HasValue && ChargingSchedule.Duration.HasValue && Duration.Value.Equals(ChargingSchedule.Duration.Value))) &&

                   ((!StartSchedule.HasValue && !ChargingSchedule.StartSchedule.HasValue) ||
                    (StartSchedule.HasValue && ChargingSchedule.StartSchedule.HasValue && StartSchedule.Value.Equals(ChargingSchedule.StartSchedule.Value))) &&

                   ((!MinChargingRate.HasValue && !ChargingSchedule.MinChargingRate.HasValue) ||
                    (MinChargingRate.HasValue && ChargingSchedule.MinChargingRate.HasValue && MinChargingRate.Value.Equals(ChargingSchedule.MinChargingRate.Value))));
        }
示例#4
0
        /// <summary>
        /// Return a XML representation of this object.
        /// </summary>
        /// <param name="XName">An alternative XML element name [default: "OCPPv1_6_CP:chargingSchedule"]</param>
        public XElement ToXML(XName XName = null)

        => new XElement(XName ?? OCPPNS.OCPPv1_6_CP + "chargingSchedule",

                        Duration.HasValue
                       ? new XElement(OCPPNS.OCPPv1_6_CP + "duration", Duration.Value)
                       : null,

                        StartSchedule.HasValue
                       ? new XElement(OCPPNS.OCPPv1_6_CP + "startSchedule", StartSchedule.Value.ToIso8601())
                       : null,

                        new XElement(OCPPNS.OCPPv1_6_CP + "chargingRateUnit", ChargingRateUnit.AsText()),

                        ChargingSchedulePeriods.Select(value => value.ToXML()),

                        Duration.HasValue
                       ? new XElement(OCPPNS.OCPPv1_6_CP + "minChargingRate", MinChargingRate.Value.ToString("0.#"))
                       : null

                        );
示例#5
0
        /// <summary>
        /// Return a text representation of this object.
        /// </summary>
        public override String ToString()

        => String.Concat(ChargingRateUnit,
                         " / ",
                         ChargingSchedulePeriods.Count(),
                         " charging schedule period(s)");