/// <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); }
/// <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)); } }
/// <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)))); }
/// <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 );
/// <summary> /// Return a text representation of this object. /// </summary> public override String ToString() => String.Concat(ChargingRateUnit, " / ", ChargingSchedulePeriods.Count(), " charging schedule period(s)");