X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Focpp%2F1.6%2FOCPP16ServiceUtils.ts;h=d9144064003fb5bf07e0443720e17ac2af084501;hb=8f46463be058ed68cc4cc962c51722f7e3b55c54;hp=db964227a3d59324cc89dd791d14feb0652c2fce;hpb=5199f9fdf202eb534948f165a0994e1993675aa8;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts b/src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts index db964227..d9144064 100644 --- a/src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts +++ b/src/charging-station/ocpp/1.6/OCPP16ServiceUtils.ts @@ -1,17 +1,16 @@ -// Partial Copyright Jerome Benoit. 2021-2023. All Rights Reserved. +// Partial Copyright Jerome Benoit. 2021-2024. All Rights Reserved. import type { JSONSchemaType } from 'ajv' import { - type Interval, addSeconds, areIntervalsOverlapping, differenceInSeconds, + type Interval, isAfter, isBefore, isWithinInterval } from 'date-fns' -import { OCPP16Constants } from './OCPP16Constants.js' import { type ChargingStation, hasFeatureProfile, @@ -38,8 +37,9 @@ import { type OCPP16SupportedFeatureProfiles, OCPPVersion } from '../../../types/index.js' -import { isNotEmptyArray, logger, roundTo } from '../../../utils/index.js' +import { convertToDate, isNotEmptyArray, logger, roundTo } from '../../../utils/index.js' import { OCPPServiceUtils } from '../OCPPServiceUtils.js' +import { OCPP16Constants } from './OCPP16Constants.js' export class OCPP16ServiceUtils extends OCPPServiceUtils { public static checkFeatureProfile ( @@ -164,11 +164,15 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion chargingStation.getConnectorStatus(connectorId)!.chargingProfiles = [] } + cp.chargingSchedule.startSchedule = convertToDate(cp.chargingSchedule.startSchedule) + cp.validFrom = convertToDate(cp.validFrom) + cp.validTo = convertToDate(cp.validTo) let cpReplaced = false if (isNotEmptyArray(chargingStation.getConnectorStatus(connectorId)?.chargingProfiles)) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion for (const [index, chargingProfile] of chargingStation - .getConnectorStatus(connectorId) - ?.chargingProfiles?.entries() ?? []) { + .getConnectorStatus(connectorId)! + .chargingProfiles!.entries()) { if ( chargingProfile.chargingProfileId === cp.chargingProfileId || (chargingProfile.stackLevel === cp.stackLevel && @@ -191,7 +195,7 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils { const { id, chargingProfilePurpose, stackLevel } = commandPayload let clearedCP = false if (isNotEmptyArray(chargingProfiles)) { - chargingProfiles?.forEach((chargingProfile: OCPP16ChargingProfile, index: number) => { + chargingProfiles.forEach((chargingProfile: OCPP16ChargingProfile, index: number) => { let clearCurrentCP = false if (chargingProfile.chargingProfileId === id) { clearCurrentCP = true @@ -292,7 +296,7 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils { ), chargingSchedulePeriod: [ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - ...compositeChargingScheduleHigher!.chargingSchedulePeriod.map((schedulePeriod) => { + ...compositeChargingScheduleHigher!.chargingSchedulePeriod.map(schedulePeriod => { return { ...schedulePeriod, startPeriod: higherFirst @@ -305,7 +309,7 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils { } }), // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - ...compositeChargingScheduleLower!.chargingSchedulePeriod.map((schedulePeriod) => { + ...compositeChargingScheduleLower!.chargingSchedulePeriod.map(schedulePeriod => { return { ...schedulePeriod, startPeriod: higherFirst @@ -338,7 +342,7 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils { ), chargingSchedulePeriod: [ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - ...compositeChargingScheduleHigher!.chargingSchedulePeriod.map((schedulePeriod) => { + ...compositeChargingScheduleHigher!.chargingSchedulePeriod.map(schedulePeriod => { return { ...schedulePeriod, startPeriod: higherFirst @@ -503,8 +507,7 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils { .filter((schedulePeriod, index) => { if ( isWithinInterval( - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - addSeconds(chargingScheduleInterval.start, schedulePeriod.startPeriod)!, + addSeconds(chargingScheduleInterval.start, schedulePeriod.startPeriod), compositeInterval ) ) { @@ -543,10 +546,9 @@ export class OCPP16ServiceUtils extends OCPPServiceUtils { compositeInterval.end as Date, chargingScheduleInterval.start ), - chargingSchedulePeriod: chargingSchedule.chargingSchedulePeriod.filter((schedulePeriod) => + chargingSchedulePeriod: chargingSchedule.chargingSchedulePeriod.filter(schedulePeriod => isWithinInterval( - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - addSeconds(chargingScheduleInterval.start, schedulePeriod.startPeriod)!, + addSeconds(chargingScheduleInterval.start, schedulePeriod.startPeriod), compositeInterval ) )