/// <summary>
        /// Create an OICP PullEVSEStatus XML/SOAP request.
        /// </summary>
        /// <param name="ProviderId">The unique identification of the EVSP.</param>
        /// <param name="SearchCenter">An optional geo coordinate of the search center.</param>
        /// <param name="DistanceKM">An optional search distance relative to the search center.</param>
        /// <param name="EVSEStatusFilter">An optional EVSE status as filter criteria.</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 PullEVSEStatusRequest(Provider_Id ProviderId,
                                     GeoCoordinate?SearchCenter       = null,
                                     Single DistanceKM                = 0f,
                                     EVSEStatusTypes?EVSEStatusFilter = null,

                                     DateTime?Timestamp = null,
                                     CancellationToken?CancellationToken = null,
                                     EventTracking_Id EventTrackingId    = null,
                                     TimeSpan?RequestTimeout             = null)

            : base(Timestamp,
                   CancellationToken,
                   EventTrackingId,
                   RequestTimeout)

        {
            #region Initial checks

            if (ProviderId == null)
            {
                throw new ArgumentNullException(nameof(ProviderId), "The given e-mobility provider identification must not be null!");
            }

            #endregion

            this.ProviderId       = ProviderId;
            this.SearchCenter     = SearchCenter;
            this.DistanceKM       = DistanceKM;
            this.EVSEStatusFilter = EVSEStatusFilter;
        }
Example #2
0
        AuthorizeRemoteStop(this IEMPClient EMPClient,
                            Provider_Id ProviderId,
                            EVSE_Id EVSEId,
                            Session_Id SessionId,
                            CPOPartnerSession_Id?CPOPartnerSessionId = null,
                            EMPPartnerSession_Id?EMPPartnerSessionId = null,
                            JObject CustomData = null,

                            DateTime?Timestamp = null,
                            CancellationToken?CancellationToken = null,
                            EventTracking_Id EventTrackingId    = null,
                            TimeSpan?RequestTimeout             = null)

        => EMPClient.AuthorizeRemoteStop(
            new AuthorizeRemoteStopRequest(
                ProviderId,
                EVSEId,
                SessionId,
                CPOPartnerSessionId,
                EMPPartnerSessionId,
                CustomData,

                Timestamp,
                CancellationToken,
                EventTrackingId,
                RequestTimeout ?? EMPClient.RequestTimeout));
        /// <summary>
        /// Create an OICP AuthorizeRemoteReservationStart XML/SOAP request.
        /// </summary>
        /// <param name="ProviderId">An e-mobility provider identification.</param>
        /// <param name="EVSEId">An EVSE identification.</param>
        /// <param name="Identification">An identification, e.g. an electric vehicle contract identification.</param>
        /// <param name="SessionId">An optional charging session identification.</param>
        /// <param name="CPOPartnerSessionId">An optional CPO partner session identification.</param>
        /// <param name="EMPPartnerSessionId">An optional EMP partner session identification.</param>
        /// <param name="PartnerProductId">An optional partner product identification.</param>
        /// <param name="Duration">The duration of the reservation.</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 AuthorizeRemoteReservationStartRequest(Provider_Id ProviderId,
                                                      EVSE_Id EVSEId,
                                                      Identification Identification,
                                                      Session_Id?SessionId = null,
                                                      CPOPartnerSession_Id?CPOPartnerSessionId = null,
                                                      EMPPartnerSession_Id?EMPPartnerSessionId = null,
                                                      PartnerProduct_Id?PartnerProductId       = null,
                                                      TimeSpan?Duration = null,

                                                      DateTime?Timestamp = null,
                                                      CancellationToken?CancellationToken = null,
                                                      EventTracking_Id EventTrackingId    = null,
                                                      TimeSpan?RequestTimeout             = null)

            : base(Timestamp,
                   CancellationToken,
                   EventTrackingId,
                   RequestTimeout)

        {
            this.ProviderId          = ProviderId;
            this.EVSEId              = EVSEId;
            this.Identification      = Identification;
            this.SessionId           = SessionId;
            this.CPOPartnerSessionId = CPOPartnerSessionId;
            this.EMPPartnerSessionId = EMPPartnerSessionId;
            this.PartnerProductId    = PartnerProductId;
            this.Duration            = Duration;
        }
        /// <summary>
        /// Create an OICP PullEVSEStatusByOperatorId XML/SOAP request.
        /// </summary>
        /// <param name="ProviderId">The unique identification of the EVSP.</param>
        /// <param name="OperatorIds">An enumeration of up to 100 operator identifications to query.</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 PullEVSEStatusByOperatorIdRequest(Provider_Id ProviderId,
                                                 IEnumerable <Operator_Id> OperatorIds,

                                                 DateTime?Timestamp = null,
                                                 CancellationToken?CancellationToken = null,
                                                 EventTracking_Id EventTrackingId    = null,
                                                 TimeSpan?RequestTimeout             = null)

            : base(Timestamp,
                   CancellationToken,
                   EventTrackingId,
                   RequestTimeout)

        {
            #region Initial checks

            if (ProviderId == null)
            {
                throw new ArgumentNullException(nameof(ProviderId), "The given e-mobility provider identification must not be null!");
            }

            if (OperatorIds.IsNullOrEmpty())
            {
                throw new ArgumentNullException(nameof(OperatorIds), "The given enumeration of operator identifications must not be null!");
            }

            #endregion

            this.ProviderId  = ProviderId;
            this.OperatorIds = OperatorIds;
        }
