I need to call each api one by one
this.spinner.show(this.DESIGN_CRITERIA_SPINNER);
let lstObs = [];
racks.forEach(async (rack, i) => {
let url = `${this.backendUrl}/cpq/opportunity/08a00019f176d2d6/products`;;
const options = {
withCredentials: true
};
let defaultPayload = {
"aAmbientTemperature": 97,
"aOffsetTemperature": 97,
"aAirOverCoilTemperature": 0,
"aRefrigerationType": "avRefrigerationTypeR744",
"aElectricalType": "avElectricalType460",
"aCondenserGasCoolerType": "avCondenserGasCoolerTypeAirCooled",
"aCondenserGasCoolerBrand": "avCondenserGasCoolerBrandModine",
"aRackLocation": "avRackLocationIndoor",
"aRemoteOrIntegratedCondenser": "avRemoteOrIntegratedCondenserRemote",
"aCompressorManufacturer": "avCompressorManufacturerBitzer",
// "aMtTotalLoad": 200,
// "aMtTemperature": 20,
// "aLtTotalLoad": 72,
// "aLtTemperature": -20,
"aMinRequiredSpareCapacity": "avMinRequiredSpareCapacity0",
"aUom": "avUomImperial"
};
let pipe = new AggregatePipe();
let ltLoad = pipe.transform(rack.LTGroup.Loads, "total", "Load");
let ltEvap = pipe.transform(rack.LTGroup.Loads, "min", "Evap Temp");
let mtLoad = pipe.transform(rack.MTGroup.Loads, "total", "Load");
let mtEvap = pipe.transform(rack.MTGroup.Loads, "min", "Evap Temp");
ltLoad = (ltLoad === 0) ? 0 : (ltLoad / 10);
mtLoad = (mtLoad === 0) ? 0 : (mtLoad / 10);
let payload = { ...defaultPayload, "aMtTotalLoad": mtLoad, "aMtTemperature": mtEvap, "aLtTotalLoad": ltLoad, "aLtTemperature": ltEvap };
lstObs.push(this.http.post(url, payload, options).pipe(delay(500)));
});
forkJoin(lstObs).subscribe({
next: (res) => {
this.spinner.hide(this.DESIGN_CRITERIA_SPINNER);
racks.forEach((x, i) => {
let tempRack = JSON.parse(JSON.stringify(x));
tempRack.models = res[i];
this.racksModels.push(tempRack);
})
},
error: (err) => {
this.spinner.hide(this.DESIGN_CRITERIA_SPINNER);
this.modal.dismiss();
},
complete:()=>{
this.spinner.hide(this.DESIGN_CRITERIA_SPINNER);
}
})