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