Example #5
0
        AuthorizeRemoteReservationStart(this IEMPClient EMPClient,
                                        Provider_Id ProviderId,
                                        EVSE_Id EVSEId,
                                        Identification Identification,
                                        Session_Id?SessionId = null,
                                        CPOPartnerSession_Id?CPOPartnerSessionId = null,
                                        EMPPartnerSession_Id?EMPPartnerSessionId = null,
                                        PartnerProduct_Id?PartnerProductId       = null,
                                        TimeSpan?Duration  = null,
                                        JObject CustomData = null,

                                        DateTime?Timestamp = null,
                                        CancellationToken?CancellationToken = null,
                                        EventTracking_Id EventTrackingId    = null,
                                        TimeSpan?RequestTimeout             = null)


        => EMPClient.AuthorizeRemoteReservationStart(
            new AuthorizeRemoteReservationStartRequest(
                ProviderId,
                EVSEId,
                Identification,
                SessionId,
                CPOPartnerSessionId,
                EMPPartnerSessionId,
                PartnerProductId,
                Duration,
                CustomData,

                Timestamp,
                CancellationToken,
                EventTrackingId,
                RequestTimeout ?? EMPClient.RequestTimeout));
Example #6
0
        AuthorizeRemoteStart(this ICentralClient ICentralClient,
                             Provider_Id ProviderId,
                             EVSE_Id EVSEId,
                             Identification Identification,
                             Session_Id?SessionId = null,
                             CPOPartnerSession_Id?CPOPartnerSessionId = null,
                             EMPPartnerSession_Id?EMPPartnerSessionId = null,
                             PartnerProduct_Id?PartnerProductId       = null,

                             DateTime?Timestamp = null,
                             CancellationToken?CancellationToken = null,
                             EventTracking_Id EventTrackingId    = null,
                             TimeSpan?RequestTimeout             = null)


        => ICentralClient.AuthorizeRemoteStart(new EMP.AuthorizeRemoteStartRequest(ProviderId,
                                                                                   EVSEId,
                                                                                   Identification,
                                                                                   SessionId,
                                                                                   CPOPartnerSessionId,
                                                                                   EMPPartnerSessionId,
                                                                                   PartnerProductId,

                                                                                   Timestamp,
                                                                                   CancellationToken,
                                                                                   EventTrackingId,
                                                                                   RequestTimeout ?? ICentralClient.RequestTimeout));
