X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2FAutomaticTransactionGenerator.ts;h=e12fba9497629207fdd1e368c4ecd50cbfb2687c;hb=7274efb72e3cef8204594d138c5cf092b3a4fc6e;hp=d056d8ec866ee1c948740e24ca03ed2ae4f525d4;hpb=0a1dd746244cebb3633d88c6650839d9f32227fe;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/AutomaticTransactionGenerator.ts b/src/charging-station/AutomaticTransactionGenerator.ts index d056d8ec..e12fba94 100644 --- a/src/charging-station/AutomaticTransactionGenerator.ts +++ b/src/charging-station/AutomaticTransactionGenerator.ts @@ -20,6 +20,7 @@ import { import { Constants, cloneObject, + convertToDate, formatDurationMilliSeconds, getRandomInteger, isValidTime, @@ -217,10 +218,9 @@ export class AutomaticTransactionGenerator { ) ) logger.info( - `${this.logPrefix( - connectorId - )} transaction started with id ${this.chargingStation.getConnectorStatus(connectorId) - ?.transactionId} 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) await this.stopTransaction(connectorId) @@ -231,10 +231,9 @@ export class AutomaticTransactionGenerator { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion ++this.connectorsStatus.get(connectorId)!.skippedTransactions logger.info( - `${this.logPrefix(connectorId)} skipped consecutively ${this.connectorsStatus.get( - connectorId - )?.skippedConsecutiveTransactions}/${this.connectorsStatus.get(connectorId) - ?.skippedTransactions} transaction(s)` + `${this.logPrefix(connectorId)} skipped consecutively ${ + this.connectorsStatus.get(connectorId)?.skippedConsecutiveTransactions + }/${this.connectorsStatus.get(connectorId)?.skippedTransactions} transaction(s)` ) } // eslint-disable-next-line @typescript-eslint/no-non-null-assertion @@ -259,26 +258,24 @@ export class AutomaticTransactionGenerator { } private setStartConnectorStatus (connectorId: number): void { - const previousRunDuration = - isValidTime(this.connectorsStatus.get(connectorId)?.startDate) && - isValidTime(this.connectorsStatus.get(connectorId)?.lastRunDate) - ? // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - this.connectorsStatus.get(connectorId)!.lastRunDate!.getTime() - - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - this.connectorsStatus.get(connectorId)!.startDate!.getTime() - : 0 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.connectorsStatus.get(connectorId)!.startDate = new Date() - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - this.connectorsStatus.get(connectorId)!.stopDate = new Date( + if ( + this.chargingStation.getAutomaticTransactionGeneratorConfiguration()?.stopAbsoluteDuration === + false || // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - this.connectorsStatus.get(connectorId)!.startDate!.getTime() + - hoursToMilliseconds( - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - this.chargingStation.getAutomaticTransactionGeneratorConfiguration()!.stopAfterHours - ) - - previousRunDuration - ) + !isValidTime(this.connectorsStatus.get(connectorId)!.stopDate) + ) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + this.connectorsStatus.get(connectorId)!.stopDate = new Date( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + this.connectorsStatus.get(connectorId)!.startDate!.getTime() + + hoursToMilliseconds( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + this.chargingStation.getAutomaticTransactionGeneratorConfiguration()!.stopAfterHours + ) + ) + } delete this.connectorsStatus.get(connectorId)?.stoppedDate // eslint-disable-next-line @typescript-eslint/no-non-null-assertion this.connectorsStatus.get(connectorId)!.skippedConsecutiveTransactions = 0 @@ -379,7 +376,23 @@ export class AutomaticTransactionGenerator { this.chargingStation.getAutomaticTransactionGeneratorStatuses()![connectorId - 1] ) : undefined - this.resetConnectorStatus(connectorStatus) + if (connectorStatus != null) { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + connectorStatus.startDate = convertToDate(connectorStatus.startDate)! + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + connectorStatus.lastRunDate = convertToDate(connectorStatus.lastRunDate)! + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + connectorStatus.stopDate = convertToDate(connectorStatus.stopDate)! + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + connectorStatus.stoppedDate = convertToDate(connectorStatus.stoppedDate)! + if ( + !this.started && + (connectorStatus.start || + this.chargingStation.getAutomaticTransactionGeneratorConfiguration()?.enable !== true) + ) { + connectorStatus.start = false + } + } return ( connectorStatus ?? { start: false, @@ -398,19 +411,6 @@ export class AutomaticTransactionGenerator { ) } - private resetConnectorStatus (connectorStatus: Status | undefined): void { - if (connectorStatus == null) { - return - } - if ( - !this.started && - (connectorStatus.start || - this.chargingStation.getAutomaticTransactionGeneratorConfiguration()?.enable !== true) - ) { - connectorStatus.start = false - } - } - private async startTransaction ( connectorId: number ): Promise { @@ -483,10 +483,9 @@ export class AutomaticTransactionGenerator { let stopResponse: StopTransactionResponse | undefined if (this.chargingStation.getConnectorStatus(connectorId)?.transactionStarted === true) { logger.info( - `${this.logPrefix( - connectorId - )} stop transaction with id ${this.chargingStation.getConnectorStatus(connectorId) - ?.transactionId}` + `${this.logPrefix(connectorId)} stop transaction with id ${ + this.chargingStation.getConnectorStatus(connectorId)?.transactionId + }` ) stopResponse = await this.chargingStation.stopTransactionOnConnector(connectorId, reason) // eslint-disable-next-line @typescript-eslint/no-non-null-assertion