/// <summary>
        /// Create a new roaming network admin status update.
        /// </summary>
        /// <param name="Id">The unique identification of the roaming network.</param>
        /// <param name="OldStatus">The old timestamped admin status of the roaming network.</param>
        /// <param name="NewStatus">The new timestamped admin status of the roaming network.</param>
        public RoamingNetworkAdminStatusUpdate(RoamingNetwork_Id Id,
                                               Timestamped <RoamingNetworkAdminStatusTypes> OldStatus,
                                               Timestamped <RoamingNetworkAdminStatusTypes> NewStatus)

        {
            this.Id        = Id;
            this.OldStatus = OldStatus;
            this.NewStatus = NewStatus;
        }
        /// <summary>
        /// Create a new roaming network status.
        /// </summary>
        /// <param name="Id">The unique identification of the roaming network.</param>
        /// <param name="Status">The current timestamped status of the roaming network.</param>
        /// <param name="CustomData">An optional dictionary of customer-specific data.</param>
        public RoamingNetworkStatus(RoamingNetwork_Id Id,
                                    Timestamped <RoamingNetworkStatusTypes> Status,
                                    IReadOnlyDictionary <String, Object> CustomData = null)

            : base(CustomData)

        {
            this.Id     = Id;
            this.Status = Status;
        }
Example #3
0
        /// <summary>
        /// Create a new roaming network admin status.
        /// </summary>
        /// <param name="Id">The unique identification of the roaming network.</param>
        /// <param name="StatusSchedule">The timestamped admin status of the roaming network.</param>
        /// <param name="CustomData">An optional dictionary of customer-specific data.</param>
        public RoamingNetworkAdminStatusSchedule(RoamingNetwork_Id Id,
                                                 StatusSchedule <RoamingNetworkAdminStatusTypes> StatusSchedule,
                                                 IReadOnlyDictionary <String, Object> CustomData = null)

            : base(CustomData)

        {
            this.Id             = Id;
            this.StatusSchedule = StatusSchedule;
        }
Example #4
0
        /// <summary>
        /// Return the roaming network identified by the given unique roaming network identification.
        /// </summary>
        /// <param name="RoamingNetworkId">The unique identification of a roaming network.</param>
        public RoamingNetwork GetRoamingNetwork(RoamingNetwork_Id RoamingNetworkId)
        {
            RoamingNetwork _RoamingNetwork = null;

            if (_RoamingNetworks.TryGetValue(RoamingNetworkId, out _RoamingNetwork))
            {
                return(_RoamingNetwork);
            }

            return(null);
        }
Example #5
0
        /// <summary>
        /// Try to return the roaming network identified by the given unique roaming network identification.
        /// </summary>
        /// <param name="RoamingNetworkId">The unique identification of a roaming network.</param>
        /// <returns>True, when the roaming network was found; false else.</returns>
        public RoamingNetwork RemoveRoamingNetwork(RoamingNetwork_Id RoamingNetworkId)
        {
            RoamingNetwork _RoamingNetwork;

            if (_RoamingNetworks.TryRemove(RoamingNetworkId, out _RoamingNetwork))
            {
                return(_RoamingNetwork);
            }

            return(null);
        }
        public RedirectedChargingStations Add(ChargingStation_Id ChargingStationId,
                                              RoamingNetwork_Id RoamingNetwork_From,
                                              RoamingNetwork_Id RoamingNetwork_To)
        {
            if (!_RedirectedChargingStations.ContainsKey(ChargingStationId))
            {
                _RedirectedChargingStations.Add(ChargingStationId, new Tuple <RoamingNetwork_Id, RoamingNetwork_Id>(RoamingNetwork_From, RoamingNetwork_To));
            }

            return(this);
        }