Example #7
0
        PullEVSEData(this IEMPClient EMPClient,
                     Provider_Id ProviderId,
                     DateTime?LastCall = null,

                     IEnumerable <Operator_Id> OperatorIdFilter                 = null,
                     IEnumerable <Country> CountryCodeFilter                    = null,
                     IEnumerable <AccessibilityTypes> AccessibilityFilter       = null,
                     IEnumerable <AuthenticationModes> AuthenticationModeFilter = null,
                     IEnumerable <CalibrationLawDataAvailabilities> CalibrationLawDataAvailabilityFilter = null,
                     Boolean?RenewableEnergyFilter     = null,
                     Boolean?IsHubjectCompatibleFilter = null,
                     Boolean?IsOpen24HoursFilter       = null,

                     GeoCoordinates?SearchCenter = null,
                     Single?DistanceKM           = null,
                     GeoCoordinatesFormats?GeoCoordinatesResponseFormat = GeoCoordinatesFormats.DecimalDegree,

                     UInt32?Page = null,
                     UInt32?Size = null,
                     IEnumerable <String> SortOrder = null,
                     JObject CustomData             = null,

                     DateTime?Timestamp = null,
                     CancellationToken?CancellationToken = null,
                     EventTracking_Id EventTrackingId    = null,
                     TimeSpan?RequestTimeout             = null)

        => EMPClient.PullEVSEData(
            new PullEVSEDataRequest(
                ProviderId,
                LastCall,

                OperatorIdFilter,
                CountryCodeFilter,
                AccessibilityFilter,
                AuthenticationModeFilter,
                CalibrationLawDataAvailabilityFilter,
                RenewableEnergyFilter,
                IsHubjectCompatibleFilter,
                IsOpen24HoursFilter,

                SearchCenter,
                DistanceKM,
                GeoCoordinatesResponseFormat,

                Page,
                Size,
                SortOrder,
                CustomData,

                Timestamp,
                CancellationToken,
                EventTrackingId,
                RequestTimeout ?? EMPClient.RequestTimeout));
Example #8
0
        GetChargeDetailRecords(this IEMPClient IEMPClient,
                               Provider_Id ProviderId,
                               DateTime From,
                               DateTime To,

                               DateTime?Timestamp = null,
                               CancellationToken?CancellationToken = null,
                               EventTracking_Id EventTrackingId    = null,
                               TimeSpan?RequestTimeout             = null)


        => IEMPClient.GetChargeDetailRecords(new GetChargeDetailRecordsRequest(ProviderId,
                                                                               From,
                                                                               To,

                                                                               Timestamp,
                                                                               CancellationToken,
                                                                               EventTrackingId,
                                                                               RequestTimeout ?? IEMPClient.RequestTimeout));
Example #9
0
        /// <summary>
        /// Create an OICP GetChargeDetailRecords XML/SOAP request.
        /// </summary>
        /// <param name="ProviderId">An e-mobility provider identification.</param>
        /// <param name="From">The starting time.</param>
        /// <param name="To">The end time.</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 GetChargeDetailRecordsRequest(Provider_Id ProviderId,
                                             DateTime From,
                                             DateTime To,

                                             DateTime?Timestamp = null,
                                             CancellationToken?CancellationToken = null,
                                             EventTracking_Id EventTrackingId    = null,
                                             TimeSpan?RequestTimeout             = null)

            : base(Timestamp,
                   CancellationToken,
                   EventTrackingId,
                   RequestTimeout)

        {
            this.ProviderId = ProviderId;
            this.From       = From;
            this.To         = To;
        }
