X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Fcharging-station%2Fui-server%2Fui-services%2FAbstractUIService.ts;h=9d044a09e2a0ce11a0514884fa2e58ca3e64d6c6;hb=55ae7b758f478a2beb4557bbc96363fb913dcc73;hp=6eda2c9a32024a7d9ec435e36a6a03f4e1620c9c;hpb=42e341c40076aa8c5fc37e10512ec41c9ab60825;p=e-mobility-charging-stations-simulator.git diff --git a/src/charging-station/ui-server/ui-services/AbstractUIService.ts b/src/charging-station/ui-server/ui-services/AbstractUIService.ts index 6eda2c9a..9d044a09 100644 --- a/src/charging-station/ui-server/ui-services/AbstractUIService.ts +++ b/src/charging-station/ui-server/ui-services/AbstractUIService.ts @@ -67,6 +67,7 @@ export abstract class AbstractUIService { this.requestHandlers = new Map([ [ProcedureName.LIST_TEMPLATES, this.handleListTemplates.bind(this)], [ProcedureName.LIST_CHARGING_STATIONS, this.handleListChargingStations.bind(this)], + [ProcedureName.ADD_CHARGING_STATIONS, this.handleAddChargingStations.bind(this)], [ProcedureName.START_SIMULATOR, this.handleStartSimulator.bind(this)], [ProcedureName.STOP_SIMULATOR, this.handleStopSimulator.bind(this)] ]) @@ -118,7 +119,7 @@ export abstract class AbstractUIService { errorMessage: (error as OCPPError).message, errorStack: (error as OCPPError).stack, errorDetails: (error as OCPPError).details - } + } satisfies ResponsePayload } if (responsePayload != null) { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion @@ -217,6 +218,40 @@ export abstract class AbstractUIService { } satisfies ResponsePayload } + private async handleAddChargingStations ( + messageId?: string, + procedureName?: ProcedureName, + requestPayload?: RequestPayload + ): Promise { + const { template, numberOfStations } = requestPayload as { + template: string + numberOfStations: number + } + if (!this.uiServer.chargingStationTemplates.has(template)) { + return { + status: ResponseStatus.FAILURE, + errorMessage: `Template '${template}' not found` + } satisfies ResponsePayload + } + for (let i = 0; i < numberOfStations; i++) { + try { + await Bootstrap.getInstance().addChargingStation( + Bootstrap.getInstance().getLastIndex(template) + 1, + `${template}.json` + ) + } catch (error) { + return { + status: ResponseStatus.FAILURE, + errorMessage: (error as Error).message, + errorStack: (error as Error).stack + } satisfies ResponsePayload + } + } + return { + status: ResponseStatus.SUCCESS + } + } + private async handleStartSimulator (): Promise { try { await Bootstrap.getInstance().start()