Fix remaining linter errors properly
[e-mobility-charging-stations-simulator.git] / src / charging-station / ocpp / 1.6 / OCPP16ServiceUtils.ts
index 289b00ea22c0b70e928c2f72c069f77196cbb107..d112270a6aa6e99124931ed66682b08c458ddde8 100644 (file)
@@ -1,44 +1,72 @@
 // Partial Copyright Jerome Benoit. 2021. All Rights Reserved.
 
-import { MeterValueContext, MeterValueLocation, MeterValueUnit, OCPP16MeterValue, OCPP16MeterValueMeasurand, OCPP16MeterValuePhase, OCPP16SampledValue } from '../../../types/ocpp/1.6/MeterValues';
+import {
+  MeterValueContext,
+  MeterValueLocation,
+  MeterValueUnit,
+  OCPP16MeterValue,
+  OCPP16MeterValueMeasurand,
+  OCPP16MeterValuePhase,
+  OCPP16SampledValue,
+} from '../../../types/ocpp/1.6/MeterValues';
 
-import ChargingStation from '../../ChargingStation';
+import type ChargingStation from '../../ChargingStation';
 import { ErrorType } from '../../../types/ocpp/ErrorType';
 import OCPPError from '../../../exception/OCPPError';
 import { RequestCommand } from '../../../types/ocpp/Requests';
