/// <summary> /// Parse the given string as a charging product identification. /// </summary> /// <param name="ChargingProductId">A text representation of a charging product identification.</param> public static ChargingProduct Parse(String ChargingProductId) { if (ChargingProductId?.Trim().IsNullOrEmpty() != false) { throw new ArgumentNullException(nameof(ChargingProductId), "The given charging product identification must not be null or empty!"); } return(new ChargingProduct(ChargingProduct_Id.Parse(ChargingProductId))); }
/// <summary> /// Create a charge detail record for the given charging session (identification). /// </summary> /// <param name="SessionId">The unique charging session identification.</param> /// <param name="ChargingReservation">An optional charging reservation used for charging.</param> /// /// <param name="EVSE">The EVSE of the EVSE used for charging.</param> /// <param name="ChargingStation">The charging station of the charging station used for charging.</param> /// <param name="ChargingPool">The charging pool of the charging pool used for charging.</param> /// <param name="EVSEOperator">The EVSE operator used for charging.</param> /// <param name="ChargingProductId">An unqiue identification for the consumed charging product.</param> /// /// <param name="ReservationTime">Optional timestamps when the reservation started and ended.</param> /// <param name="ParkingTime">Optional timestamps when the parking started and ended.</param> /// <param name="SessionTime">Optional timestamps when the charging session started and ended.</param> /// /// <param name="EnergyMeterId">An optional unique identification of the energy meter.</param> /// <param name="EnergyMeteringValues">An optional enumeration of intermediate energy metering values.</param> /// <param name="MeteringSignature">An optional signature for the metering values.</param> /// /// <param name="IdentificationStart">The identification for the start of the charging process.</param> /// <param name="IdentificationStop">The identification for the stop of the charging process.</param> public ChargeDetailRecord(ChargingSession_Id SessionId, ChargingReservation Reservation = null, ChargingReservation_Id ReservationId = null, EVSEOperator EVSEOperator = null, ChargingPool ChargingPool = null, ChargingStation ChargingStation = null, EVSE EVSE = null, EVSE_Id EVSEId = null, ChargingProduct_Id ChargingProductId = null, EVSP_Id ProviderId = null, StartEndDateTime?ReservationTime = null, StartEndDateTime?ParkingTime = null, StartEndDateTime?SessionTime = null, EnergyMeter_Id EnergyMeterId = null, IEnumerable <Timestamped <Double> > EnergyMeteringValues = null, String MeteringSignature = null, AuthInfo IdentificationStart = null, AuthInfo IdentificationStop = null) { #region Initial checks if (SessionId == null) { throw new ArgumentNullException("Id", "The charging session identification must not be null!"); } #endregion this._SessionId = SessionId; this._Reservation = Reservation; this._ReservationId = ReservationId != null ? ReservationId : Reservation != null ? Reservation.Id : null; this._ReservationTime = ReservationTime; this._EVSE = EVSE; this._EVSEId = EVSE != null ? EVSE.Id : EVSEId; this._ChargingStation = ChargingStation; this._ChargingPool = ChargingPool; this._EVSEOperator = EVSEOperator; this._ChargingProductId = ChargingProductId; this._ParkingTime = ParkingTime; this._SessionTime = SessionTime; this._EnergyMeterId = EnergyMeterId; this._EnergyMeteringValues = EnergyMeteringValues != null ? EnergyMeteringValues : new Timestamped <Double> [0]; this._IdentificationStart = IdentificationStart; this._IdentificationStop = IdentificationStop; }
/// <summary> /// Create a charging reservation. /// </summary> public ChargingReservation(ChargingReservation_Id ReservationId, DateTime Timestamp, DateTime StartTime, TimeSpan Duration, DateTime EndTime, TimeSpan ConsumedReservationTime, ChargingReservationLevel ReservationLevel, EVSP_Id ProviderId = null, eMA_Id eMAId = null, RoamingNetwork RoamingNetwork = null, ChargingPool_Id ChargingPoolId = null, ChargingStation_Id ChargingStationId = null, EVSE_Id EVSEId = null, ChargingProduct_Id ChargingProductId = null, IEnumerable <Auth_Token> AuthTokens = null, IEnumerable <eMA_Id> eMAIds = null, IEnumerable <UInt32> PINs = null) { #region Initial checks if (ReservationId == null) { throw new ArgumentNullException(nameof(ReservationId), "The given charging reservation identification must not be null!"); } #endregion this._ReservationId = ReservationId; this._Timestamp = Timestamp.ToUniversalTime(); this._StartTime = StartTime.ToUniversalTime(); this._Duration = Duration; this._EndTime = StartTime.ToUniversalTime() + Duration; this._ConsumedReservationTime = ConsumedReservationTime; this._ReservationLevel = ReservationLevel; this._ProviderId = ProviderId; this._eMAId = eMAId; this._RoamingNetwork = RoamingNetwork; this._ChargingPoolId = ChargingPoolId; this._ChargingStationId = ChargingStationId; this._EVSEId = EVSEId; this._ChargingProductId = ChargingProductId; this._AuthTokens = AuthTokens != null ? new HashSet <Auth_Token>(AuthTokens) : new HashSet <Auth_Token>(); this._eMAIds = eMAIds != null ? new HashSet <eMA_Id> (eMAIds) : new HashSet <eMA_Id>(); this._PINs = PINs != null ? new HashSet <UInt32> (PINs) : new HashSet <UInt32>(); }
/// <summary> /// Create a new charging product. /// </summary> /// <param name="Id">The unqiue identification of this charging product.</param> /// <param name="MinDuration">The electric vehicle wants to charge at least for this amount of time.</param> /// <param name="StopChargingAfterTime">Stop charging after this amount of time.</param> /// <param name="MinPower">The minimal charging power the electric vehicle accepts [kW].</param> /// <param name="MaxPower">The maximum charging power the electric vehicle consumes [kW].</param> /// <param name="MinEnergy">The electric vehicle wants to charge at least this amount of energy [kWh].</param> /// <param name="StopChargingAfterKWh">Stop charging after this amount of charged energy [kWh].</param> public ChargingProduct(ChargingProduct_Id Id, TimeSpan?MinDuration = null, TimeSpan?StopChargingAfterTime = null, kW?MinPower = null, kW?MaxPower = null, kWh?MinEnergy = null, kWh?StopChargingAfterKWh = null) { this.Id = Id; this.MinDuration = MinDuration; this.StopChargingAfterTime = StopChargingAfterTime; this.MinPower = MinPower; this.MaxPower = MaxPower; this.MinEnergy = MinEnergy; this.StopChargingAfterKWh = StopChargingAfterKWh; }
/// <summary> /// Create a charging reservation. /// </summary> public ChargingReservation(DateTime Timestamp, DateTime StartTime, TimeSpan Duration, DateTime EndTime, ChargingReservationLevel ReservationLevel, EVSP_Id ProviderId = null, eMA_Id eMAId = null, RoamingNetwork RoamingNetwork = null, ChargingPool_Id ChargingPoolId = null, ChargingStation_Id ChargingStationId = null, EVSE_Id EVSEId = null, ChargingProduct_Id ChargingProductId = null, IEnumerable <Auth_Token> AuthTokens = null, IEnumerable <eMA_Id> eMAIds = null, IEnumerable <UInt32> PINs = null) : this(ChargingReservation_Id.New, Timestamp, StartTime, Duration, EndTime, TimeSpan.FromSeconds(0), ReservationLevel, ProviderId, eMAId, RoamingNetwork, ChargingPoolId, ChargingStationId, EVSEId, ChargingProductId, AuthTokens, eMAIds, PINs) { }