refactor(ui): order types export
[e-mobility-charging-stations-simulator.git] / src / charging-station / ocpp / 1.6 / OCPP16IncomingRequestService.ts
index 2ed3202b887d3482dc1b1ab6c3d77e3cf442edfa..a33d0c26a60bb362f449c29d65b2bac57dd23e41 100644 (file)
@@ -8,6 +8,8 @@ import type { JSONSchemaType } from 'ajv';
 import { Client, type FTPResponse } from 'basic-ftp';
 import tar from 'tar';
 
+import { OCPP16Constants } from './OCPP16Constants';
+import { OCPP16ServiceUtils } from './OCPP16ServiceUtils';
 import {
   type ChargingStation,
   ChargingStationConfigurationUtils,
@@ -83,7 +85,7 @@ import {
   type UnlockConnectorResponse,
 } from '../../../types';
 import { Constants, Utils, logger } from '../../../utils';
-import { OCPP16Constants, OCPP16ServiceUtils, OCPPIncomingRequestService } from '../internal';
+import { OCPPIncomingRequestService } from '../OCPPIncomingRequestService';
 
 const moduleName = 'OCPP16IncomingRequestService';
 
@@ -275,7 +277,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
     let response: JsonType;
     if (
       chargingStation.getOcppStrictCompliance() === true &&
-      chargingStation.isInPendingState() === true &&
+      chargingStation.inPendingState() === true &&
       (commandName === OCPP16IncomingRequestCommand.REMOTE_START_TRANSACTION ||
         commandName === OCPP16IncomingRequestCommand.REMOTE_STOP_TRANSACTION)
     ) {
@@ -293,7 +295,7 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
     if (
       chargingStation.isRegistered() === true ||
       (chargingStation.getOcppStrictCompliance() === false &&
-        chargingStation.isInUnknownState() === true)
+        chargingStation.inUnknownState() === true)
     ) {
       if (
         this.incomingRequestHandlers.has(commandName) === true &&
@@ -486,9 +488,9 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
     );
     if (!keyToChange) {
       return OCPP16Constants.OCPP_CONFIGURATION_RESPONSE_NOT_SUPPORTED;
-    } else if (keyToChange && keyToChange.readonly) {
+    } else if (keyToChange?.readonly === true) {
       return OCPP16Constants.OCPP_CONFIGURATION_RESPONSE_REJECTED;
-    } else if (keyToChange && !keyToChange.readonly) {
+    } else if (keyToChange?.readonly === false) {
       let valueChanged = false;
       if (keyToChange.value !== commandPayload.value) {
         ChargingStationConfigurationUtils.setConfigurationKeyValue(
@@ -797,95 +799,66 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
     commandPayload: RemoteStartTransactionRequest
   ): Promise<GenericResponse> {
     const transactionConnectorId = commandPayload.connectorId;
-    if (chargingStation.hasConnector(transactionConnectorId) === true) {
-      const remoteStartTransactionLogMsg = `${chargingStation.logPrefix()} Transaction remotely STARTED on ${
-        chargingStation.stationInfo.chargingStationId
-      }#${transactionConnectorId.toString()} for idTag '${commandPayload.idTag}'`;
-      await OCPP16ServiceUtils.sendAndSetConnectorStatus(
+    if (chargingStation.hasConnector(transactionConnectorId) === false) {
+      return this.notifyRemoteStartTransactionRejected(
         chargingStation,
         transactionConnectorId,
-        OCPP16ChargePointStatus.Preparing
+        commandPayload.idTag
       );
-      const connectorStatus = chargingStation.getConnectorStatus(transactionConnectorId);
+    }
+    if (
+      chargingStation.isChargingStationAvailable() === false ||
+      chargingStation.isConnectorAvailable(transactionConnectorId) === false
+    ) {
+      return this.notifyRemoteStartTransactionRejected(
+        chargingStation,
+        transactionConnectorId,
+        commandPayload.idTag
+      );
+    }
+    const remoteStartTransactionLogMsg = `${chargingStation.logPrefix()} Transaction remotely STARTED on ${
+      chargingStation.stationInfo.chargingStationId
+    }#${transactionConnectorId.toString()} for idTag '${commandPayload.idTag}'`;
+    await OCPP16ServiceUtils.sendAndSetConnectorStatus(
+      chargingStation,
+      transactionConnectorId,
+      OCPP16ChargePointStatus.Preparing
+    );
+    const connectorStatus = chargingStation.getConnectorStatus(transactionConnectorId);
+    // Check if authorized
+    if (chargingStation.getAuthorizeRemoteTxRequests() === true) {
+      let authorized = false;
       if (
-        chargingStation.isChargingStationAvailable() === true &&
-        chargingStation.isConnectorAvailable(transactionConnectorId) === true
+        chargingStation.getLocalAuthListEnabled() === true &&
+        chargingStation.hasIdTags() === true &&
+        Utils.isNotEmptyString(
+          chargingStation.idTagsCache
+            .getIdTags(ChargingStationUtils.getIdTagsFile(chargingStation.stationInfo))
+            ?.find((idTag) => idTag === commandPayload.idTag)
+        )
       ) {
-        // Check if authorized
-        if (chargingStation.getAuthorizeRemoteTxRequests() === true) {
-          let authorized = false;
-          if (
-            chargingStation.getLocalAuthListEnabled() === true &&
-            chargingStation.hasIdTags() === true &&
-            Utils.isNotEmptyString(
-              chargingStation.idTagsCache
-                .getIdTags(ChargingStationUtils.getIdTagsFile(chargingStation.stationInfo))
-                ?.find((idTag) => idTag === commandPayload.idTag)
-            )
-          ) {
-            connectorStatus.localAuthorizeIdTag = commandPayload.idTag;
-            connectorStatus.idTagLocalAuthorized = true;
-            authorized = true;
-          } else if (chargingStation.getMustAuthorizeAtRemoteStart() === true) {
-            connectorStatus.authorizeIdTag = commandPayload.idTag;
-            const authorizeResponse: OCPP16AuthorizeResponse =
-              await chargingStation.ocppRequestService.requestHandler<
-                OCPP16AuthorizeRequest,
-                OCPP16AuthorizeResponse
-              >(chargingStation, OCPP16RequestCommand.AUTHORIZE, {
-                idTag: commandPayload.idTag,
-              });
-            if (authorizeResponse?.idTagInfo?.status === OCPP16AuthorizationStatus.ACCEPTED) {
-              authorized = true;
-            }
-          } else {
-            logger.warn(
-              `${chargingStation.logPrefix()} The charging station configuration expects authorize at remote start transaction but local authorization or authorize isn't enabled`
-            );
-          }
-          if (authorized === true) {
-            // Authorization successful, start transaction
-            if (
-              this.setRemoteStartTransactionChargingProfile(
-                chargingStation,
-                transactionConnectorId,
-                commandPayload.chargingProfile
-              ) === true
-            ) {
-              connectorStatus.transactionRemoteStarted = true;
-              if (
-                (
-                  await chargingStation.ocppRequestService.requestHandler<
-                    OCPP16StartTransactionRequest,
-                    OCPP16StartTransactionResponse
-                  >(chargingStation, OCPP16RequestCommand.START_TRANSACTION, {
-                    connectorId: transactionConnectorId,
-                    idTag: commandPayload.idTag,
-                  })
-                ).idTagInfo.status === OCPP16AuthorizationStatus.ACCEPTED
-              ) {
-                logger.debug(remoteStartTransactionLogMsg);
-                return OCPP16Constants.OCPP_RESPONSE_ACCEPTED;
-              }
-              return this.notifyRemoteStartTransactionRejected(
-                chargingStation,
-                transactionConnectorId,
-                commandPayload.idTag
-              );
-            }
-            return this.notifyRemoteStartTransactionRejected(
-              chargingStation,
-              transactionConnectorId,
-              commandPayload.idTag
-            );
-          }
-          return this.notifyRemoteStartTransactionRejected(
-            chargingStation,
-            transactionConnectorId,
-            commandPayload.idTag
-          );
+        connectorStatus.localAuthorizeIdTag = commandPayload.idTag;
+        connectorStatus.idTagLocalAuthorized = true;
+        authorized = true;
+      } else if (chargingStation.getMustAuthorizeAtRemoteStart() === true) {
+        connectorStatus.authorizeIdTag = commandPayload.idTag;
+        const authorizeResponse: OCPP16AuthorizeResponse =
+          await chargingStation.ocppRequestService.requestHandler<
+            OCPP16AuthorizeRequest,
+            OCPP16AuthorizeResponse
+          >(chargingStation, OCPP16RequestCommand.AUTHORIZE, {
+            idTag: commandPayload.idTag,
+          });
+        if (authorizeResponse?.idTagInfo?.status === OCPP16AuthorizationStatus.ACCEPTED) {
+          authorized = true;
         }
-        // No authorization check required, start transaction
+      } else {
+        logger.warn(
+          `${chargingStation.logPrefix()} The charging station configuration expects authorize at remote start transaction but local authorization or authorize isn't enabled`
+        );
+      }
+      if (authorized === true) {
+        // Authorization successful, start transaction
         if (
           this.setRemoteStartTransactionChargingProfile(
             chargingStation,
@@ -926,6 +899,35 @@ export class OCPP16IncomingRequestService extends OCPPIncomingRequestService {
         commandPayload.idTag
       );
     }
+    // No authorization check required, start transaction
+    if (
+      this.setRemoteStartTransactionChargingProfile(
+        chargingStation,
+        transactionConnectorId,
+        commandPayload.chargingProfile
+      ) === true
+    ) {
+      connectorStatus.transactionRemoteStarted = true;
+      if (
+        (
+          await chargingStation.ocppRequestService.requestHandler<
+            OCPP16StartTransactionRequest,
+            OCPP16StartTransactionResponse
+          >(chargingStation, OCPP16RequestCommand.START_TRANSACTION, {
+            connectorId: transactionConnectorId,
+            idTag: commandPayload.idTag,
+          })
+        ).idTagInfo.status === OCPP16AuthorizationStatus.ACCEPTED
+      ) {
+        logger.debug(remoteStartTransactionLogMsg);
+        return OCPP16Constants.OCPP_RESPONSE_ACCEPTED;
+      }
+      return this.notifyRemoteStartTransactionRejected(
+        chargingStation,
+        transactionConnectorId,
+        commandPayload.idTag
+      );
+    }
     return this.notifyRemoteStartTransactionRejected(
       chargingStation,
       transactionConnectorId,