refactor(simulator): add more default values to ATG
[e-mobility-charging-stations-simulator.git] / src / utils / ChargingStationConfigurationUtils.ts
1 import { Utils } from './Utils';
2 import type { ChargingStation } from '../charging-station';
3 import type {
4 ChargingStationAutomaticTransactionGeneratorConfiguration,
5 ConnectorStatus,
6 EvseStatusConfiguration,
7 EvseStatusWorkerType,
8 } from '../types';
9
10 export const buildChargingStationAutomaticTransactionGeneratorConfiguration = (
11 chargingStation: ChargingStation
12 ): ChargingStationAutomaticTransactionGeneratorConfiguration => {
13 return {
14 automaticTransactionGenerator: chargingStation.getAutomaticTransactionGeneratorConfiguration(),
15 ...(!Utils.isNullOrUndefined(
16 chargingStation.automaticTransactionGenerator?.connectorsStatus
17 ) && {
18 automaticTransactionGeneratorStatuses: [
19 ...chargingStation.automaticTransactionGenerator.connectorsStatus.values(),
20 ],
21 }),
22 };
23 };
24
25 export const buildConnectorsStatus = (chargingStation: ChargingStation): ConnectorStatus[] => {
26 return [...chargingStation.connectors.values()].map(
27 // eslint-disable-next-line @typescript-eslint/no-unused-vars
28 ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest
29 );
30 };
31
32 export const enum OutputFormat {
33 configuration = 'configuration',
34 worker = 'worker',
35 }
36
37 export const buildEvsesStatus = (
38 chargingStation: ChargingStation,
39 outputFormat: OutputFormat = OutputFormat.configuration
40 ): (EvseStatusWorkerType | EvseStatusConfiguration)[] => {
41 return [...chargingStation.evses.values()].map((evseStatus) => {
42 const connectorsStatus = [...evseStatus.connectors.values()].map(
43 // eslint-disable-next-line @typescript-eslint/no-unused-vars
44 ({ transactionSetInterval, ...connectorStatusRest }) => connectorStatusRest
45 );
46 let status: EvseStatusConfiguration;
47 switch (outputFormat) {
48 case OutputFormat.worker:
49 return {
50 ...evseStatus,
51 connectors: connectorsStatus,
52 };
53 case OutputFormat.configuration:
54 status = {
55 ...evseStatus,
56 connectorsStatus,
57 };
58 delete (status as EvseStatusWorkerType).connectors;
59 return status;
60 }
61 });
62 };