public async addReservation(reservation: Reservation): Promise<void> {
const [exists, reservationFound] = this.doesReservationExists(reservation);
if (exists) {
- await this.removeReservation(reservationFound);
+ await this.removeReservation(reservationFound, ReservationTerminationReason.REPLACE_EXISTING);
}
- const connectorStatus = this.getConnectorStatus(reservation.connectorId);
- connectorStatus.reservation = reservation;
- connectorStatus.status = ConnectorStatusEnum.Reserved;
- if (reservation.connectorId === 0) {
- return;
- }
- await this.ocppRequestService.requestHandler<
- StatusNotificationRequest,
- StatusNotificationResponse
- >(
+ this.getConnectorStatus(reservation.connectorId).reservation = reservation;
+ await OCPPServiceUtils.sendAndSetConnectorStatus(
this,
- RequestCommand.STATUS_NOTIFICATION,
- OCPPServiceUtils.buildStatusNotificationRequest(
- this,
- reservation.connectorId,
- ConnectorStatusEnum.Reserved
- )
+ reservation.connectorId,
+ ConnectorStatusEnum.Reserved,
+ null,
+ { send: reservation.connectorId !== 0 }
);
}
): Promise<void> {
const connector = this.getConnectorStatus(reservation.connectorId);
switch (reason) {
- case ReservationTerminationReason.TRANSACTION_STARTED: {
+ case ReservationTerminationReason.CONNECTOR_STATE_CHANGED:
delete connector.reservation;
- if (reservation.connectorId === 0) {
- connector.status = ConnectorStatusEnum.Available;
- }
break;
- }
- case ReservationTerminationReason.CONNECTOR_STATE_CHANGED: {
+ case ReservationTerminationReason.TRANSACTION_STARTED:
delete connector.reservation;
break;
- }
- default: {
- // ReservationTerminationReason.EXPIRED, ReservationTerminationReason.CANCELED
- connector.status = ConnectorStatusEnum.Available;
- delete connector.reservation;
- await this.ocppRequestService.requestHandler<
- StatusNotificationRequest,
- StatusNotificationResponse
- >(
+ case ReservationTerminationReason.RESERVATION_CANCELED ||
+ ReservationTerminationReason.REPLACE_EXISTING ||
+ ReservationTerminationReason.EXPIRED:
+ await OCPPServiceUtils.sendAndSetConnectorStatus(
this,
- RequestCommand.STATUS_NOTIFICATION,
- OCPPServiceUtils.buildStatusNotificationRequest(
- this,
- reservation.connectorId,
- ConnectorStatusEnum.Available
- )
+ reservation.connectorId,
+ ConnectorStatusEnum.Available,
+ null,
+ { send: reservation.connectorId !== 0 }
);
+ delete connector.reservation;
+ break;
+ default:
break;
- }
}
}
for (const evse of this.evses.values()) {
for (const connector of evse.connectors.values()) {
if (connector?.reservation?.expiryDate.toString() < new Date().toISOString()) {
- await this.removeReservation(connector.reservation);
+ await this.removeReservation(
+ connector.reservation,
+ ReservationTerminationReason.EXPIRED
+ );
}
}
}
} else {
for (const connector of this.connectors.values()) {
if (connector?.reservation?.expiryDate.toString() < new Date().toISOString()) {
- await this.removeReservation(connector.reservation);
+ await this.removeReservation(
+ connector.reservation,
+ ReservationTerminationReason.EXPIRED
+ );
}
}
}