Example #10
0
        PushAuthenticationData(this IEMPClient IEMPClient,
                               IEnumerable <Identification> AuthorizationIdentifications,
                               Provider_Id ProviderId,
                               ActionTypes Action = ActionTypes.fullLoad,

                               DateTime?Timestamp = null,
                               CancellationToken?CancellationToken = null,
                               EventTracking_Id EventTrackingId    = null,
                               TimeSpan?RequestTimeout             = null)


        => IEMPClient.PushAuthenticationData(new PushAuthenticationDataRequest(new ProviderAuthenticationData(ProviderId,
                                                                                                              AuthorizationIdentifications),
                                                                               Action,

                                                                               Timestamp,
                                                                               CancellationToken,
                                                                               EventTrackingId,
                                                                               RequestTimeout ?? IEMPClient.RequestTimeout));
Example #11
0
        PullEVSEStatusByOperatorId(this IEMPClient EMPClient,
                                   Provider_Id ProviderId,
                                   IEnumerable <Operator_Id> OperatorIds,
                                   JObject CustomData = null,

                                   DateTime?Timestamp = null,
                                   CancellationToken?CancellationToken = null,
                                   EventTracking_Id EventTrackingId    = null,
                                   TimeSpan?RequestTimeout             = null)

        => EMPClient.PullEVSEStatusByOperatorId(
            new PullEVSEStatusByOperatorIdRequest(
                ProviderId,
                OperatorIds,
                CustomData,

                Timestamp,
                CancellationToken,
                EventTrackingId,
                RequestTimeout ?? EMPClient.RequestTimeout));
        /// <summary>
        /// Create an OICP AuthorizeRemoteStopRequest XML/SOAP request.
        /// </summary>
        /// <param name="SessionId">A charging session identification.</param>
        /// <param name="ProviderId">An e-mobility provider identification.</param>
        /// <param name="EVSEId">The EVSE identification.</param>
        /// <param name="CPOPartnerSessionId">An optional CPO partner session identification.</param>
        /// <param name="EMPPartnerSessionId">An optional EMP partner session identification.</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 AuthorizeRemoteStopRequest(Session_Id SessionId,
                                          Provider_Id ProviderId,
                                          EVSE_Id EVSEId,
                                          CPOPartnerSession_Id?CPOPartnerSessionId = null,
                                          EMPPartnerSession_Id?EMPPartnerSessionId = null,

                                          DateTime?Timestamp = null,
                                          CancellationToken?CancellationToken = null,
                                          EventTracking_Id EventTrackingId    = null,
                                          TimeSpan?RequestTimeout             = null)

            : base(Timestamp,
                   CancellationToken,
                   EventTrackingId,
                   RequestTimeout)

        {
            this.SessionId           = SessionId;
            this.ProviderId          = ProviderId;
            this.EVSEId              = EVSEId;
            this.CPOPartnerSessionId = CPOPartnerSessionId;
            this.EMPPartnerSessionId = EMPPartnerSessionId;
        }
Example #13
0
        ReservationStop(this IEMPClient IEMPClient,
                        Session_Id SessionId,
                        Provider_Id ProviderId,
                        EVSE_Id EVSEId,
                        CPOPartnerSession_Id?CPOPartnerSessionId = null,
                        EMPPartnerSession_Id?EMPPartnerSessionId = null,

                        DateTime?Timestamp = null,
                        CancellationToken?CancellationToken = null,
                        EventTracking_Id EventTrackingId    = null,
                        TimeSpan?RequestTimeout             = null)


        => IEMPClient.AuthorizeRemoteReservationStop(new AuthorizeRemoteReservationStopRequest(SessionId,
                                                                                               ProviderId,
                                                                                               EVSEId,
                                                                                               CPOPartnerSessionId,
                                                                                               EMPPartnerSessionId,

                                                                                               Timestamp,
                                                                                               CancellationToken,
                                                                                               EventTrackingId,
                                                                                               RequestTimeout ?? IEMPClient.RequestTimeout));
