/// <summary> /// Create an OICP PushEVSEData XML/SOAP request. /// </summary> /// <param name="OperatorEVSEData">An operator EVSE data.</param> /// <param name="Action">The server-side data management operation.</param> /// /// <param name="Timestamp">The optional timestamp of the request.</param> /// <param name="CancellationToken">An optional token to cancel this request.</param> /// <param name="EventTrackingId">An optional event tracking identification for correlating this request with other events.</param> /// <param name="RequestTimeout">An optional timeout for this request.</param> public PushEVSEDataRequest(OperatorEVSEData OperatorEVSEData, ActionTypes Action = ActionTypes.fullLoad, DateTime?Timestamp = null, CancellationToken?CancellationToken = null, EventTracking_Id EventTrackingId = null, TimeSpan?RequestTimeout = null) : base(Timestamp, CancellationToken, EventTrackingId, RequestTimeout) { #region Initial checks if (OperatorEVSEData == null) { throw new ArgumentNullException(nameof(OperatorEVSEData), "The given operator EVSE data must not be null!"); } #endregion this.OperatorEVSEData = OperatorEVSEData; this.Action = Action; }
/// <summary> /// Return the HashCode of this object. /// </summary> /// <returns>The HashCode of this object.</returns> public override Int32 GetHashCode() { unchecked { return(OperatorEVSEData.GetHashCode() * 3 ^ Action.GetHashCode()); } }
/// <summary> /// Compares two push EVSE data requests for equality. /// </summary> /// <param name="PushEVSEData">An push EVSE data request to compare with.</param> /// <returns>True if both match; False otherwise.</returns> public override Boolean Equals(PushEVSEDataRequest PushEVSEData) { if ((Object)PushEVSEData == null) { return(false); } return(OperatorEVSEData.Equals(PushEVSEData.OperatorEVSEData) && Action.Equals(PushEVSEData.Action)); }
PushEVSEData(this ICPOClient ICPOClient, OperatorEVSEData OperatorEVSEData, ActionTypes Action = ActionTypes.fullLoad, DateTime?Timestamp = null, CancellationToken?CancellationToken = null, EventTracking_Id EventTrackingId = null, TimeSpan?RequestTimeout = null) => ICPOClient.PushEVSEData(new PushEVSEDataRequest(OperatorEVSEData, Action, Timestamp, CancellationToken, EventTrackingId, RequestTimeout ?? ICPOClient.RequestTimeout));
/// <summary> /// Try to parse the given XML representation of an OICP push EVSE data request. /// </summary> /// <param name="PushEVSEDataXML">The XML to parse.</param> /// <param name="PushEVSEData">The parsed push EVSE data request.</param> /// <param name="CustomOperatorEVSEDataParser">A delegate to parse custom OperatorEVSEData XML elements.</param> /// <param name="CustomEVSEDataRecordParser">A delegate to parse custom EVSEDataRecord XML elements.</param> /// <param name="OnException">An optional delegate called whenever an exception occured.</param> /// /// <param name="Timestamp">The optional timestamp of the request.</param> /// <param name="CancellationToken">An optional token to cancel this request.</param> /// <param name="EventTrackingId">An optional event tracking identification for correlating this request with other events.</param> /// <param name="RequestTimeout">An optional timeout for this request.</param> public static Boolean TryParse(XElement PushEVSEDataXML, out PushEVSEDataRequest PushEVSEData, CustomXMLParserDelegate <OperatorEVSEData> CustomOperatorEVSEDataParser = null, CustomXMLParserDelegate <EVSEDataRecord> CustomEVSEDataRecordParser = null, OnExceptionDelegate OnException = null, DateTime?Timestamp = null, CancellationToken?CancellationToken = null, EventTracking_Id EventTrackingId = null, TimeSpan?RequestTimeout = null) { try { if (PushEVSEDataXML.Name != OICPNS.EVSEData + "eRoamingPushEvseData") { PushEVSEData = null; return(false); } PushEVSEData = new PushEVSEDataRequest( OperatorEVSEData.Parse(PushEVSEDataXML.ElementOrFail(OICPNS.EVSEData + "OperatorEvseData"), CustomOperatorEVSEDataParser, CustomEVSEDataRecordParser), PushEVSEDataXML.MapValueOrFail(OICPNS.EVSEData + "ActionType", ActionTypesExtentions.Parse), Timestamp, CancellationToken, EventTrackingId, RequestTimeout ); return(true); } catch (Exception e) { OnException?.Invoke(DateTime.UtcNow, PushEVSEDataXML, e); PushEVSEData = null; return(false); } }
/// <summary> /// Return a XML representation of this object. /// </summary> /// <param name="CustomPushEVSEDataRequestSerializer">A delegate to customize the serialization of PushEVSEData requests.</param> /// <param name="OperatorEVSEDataXName">The OperatorEVSEData XML name to use.</param> /// <param name="CustomOperatorEVSEDataSerializer">A delegate to serialize custom OperatorEVSEData XML elements.</param> /// <param name="EVSEDataRecordXName">The EVSEDataRecord XML name to use.</param> /// <param name="IncludeEVSEDataRecordMetadata">Include EVSEDataRecord deltaType and lastUpdate meta data.</param> /// <param name="CustomEVSEDataRecordSerializer">A delegate to serialize custom EVSEDataRecord XML elements.</param> public XElement ToXML(CustomXMLSerializerDelegate <PushEVSEDataRequest> CustomPushEVSEDataRequestSerializer = null, XName OperatorEVSEDataXName = null, CustomXMLSerializerDelegate <OperatorEVSEData> CustomOperatorEVSEDataSerializer = null, XName EVSEDataRecordXName = null, Boolean IncludeEVSEDataRecordMetadata = true, CustomXMLSerializerDelegate <EVSEDataRecord> CustomEVSEDataRecordSerializer = null) { var XML = new XElement(OICPNS.EVSEData + "eRoamingPushEvseData", new XElement(OICPNS.EVSEData + "ActionType", Action.AsString()), OperatorEVSEData.ToXML(OperatorEVSEDataXName, CustomOperatorEVSEDataSerializer, EVSEDataRecordXName, IncludeEVSEDataRecordMetadata, CustomEVSEDataRecordSerializer) ); return(CustomPushEVSEDataRequestSerializer != null ? CustomPushEVSEDataRequestSerializer(this, XML) : XML); }