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