Example #14
0
        /// <summary>
        /// Create an OICP PullEVSEData XML/SOAP request.
        /// The request might either have none, 'SearchCenter + DistanceKM' or 'LastCall' parameters.
        /// Because of limitations at Hubject the SearchCenter and LastCall parameters can not be used at the same time!
        /// </summary>
        /// <param name="ProviderId">The unique identification of the EVSP.</param>
        /// <param name="SearchCenter">An optional geo coordinate of the search center.</param>
        /// <param name="DistanceKM">An optional search distance relative to the search center.</param>
        /// <param name="LastCall">An optional timestamp of the last call. Cannot be combined with 'SearchCenter'.</param>
        /// <param name="GeoCoordinatesResponseFormat">An optional response format for representing geo coordinates.</param>
        /// <param name="OperatorIdFilter">Only return EVSEs belonging to the given optional enumeration of EVSE operators.</param>
        /// <param name="CountryCodeFilter">An optional enumeration of countries whose EVSE's a provider wants to retrieve.</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 PullEVSEDataRequest(Provider_Id ProviderId,
                                   GeoCoordinate?SearchCenter = null,
                                   Single DistanceKM          = 0f,
                                   DateTime?LastCall          = null,
                                   GeoCoordinatesResponseFormats?GeoCoordinatesResponseFormat = GeoCoordinatesResponseFormats.DecimalDegree,
                                   IEnumerable <Operator_Id> OperatorIdFilter = null,
                                   IEnumerable <Country> CountryCodeFilter    = null,

                                   DateTime?Timestamp = null,
                                   CancellationToken?CancellationToken = null,
                                   EventTracking_Id EventTrackingId    = null,
                                   TimeSpan?RequestTimeout             = null)

            : base(Timestamp,
                   CancellationToken,
                   EventTrackingId,
                   RequestTimeout)

        {
            #region Initial checks

            if (ProviderId == null)
            {
                throw new ArgumentNullException(nameof(ProviderId), "The given e-mobility provider identification must not be null!");
            }

            #endregion

            this.ProviderId                   = ProviderId;
            this.SearchCenter                 = SearchCenter;
            this.DistanceKM                   = DistanceKM;
            this.LastCall                     = LastCall;
            this._OperatorIdFilter            = OperatorIdFilter != null ? new HashSet <Operator_Id>(OperatorIdFilter)  : new HashSet <Operator_Id>();
            this._CountryCodeFilter           = CountryCodeFilter != null ? new HashSet <Country>    (CountryCodeFilter) : new HashSet <Country>();
            this.GeoCoordinatesResponseFormat = GeoCoordinatesResponseFormat ?? GeoCoordinatesResponseFormats.DecimalDegree;
        }
Example #15
0
        GetChargeDetailRecords(this IEMPClient EMPClient,
                               Provider_Id ProviderId,
                               DateTime From,
                               DateTime To,
                               IEnumerable <Session_Id> SessionIds   = null,
                               IEnumerable <Operator_Id> OperatorIds = null,
                               Boolean?CDRForwarded = null,

                               UInt32?Page = null,
                               UInt32?Size = null,
                               IEnumerable <String> SortOrder = null,
                               JObject CustomData             = null,

                               DateTime?Timestamp = null,
                               CancellationToken?CancellationToken = null,
                               EventTracking_Id EventTrackingId    = null,
                               TimeSpan?RequestTimeout             = null)

        => EMPClient.GetChargeDetailRecords(
            new GetChargeDetailRecordsRequest(
                ProviderId,
                From,
                To,
                SessionIds,
                OperatorIds,
                CDRForwarded,

                Page,
                Size,
                SortOrder,
                CustomData,

                Timestamp,
                CancellationToken,
                EventTrackingId,
                RequestTimeout ?? EMPClient.RequestTimeout));
