refactor: cleanup constants namespace
[e-mobility-charging-stations-simulator.git] / src / charging-station / AutomaticTransactionGenerator.ts
index 1dc0a80924e9ee08dad6506e354e168277332984..e53026babedf21fccc915c88c022eabd3622bd02 100644 (file)
@@ -7,12 +7,11 @@ import { hoursToMilliseconds, secondsToMilliseconds } from 'date-fns';
 import type { ChargingStation } from './ChargingStation';
 import { checkChargingStation } from './Helpers';
 import { IdTagsCache } from './IdTagsCache';
+import { OCPPServiceUtils } from './ocpp';
 import { BaseError } from '../exception';
 import { PerformanceStatistics } from '../performance';
 import {
   AuthorizationStatus,
-  type AuthorizeRequest,
-  type AuthorizeResponse,
   ConnectorStatusEnum,
   RequestCommand,
   type StartTransactionRequest,
@@ -231,18 +230,18 @@ export class AutomaticTransactionGenerator extends AsyncResource {
             ),
           );
           logger.info(
-            `${this.logPrefix(connectorId)} transaction started with id ${this.chargingStation
-              .getConnectorStatus(connectorId)
-              ?.transactionId?.toString()} and will stop in ${formatDurationMilliSeconds(
-              waitTrxEnd,
-            )}`,
+            `${this.logPrefix(
+              connectorId,
+            )} transaction started with id ${this.chargingStation.getConnectorStatus(connectorId)
+              ?.transactionId} and will stop in ${formatDurationMilliSeconds(waitTrxEnd)}`,
           );
           await sleep(waitTrxEnd);
           // Stop transaction
           logger.info(
-            `${this.logPrefix(connectorId)} stop transaction with id ${this.chargingStation
-              .getConnectorStatus(connectorId)
-              ?.transactionId?.toString()}`,
+            `${this.logPrefix(
+              connectorId,
+            )} stop transaction with id ${this.chargingStation.getConnectorStatus(connectorId)
+              ?.transactionId}`,
           );
           await this.stopTransaction(connectorId);
         }
@@ -250,11 +249,10 @@ export class AutomaticTransactionGenerator extends AsyncResource {
         ++this.connectorsStatus.get(connectorId)!.skippedConsecutiveTransactions!;
         ++this.connectorsStatus.get(connectorId)!.skippedTransactions!;
         logger.info(
-          `${this.logPrefix(connectorId)} skipped consecutively ${this.connectorsStatus
-            .get(connectorId)
-            ?.skippedConsecutiveTransactions?.toString()}/${this.connectorsStatus
-            .get(connectorId)
-            ?.skippedTransactions?.toString()} transaction(s)`,
+          `${this.logPrefix(connectorId)} skipped consecutively ${this.connectorsStatus.get(
+            connectorId,
+          )?.skippedConsecutiveTransactions}/${this.connectorsStatus.get(connectorId)
+            ?.skippedTransactions} transaction(s)`,
         );
       }
       this.connectorsStatus.get(connectorId)!.lastRunDate = new Date();
@@ -354,10 +352,12 @@ export class AutomaticTransactionGenerator extends AsyncResource {
   }
 
   private getConnectorStatus(connectorId: number): Status {
-    const connectorStatus = this.chargingStation.getAutomaticTransactionGeneratorStatuses()
-      ? cloneObject<Status[]>(this.chargingStation.getAutomaticTransactionGeneratorStatuses()!)[
-          connectorId
-        ]
+    const connectorStatus = this.chargingStation.getAutomaticTransactionGeneratorStatuses()?.[
+      connectorId
+    ]
+      ? cloneObject<Status>(
+          this.chargingStation.getAutomaticTransactionGeneratorStatuses()![connectorId],
+        )
       : undefined;
     delete connectorStatus?.startDate;
     delete connectorStatus?.lastRunDate;
@@ -397,24 +397,8 @@ export class AutomaticTransactionGenerator extends AsyncResource {
         connectorId,
       )} start transaction with an idTag '${idTag}'`;
       if (this.getRequireAuthorize()) {
-        // Authorize idTag
-        const authorizeResponse: AuthorizeResponse =
-          await this.chargingStation.ocppRequestService.requestHandler<
-            AuthorizeRequest,
-            AuthorizeResponse
-          >(this.chargingStation, RequestCommand.AUTHORIZE, {
-            idTag,
-          });
         ++this.connectorsStatus.get(connectorId)!.authorizeRequests!;
-        if (authorizeResponse?.idTagInfo?.status === AuthorizationStatus.ACCEPTED) {
-          if (
-            isNullOrUndefined(this.chargingStation.getConnectorStatus(connectorId)?.authorizeIdTag)
-          ) {
-            logger.warn(
-              `${this.chargingStation.logPrefix()} IdTag ${idTag} is not set as authorized remotely, applying deferred initialization`,
-            );
-            this.chargingStation.getConnectorStatus(connectorId)!.authorizeIdTag = idTag;
-          }
+        if (await OCPPServiceUtils.isIdTagAuthorized(this.chargingStation, connectorId, idTag)) {
           ++this.connectorsStatus.get(connectorId)!.acceptedAuthorizeRequests!;
           logger.info(startTransactionLogMsg);
           // Start transaction
@@ -475,7 +459,7 @@ export class AutomaticTransactionGenerator extends AsyncResource {
       const transactionId = this.chargingStation.getConnectorStatus(connectorId)?.transactionId;
       logger.warn(
         `${this.logPrefix(connectorId)} stopping a not started transaction${
-          !isNullOrUndefined(transactionId) ? ` with id ${transactionId?.toString()}` : ''
+          !isNullOrUndefined(transactionId) ? ` with id ${transactionId}` : ''
         }`,
       );
     }
@@ -492,7 +476,7 @@ export class AutomaticTransactionGenerator extends AsyncResource {
   private logPrefix = (connectorId?: number): string => {
     return logPrefix(
       ` ${this.chargingStation.stationInfo.chargingStationId} | ATG${
-        !isNullOrUndefined(connectorId) ? ` on connector #${connectorId!.toString()}` : ''
+        !isNullOrUndefined(connectorId) ? ` on connector #${connectorId}` : ''
       }:`,
     );
   };