+ idStr.length - 4
+ )}${idSuffix}`
+}
+
+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 != null &&
+ hasReservationExpired(connectorStatus.reservation)
+ ) {
+ await chargingStation.removeReservation(
+ connectorStatus.reservation,
+ ReservationTerminationReason.EXPIRED
+ )
+ }
+ }
+ }
+ } else {
+ for (const connectorStatus of chargingStation.connectors.values()) {
+ if (
+ connectorStatus.reservation != null &&
+ hasReservationExpired(connectorStatus.reservation)
+ ) {
+ await chargingStation.removeReservation(
+ connectorStatus.reservation,
+ ReservationTerminationReason.EXPIRED
+ )
+ }
+ }
+ }
+}