+export const hasReservationExpired = (reservation: Reservation): boolean => {
+ return isPast(reservation.expiryDate);
+};
+
+export const removeExpiredReservations = async (
+ chargingStation: ChargingStation,
+): Promise<void> => {
+ if (chargingStation.hasEvses) {
+ for (const evseStatus of chargingStation.evses.values()) {
+ for (const connectorStatus of evseStatus.connectors.values()) {
+ if (connectorStatus.reservation && hasReservationExpired(connectorStatus.reservation)) {
+ await chargingStation.removeReservation(
+ connectorStatus.reservation,
+ ReservationTerminationReason.EXPIRED,
+ );
+ }
+ }
+ }
+ } else {
+ for (const connectorStatus of chargingStation.connectors.values()) {
+ if (connectorStatus.reservation && hasReservationExpired(connectorStatus.reservation)) {
+ await chargingStation.removeReservation(
+ connectorStatus.reservation,
+ ReservationTerminationReason.EXPIRED,
+ );
+ }
+ }
+ }
+};
+
+export const getNumberOfReservableConnectors = (
+ connectors: Map<number, ConnectorStatus>,
+): number => {
+ let numberOfReservableConnectors = 0;