Example #16
0
        PullEVSEStatus(this IEMPClient EMPClient,
                       Provider_Id ProviderId,
                       GeoCoordinates?SearchCenter      = null,
                       Single?DistanceKM                = null,
                       EVSEStatusTypes?EVSEStatusFilter = null,
                       JObject CustomData               = null,

                       DateTime?Timestamp = null,
                       CancellationToken?CancellationToken = null,
                       EventTracking_Id EventTrackingId    = null,
                       TimeSpan?RequestTimeout             = null)

        => EMPClient.PullEVSEStatus(
            new PullEVSEStatusRequest(
                ProviderId,
                SearchCenter,
                DistanceKM,
                EVSEStatusFilter,
                CustomData,

                Timestamp,
                CancellationToken,
                EventTrackingId,
                RequestTimeout ?? EMPClient.RequestTimeout));
        /// <summary>
        /// Try to parse the given XML representation of a GetServiceAuthorisation response.
        /// </summary>
        /// <param name="Request">The GetServiceAuthorisation request leading to this response.</param>
        /// <param name="GetServiceAuthorisationResponseXML">The XML to parse.</param>
        /// <param name="GetServiceAuthorisationResponse">The parsed GetServiceAuthorisation response.</param>
        /// <param name="CustomSendGetServiceAuthorisationResponseParser">An optional delegate to parse custom GetServiceAuthorisationResponse XML elements.</param>
        /// <param name="CustomMeterReportParser">An optional delegate to parse custom MeterReport XML elements.</param>
        /// <param name="HTTPResponse">The correlated HTTP response of this eMIP response.</param>
        /// <param name="OnException">An optional delegate called whenever an exception occured.</param>
        public static Boolean TryParse(GetServiceAuthorisationRequest Request,
                                       XElement GetServiceAuthorisationResponseXML,
                                       out GetServiceAuthorisationResponse GetServiceAuthorisationResponse,
                                       CustomXMLParserDelegate <GetServiceAuthorisationResponse> CustomSendGetServiceAuthorisationResponseParser = null,
                                       CustomXMLParserDelegate <MeterReport> CustomMeterReportParser = null,
                                       HTTPResponse HTTPResponse       = null,
                                       OnExceptionDelegate OnException = null)
        {
            try
            {
                GetServiceAuthorisationResponse = new GetServiceAuthorisationResponse(

                    Request,

                    GetServiceAuthorisationResponseXML.MapValueOrFail("transactionId", Transaction_Id.Parse),
                    GetServiceAuthorisationResponseXML.MapValueOrFail("authorisationValue", ConversionMethods.AsAuthorisationValue),
                    GetServiceAuthorisationResponseXML.MapValueOrFail("serviceSessionId", ServiceSession_Id.Parse),
                    GetServiceAuthorisationResponseXML.MapBooleanOrFail("intermediateCDRRequested"),

                    GetServiceAuthorisationResponseXML.MapValueOrFail("requestStatus", RequestStatus.Parse),
                    GetServiceAuthorisationResponseXML.MapValueOrNullable("salePartnerOperatorId", s => Provider_Id.Parse(s.Replace("*", "-"))),
                    GetServiceAuthorisationResponseXML.MapValueOrNullable("userContractIdAlias", Contract_Id.Parse),

                    GetServiceAuthorisationResponseXML.MapElements("meterLimitList",
                                                                   "meterReport",
                                                                   s => MeterReport.Parse(s,
                                                                                          CustomMeterReportParser,
                                                                                          OnException)),

                    GetServiceAuthorisationResponseXML.MapValueOrNull("parameter"),

                    HTTPResponse

                    );


                if (CustomSendGetServiceAuthorisationResponseParser != null)
                {
                    GetServiceAuthorisationResponse = CustomSendGetServiceAuthorisationResponseParser(GetServiceAuthorisationResponseXML,
                                                                                                      GetServiceAuthorisationResponse);
                }

                return(true);
            }
            catch (Exception e)
            {
                OnException?.Invoke(DateTime.UtcNow, GetServiceAuthorisationResponseXML, e);

                GetServiceAuthorisationResponse = null;
                return(false);
            }
        }