Example #7
0
        /// <summary>
        /// Create and register a new roaming network having the given
        /// unique roaming network identification.
        /// </summary>
        /// <param name="RoamingNetworkId">The unique identification of the new roaming network.</param>
        /// <param name="Name">The multi-language name of the roaming network.</param>
        /// <param name="Description">A multilanguage description of the roaming networks object.</param>
        /// <param name="Configurator">An optional delegate to configure the new roaming network after its creation.</param>
        /// <param name="AdminStatus">The initial admin status of the roaming network.</param>
        /// <param name="Status">The initial status of the roaming network.</param>
        /// <param name="MaxAdminStatusListSize">The maximum number of entries in the admin status history.</param>
        /// <param name="MaxStatusListSize">The maximum number of entries in the status history.</param>
        /// <param name="ChargingStationSignatureGenerator">A delegate to sign a charging station.</param>
        /// <param name="ChargingPoolSignatureGenerator">A delegate to sign a charging pool.</param>
        /// <param name="ChargingStationOperatorSignatureGenerator">A delegate to sign a charging station operator.</param>
        public RoamingNetwork CreateNewRoamingNetwork(RoamingNetwork_Id RoamingNetworkId,
                                                      I18NString Name,
                                                      I18NString Description = null,
                                                      Action <RoamingNetwork> Configurator       = null,
                                                      RoamingNetworkAdminStatusTypes AdminStatus = RoamingNetworkAdminStatusTypes.Operational,
                                                      RoamingNetworkStatusTypes Status           = RoamingNetworkStatusTypes.Available,
                                                      UInt16 MaxAdminStatusListSize = RoamingNetwork.DefaultMaxAdminStatusListSize,
                                                      UInt16 MaxStatusListSize      = RoamingNetwork.DefaultMaxStatusListSize,
                                                      ChargingStationSignatureDelegate ChargingStationSignatureGenerator = null,
                                                      ChargingPoolSignatureDelegate ChargingPoolSignatureGenerator       = null,
                                                      ChargingStationOperatorSignatureDelegate ChargingStationOperatorSignatureGenerator = null,
                                                      Func <RoamingNetwork_Id, String> ReservationLogFileNameCreator        = null,
                                                      Func <RoamingNetwork_Id, String> SessionLogFileNameCreator            = null,
                                                      Func <RoamingNetwork_Id, String> ChargeDetailRecordLogFileNameCreator = null)

        {
            #region Initial checks

            if (RoamingNetworkId == null)
            {
                throw new ArgumentNullException(nameof(RoamingNetworkId), "The given roaming network identification must not be null!");
            }

            if (_RoamingNetworks.ContainsKey(RoamingNetworkId))
            {
                throw new RoamingNetworkAlreadyExists(RoamingNetworkId);
            }

            #endregion

            var _RoamingNetwork = new RoamingNetwork(RoamingNetworkId,
                                                     Name,
                                                     Description,
                                                     AdminStatus,
                                                     Status,
                                                     MaxAdminStatusListSize,
                                                     MaxStatusListSize,
                                                     ChargingStationSignatureGenerator,
                                                     ChargingPoolSignatureGenerator,
                                                     ChargingStationOperatorSignatureGenerator,
                                                     SessionLogFileNameCreator,
                                                     ChargeDetailRecordLogFileNameCreator);

            Configurator?.Invoke(_RoamingNetwork);

            if (RoamingNetworkAddition.SendVoting(this, _RoamingNetwork) &&
                _RoamingNetworks.TryAdd(RoamingNetworkId, _RoamingNetwork))
            {
                RoamingNetworkAddition.SendNotification(this, _RoamingNetwork);
                return(_RoamingNetwork);
            }

            throw new Exception();
        }
Example #8
0
        public RedirectedEVSEs Add(EVSE_Id EVSEId,
                                   RoamingNetwork_Id RoamingNetwork_From,
                                   RoamingNetwork_Id RoamingNetwork_To)
        {
            if (!_RedirectedEVSEList.ContainsKey(EVSEId))
            {
                _RedirectedEVSEList.Add(EVSEId, new Tuple <RoamingNetwork_Id, RoamingNetwork_Id>(RoamingNetwork_From, RoamingNetwork_To));
            }

            return(this);
        }