-import { SampledValueTemplate } from '../../../types/Connectors';
+import { SampledValueTemplate } from '../../../types/MeasurandPerPhaseSampledValueTemplates';
 import Utils from '../../../utils/Utils';
 import logger from '../../../utils/Logger';
 
 export class OCPP16ServiceUtils {
-  public static checkMeasurandPowerDivider(chargingStation: ChargingStation, measurandType: OCPP16MeterValueMeasurand): void {
+  public static checkMeasurandPowerDivider(
+    chargingStation: ChargingStation,
+    measurandType: OCPP16MeterValueMeasurand
+  ): void {
     if (Utils.isUndefined(chargingStation.stationInfo.powerDivider)) {
-      const errMsg = `${chargingStation.logPrefix()} MeterValues measurand ${measurandType ?? OCPP16MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER}: powerDivider is undefined`;
+      const errMsg = `${chargingStation.logPrefix()} MeterValues measurand ${
+        measurandType ?? OCPP16MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER
+      }: powerDivider is undefined`;
       logger.error(errMsg);
       throw new OCPPError(ErrorType.INTERNAL_ERROR, errMsg, RequestCommand.METER_VALUES);
     } else if (chargingStation.stationInfo?.powerDivider <= 0) {
-      const errMsg = `${chargingStation.logPrefix()} MeterValues measurand ${measurandType ?? OCPP16MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER}: powerDivider have zero or below value ${chargingStation.stationInfo.powerDivider}`;
+      const errMsg = `${chargingStation.logPrefix()} MeterValues measurand ${
+        measurandType ?? OCPP16MeterValueMeasurand.ENERGY_ACTIVE_IMPORT_REGISTER
+      }: powerDivider have zero or below value ${chargingStation.stationInfo.powerDivider}`;
       logger.error(errMsg);
       throw new OCPPError(ErrorType.INTERNAL_ERROR, errMsg, RequestCommand.METER_VALUES);
     }
   }
 
-  public static buildSampledValue(sampledValueTemplate: SampledValueTemplate, value: number, context?: MeterValueContext, phase?: OCPP16MeterValuePhase): OCPP16SampledValue {
-    const sampledValueValue = value ?? (sampledValueTemplate?.value ?? null);
-    const sampledValueContext = context ?? (sampledValueTemplate?.context ?? null);
-    const sampledValueLocation = sampledValueTemplate?.location ?? OCPP16ServiceUtils.getMeasurandDefaultLocation(sampledValueTemplate?.measurand ?? null);
-    const sampledValuePhase = phase ?? (sampledValueTemplate?.phase ?? null);
+  public static buildSampledValue(
+    sampledValueTemplate: SampledValueTemplate,
+    value: number,
+    context?: MeterValueContext,
+    phase?: OCPP16MeterValuePhase
+  ): OCPP16SampledValue {
+    const sampledValueValue = value ?? sampledValueTemplate?.value ?? null;
+    const sampledValueContext = context ?? sampledValueTemplate?.context ?? null;
+    const sampledValueLocation =
+      sampledValueTemplate?.location ??
+      OCPP16ServiceUtils.getMeasurandDefaultLocation(sampledValueTemplate?.measurand ?? null);
+    const sampledValuePhase = phase ?? sampledValueTemplate?.phase ?? null;
     return {
-      ...!Utils.isNullOrUndefined(sampledValueTemplate.unit) && { unit: sampledValueTemplate.unit },
-      ...!Utils.isNullOrUndefined(sampledValueContext) && { context: sampledValueContext },
-      ...!Utils.isNullOrUndefined(sampledValueTemplate.measurand) && { measurand: sampledValueTemplate.measurand },
-      ...!Utils.isNullOrUndefined(sampledValueLocation) && { location: sampledValueLocation },
-      ...!Utils.isNullOrUndefined(sampledValueValue) && { value: sampledValueValue.toString() },
-      ...!Utils.isNullOrUndefined(sampledValuePhase) && { phase: sampledValuePhase },
+      ...(!Utils.isNullOrUndefined(sampledValueTemplate.unit) && {
+        unit: sampledValueTemplate.unit,
+      }),
+      ...(!Utils.isNullOrUndefined(sampledValueContext) && { context: sampledValueContext }),
+      ...(!Utils.isNullOrUndefined(sampledValueTemplate.measurand) && {
+        measurand: sampledValueTemplate.measurand,
+      }),
+      ...(!Utils.isNullOrUndefined(sampledValueLocation) && { location: sampledValueLocation }),
+      ...(!Utils.isNullOrUndefined(sampledValueValue) && { value: sampledValueValue.toString() }),
+      ...(!Utils.isNullOrUndefined(sampledValuePhase) && { phase: sampledValuePhase }),
     };
   }
 
-  public static getMeasurandDefaultUnit(measurandType: OCPP16MeterValueMeasurand): MeterValueUnit | undefined {
+  public static getMeasurandDefaultUnit(
+    measurandType: OCPP16MeterValueMeasurand
+  ): MeterValueUnit | undefined {
     switch (measurandType) {
       case OCPP16MeterValueMeasurand.CURRENT_EXPORT:
       case OCPP16MeterValueMeasurand.CURRENT_IMPORT:
@@ -58,14 +86,20 @@ export class OCPP16ServiceUtils {
     }
   }
 
-  public static getMeasurandDefaultLocation(measurandType: OCPP16MeterValueMeasurand): MeterValueLocation | undefined {
+  public static getMeasurandDefaultLocation(
+    measurandType: OCPP16MeterValueMeasurand
+  ): MeterValueLocation | undefined {
     switch (measurandType) {
       case OCPP16MeterValueMeasurand.STATE_OF_CHARGE:
         return MeterValueLocation.EV;
     }
   }
 
-  public static buildTransactionBeginMeterValue(chargingStation: ChargingStation, connectorId: number, meterBegin: number): OCPP16MeterValue {
+  public static buildTransactionBeginMeterValue(
+    chargingStation: ChargingStation,
+    connectorId: number,
+    meterBegin: number
+  ): OCPP16MeterValue {
     const meterValue: OCPP16MeterValue = {
       timestamp: new Date().toISOString(),
       sampledValue: [],
@@ -73,11 +107,21 @@ export class OCPP16ServiceUtils {
     // Energy.Active.Import.Register measurand (default)
     const sampledValueTemplate = chargingStation.getSampledValueTemplate(connectorId);
     const unitDivider = sampledValueTemplate?.unit === MeterValueUnit.KILO_WATT_HOUR ? 1000 : 1;
-    meterValue.sampledValue.push(OCPP16ServiceUtils.buildSampledValue(sampledValueTemplate, Utils.roundTo(meterBegin / unitDivider, 4), MeterValueContext.TRANSACTION_BEGIN));
+    meterValue.sampledValue.push(
+      OCPP16ServiceUtils.buildSampledValue(
+        sampledValueTemplate,
+        Utils.roundTo(meterBegin / unitDivider, 4),
+        MeterValueContext.TRANSACTION_BEGIN
+      )
+    );
     return meterValue;
   }
 
-  public static buildTransactionEndMeterValue(chargingStation: ChargingStation, connectorId: number, meterEnd: number): OCPP16MeterValue {
+  public static buildTransactionEndMeterValue(
+    chargingStation: ChargingStation,
+    connectorId: number,
+    meterEnd: number
+  ): OCPP16MeterValue {
     const meterValue: OCPP16MeterValue = {
       timestamp: new Date().toISOString(),
       sampledValue: [],
@@ -85,11 +129,20 @@ export class OCPP16ServiceUtils {
     // Energy.Active.Import.Register measurand (default)
     const sampledValueTemplate = chargingStation.getSampledValueTemplate(connectorId);
     const unitDivider = sampledValueTemplate?.unit === MeterValueUnit.KILO_WATT_HOUR ? 1000 : 1;
-    meterValue.sampledValue.push(OCPP16ServiceUtils.buildSampledValue(sampledValueTemplate, Utils.roundTo(meterEnd / unitDivider, 4), MeterValueContext.TRANSACTION_END));
+    meterValue.sampledValue.push(
+      OCPP16ServiceUtils.buildSampledValue(
+        sampledValueTemplate,
+        Utils.roundTo(meterEnd / unitDivider, 4),
+        MeterValueContext.TRANSACTION_END
+      )
+    );
     return meterValue;
   }
 
-  public static buildTransactionDataMeterValues(transactionBeginMeterValue: OCPP16MeterValue, transactionEndMeterValue: OCPP16MeterValue): OCPP16MeterValue[] {
+  public static buildTransactionDataMeterValues(
+    transactionBeginMeterValue: OCPP16MeterValue,
+    transactionEndMeterValue: OCPP16MeterValue
+  ): OCPP16MeterValue[] {
     const meterValues: OCPP16MeterValue[] = [];
     meterValues.push(transactionBeginMeterValue);
     meterValues.push(transactionEndMeterValue);