feat: add `deleteChargingStations` SRPC command to UI Services
[e-mobility-charging-stations-simulator.git] / src / utils / MessageChannelUtils.ts
CommitLineData
179ed367
JB
1import {
2 OutputFormat,
3 buildChargingStationAutomaticTransactionGeneratorConfiguration,
4 buildConnectorsStatus,
66a7748d
JB
5 buildEvsesStatus
6} from './ChargingStationConfigurationUtils.js'
7import type { ChargingStation } from '../charging-station/index.js'
32de5a57 8import {
e0b0ee21
JB
9 type ChargingStationData,
10 type ChargingStationWorkerMessage,
32de5a57 11 ChargingStationWorkerMessageEvents,
66a7748d
JB
12 type Statistics
13} from '../types/index.js'
32de5a57 14
244c1396
JB
15export const buildAddedMessage = (
16 chargingStation: ChargingStation
17): ChargingStationWorkerMessage<ChargingStationData> => {
18 return {
19 event: ChargingStationWorkerMessageEvents.added,
20 data: buildChargingStationDataPayload(chargingStation)
21 }
22}
23
09e5a7a8
JB
24export const buildDeletedMessage = (
25 chargingStation: ChargingStation
26): ChargingStationWorkerMessage<ChargingStationData> => {
27 return {
28 event: ChargingStationWorkerMessageEvents.deleted,
29 data: buildChargingStationDataPayload(chargingStation)
30 }
31}
32
c8faabc8 33export const buildStartedMessage = (
66a7748d 34 chargingStation: ChargingStation
c8faabc8
JB
35): ChargingStationWorkerMessage<ChargingStationData> => {
36 return {
8cc482a9 37 event: ChargingStationWorkerMessageEvents.started,
66a7748d
JB
38 data: buildChargingStationDataPayload(chargingStation)
39 }
40}
32de5a57 41
c8faabc8 42export const buildStoppedMessage = (
66a7748d 43 chargingStation: ChargingStation
c8faabc8
JB
44): ChargingStationWorkerMessage<ChargingStationData> => {
45 return {
8cc482a9 46 event: ChargingStationWorkerMessageEvents.stopped,
66a7748d
JB
47 data: buildChargingStationDataPayload(chargingStation)
48 }
49}
32de5a57 50
c8faabc8 51export const buildUpdatedMessage = (
66a7748d 52 chargingStation: ChargingStation
c8faabc8
JB
53): ChargingStationWorkerMessage<ChargingStationData> => {
54 return {
8cc482a9 55 event: ChargingStationWorkerMessageEvents.updated,
66a7748d
JB
56 data: buildChargingStationDataPayload(chargingStation)
57 }
58}
32de5a57 59
c8faabc8 60export const buildPerformanceStatisticsMessage = (
66a7748d 61 statistics: Statistics
c8faabc8
JB
62): ChargingStationWorkerMessage<Statistics> => {
63 return {
8cc482a9 64 event: ChargingStationWorkerMessageEvents.performanceStatistics,
66a7748d
JB
65 data: statistics
66 }
67}
32de5a57 68
244c1396
JB
69export const buildChargingStationDataPayload = (
70 chargingStation: ChargingStation
71): ChargingStationData => {
c8faabc8
JB
72 return {
73 started: chargingStation.started,
5199f9fd
JB
74 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
75 stationInfo: chargingStation.stationInfo!,
c8faabc8
JB
76 connectors: buildConnectorsStatus(chargingStation),
77 evses: buildEvsesStatus(chargingStation, OutputFormat.worker),
66a7748d 78 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
e1d9a0f4 79 ocppConfiguration: chargingStation.ocppConfiguration!,
1d41bc6b 80 supervisionUrl: chargingStation.wsConnectionUrl.href,
5199f9fd 81 wsState: chargingStation.wsConnection?.readyState,
c8faabc8 82 bootNotificationResponse: chargingStation.bootNotificationResponse,
66a7748d 83 ...(chargingStation.automaticTransactionGenerator != null && {
c8faabc8 84 automaticTransactionGenerator:
66a7748d
JB
85 buildChargingStationAutomaticTransactionGeneratorConfiguration(chargingStation)
86 })
87 }
88}