Example #9
0
        /// <summary>
        /// Create and register a new roaming network having the given
        /// unique roaming network identification.
        /// </summary>
        /// <param name="RoamingNetworkId">The unique identification of the new roaming network.</param>
        /// <param name="AuthorizatorId">The unique identification for the Auth service.</param>
        /// <param name="Description">A multilanguage description of the roaming network.</param>
        /// <param name="Action">An optional delegate to configure the new EVSE operator after its creation.</param>
        public RoamingNetwork CreateNewRoamingNetwork(RoamingNetwork_Id RoamingNetworkId,
                                                      Authorizator_Id AuthorizatorId = null,
                                                      I18NString Description         = null,
                                                      Action <RoamingNetwork> Action = null)
        {
            #region Initial checks

            if (RoamingNetworkId == null)
            {
                throw new ArgumentNullException("RoamingNetworkId", "The given roaming network identification must not be null!");
            }

            if (_RoamingNetworks.ContainsKey(RoamingNetworkId))
            {
                throw new RoamingNetworkAlreadyExists(RoamingNetworkId);
            }

            #endregion

            var _RoamingNetwork = new RoamingNetwork(RoamingNetworkId, AuthorizatorId)
            {
                Description = Description
            };

            Action.FailSafeInvoke(_RoamingNetwork);

            if (RoamingNetworkAddition.SendVoting(this, _RoamingNetwork))
            {
                if (_RoamingNetworks.TryAdd(RoamingNetworkId, _RoamingNetwork))
                {
                    RoamingNetworkAddition.SendNotification(this, _RoamingNetwork);
                    return(_RoamingNetwork);
                }
            }

            throw new Exception();
        }
 public SearchProviderAlreadyExists(NavigationServiceProvider_Id SearchProvider_Id,
                                    RoamingNetwork_Id RoamingNetwork_Id)
     : base("The given search provider identification '" + SearchProvider_Id + "' already exists within the given '" + RoamingNetwork_Id + "' roaming network!")
 {
 }
Example #11
0
        /// <summary>
        /// Try to return the roaming network identified by the given unique roaming network identification.
        /// </summary>
        /// <param name="RoamingNetworkId">The unique identification of a roaming network.</param>
        /// <param name="RoamingNetwork">The roaming network.</param>
        /// <returns>True, when the roaming network was found; false else.</returns>
        public Boolean RemoveRoamingNetwork(RoamingNetwork_Id RoamingNetworkId,
                                            out RoamingNetwork RoamingNetwork)

        => _RoamingNetworks.TryRemove(RoamingNetworkId, out RoamingNetwork);
        public RoamingNetworkAlreadyExists(RoamingNetwork_Id RoamingNetworkId)

            : base("The given roaming network identification '" + RoamingNetworkId + "' already exists!")

        {
        }
 public RoamingProviderAlreadyExists(RoamingProvider_Id RoamingProvider_Id,
                                     RoamingNetwork_Id RoamingNetwork_Id)
     : base("The given roaming provider identification '" + RoamingProvider_Id + "' already exists within the given '" + RoamingNetwork_Id + "' roaming network!")
 {
 }
 public EVServiceProviderAlreadyExists(EVSP_Id EVServiceProvider_Id,
                                       RoamingNetwork_Id RoamingNetwork_Id)
     : base("The given EV service provider identification '" + EVServiceProvider_Id + "' already exists within the given '" + RoamingNetwork_Id + "' roaming network!")
 {
 }
 public EVSEOperatorAlreadyExists(EVSEOperator_Id EVSEOperator_Id,
                                  RoamingNetwork_Id RoamingNetwork_Id)
     : base("The given EVSE operator identification '" + EVSEOperator_Id + "' already exists within the given '" + RoamingNetwork_Id + "' roaming network!")
 {
 }
Example #16
0
        /// <summary>
        /// Try to return the roaming network identified by the given unique roaming network identification.
        /// </summary>
        /// <param name="RoamingNetworkId">The unique identification of a roaming network.</param>
        /// <param name="RoamingNetwork">The roaming network.</param>
        /// <returns>True, when the roaming network was found; false else.</returns>
        public Boolean TryGetRoamingNetwork(RoamingNetwork_Id RoamingNetworkId, out RoamingNetwork RoamingNetwork)

        => _RoamingNetworks.TryGetValue(RoamingNetworkId, out RoamingNetwork);
Example #17
0
 /// <summary>
 /// Try to return the roaming network identified by the given unique roaming network identification.
 /// </summary>
 /// <param name="RoamingNetworkId">The unique identification of a roaming network.</param>
 /// <param name="RoamingNetwork">The roaming network.</param>
 /// <returns>True, when the roaming network was found; false else.</returns>
 public Boolean TryGetRoamingNetwork(RoamingNetwork_Id RoamingNetworkId, out RoamingNetwork RoamingNetwork)
 {
     return(_RoamingNetworks.TryGetValue(RoamingNetworkId, out RoamingNetwork));
 }