+ return template;
+ }
+
+ private createSerialNumber(
+ stationInfo: ChargingStationInfo,
+ existingStationInfo?: ChargingStationInfo,
+ params: { randomSerialNumberUpperCase?: boolean; randomSerialNumber?: boolean } = {
+ randomSerialNumberUpperCase: true,
+ randomSerialNumber: true,
+ }
+ ): void {
+ params = params ?? {};
+ params.randomSerialNumberUpperCase = params?.randomSerialNumberUpperCase ?? true;
+ params.randomSerialNumber = params?.randomSerialNumber ?? true;
+ if (existingStationInfo) {
+ existingStationInfo?.chargePointSerialNumber &&
+ (stationInfo.chargePointSerialNumber = existingStationInfo.chargePointSerialNumber);
+ existingStationInfo?.chargeBoxSerialNumber &&
+ (stationInfo.chargeBoxSerialNumber = existingStationInfo.chargeBoxSerialNumber);
+ } else {
+ const serialNumberSuffix = params?.randomSerialNumber
+ ? this.getRandomSerialNumberSuffix({ upperCase: params.randomSerialNumberUpperCase })
+ : '';
+ stationInfo.chargePointSerialNumber =
+ stationInfo?.chargePointSerialNumberPrefix &&
+ stationInfo.chargePointSerialNumberPrefix + serialNumberSuffix;
+ stationInfo.chargeBoxSerialNumber =
+ stationInfo?.chargeBoxSerialNumberPrefix &&
+ stationInfo.chargeBoxSerialNumberPrefix + serialNumberSuffix;
+ }
+ }
+
+ private getStationInfoFromTemplate(): ChargingStationInfo {
+ const stationInfo: ChargingStationInfo =
+ this.getTemplateFromFile() ?? ({} as ChargingStationInfo);
+ stationInfo.hash = crypto
+ .createHash(Constants.DEFAULT_HASH_ALGORITHM)
+ .update(JSON.stringify(stationInfo))
+ .digest('hex');
+ const chargingStationId = this.getChargingStationId(stationInfo);