fix: fix TxProfile removal with transaction id defined at Tx stop
[e-mobility-charging-stations-simulator.git] / src / charging-station / Helpers.ts
index 4d6a477c44e5ea3ced3cab1f13d986814651b147..93df1dedd9da579e2991bca552752745545f0506 100644 (file)
@@ -420,10 +420,11 @@ export const resetConnectorStatus = (connectorStatus: ConnectorStatus | undefine
   if (isNotEmptyArray(connectorStatus.chargingProfiles)) {
     connectorStatus.chargingProfiles = connectorStatus.chargingProfiles.filter(
       chargingProfile =>
-        chargingProfile.chargingProfilePurpose !== ChargingProfilePurposeType.TX_PROFILE ||
-        (chargingProfile.transactionId != null &&
+        (chargingProfile.chargingProfilePurpose === ChargingProfilePurposeType.TX_PROFILE &&
+          chargingProfile.transactionId != null &&
           connectorStatus.transactionId != null &&
-          chargingProfile.transactionId !== connectorStatus.transactionId)
+          chargingProfile.transactionId !== connectorStatus.transactionId) ||
+        chargingProfile.chargingProfilePurpose !== ChargingProfilePurposeType.TX_PROFILE
     )
   }
   resetAuthorizeConnectorStatus(connectorStatus)
@@ -436,22 +437,25 @@ export const resetConnectorStatus = (connectorStatus: ConnectorStatus | undefine
   delete connectorStatus.transactionBeginMeterValue
 }
 
-export const prepareDatesInConnectorStatus = (
-  connectorStatus: ConnectorStatus
-): ConnectorStatus => {
+export const prepareConnectorStatus = (connectorStatus: ConnectorStatus): ConnectorStatus => {
   if (connectorStatus.reservation != null) {
     // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
     connectorStatus.reservation.expiryDate = convertToDate(connectorStatus.reservation.expiryDate)!
   }
   if (isNotEmptyArray(connectorStatus.chargingProfiles)) {
-    connectorStatus.chargingProfiles = connectorStatus.chargingProfiles.map(chargingProfile => {
-      chargingProfile.chargingSchedule.startSchedule = convertToDate(
-        chargingProfile.chargingSchedule.startSchedule
+    connectorStatus.chargingProfiles = connectorStatus.chargingProfiles
+      .filter(
+        chargingProfile =>
+          chargingProfile.chargingProfilePurpose !== ChargingProfilePurposeType.TX_PROFILE
       )
-      chargingProfile.validFrom = convertToDate(chargingProfile.validFrom)
-      chargingProfile.validTo = convertToDate(chargingProfile.validTo)
-      return chargingProfile
-    })
+      .map(chargingProfile => {
+        chargingProfile.chargingSchedule.startSchedule = convertToDate(
+          chargingProfile.chargingSchedule.startSchedule
+        )
+        chargingProfile.validFrom = convertToDate(chargingProfile.validFrom)
+        chargingProfile.validTo = convertToDate(chargingProfile.validTo)
+        return chargingProfile
+      })
   }
   return connectorStatus
 }