finished get status for batch devices endpoint

This commit is contained in:
faris Aljohari
2024-09-17 09:18:40 +03:00
parent 446564c984
commit d1cdc1375a
3 changed files with 46 additions and 0 deletions

View File

@ -24,6 +24,7 @@ import {
} from '../dtos/get.device.dto';
import {
BatchControlDevicesDto,
BatchStatusDevicesDto,
ControlDeviceDto,
} from '../dtos/control.device.dto';
import { convertKeysToCamelCase } from '@app/common/helper/camelCaseConverter';
@ -362,7 +363,29 @@ export class DeviceService {
);
}
}
async batchStatusDevices(batchStatusDevicesDto: BatchStatusDevicesDto) {
const { devicesUuid } = batchStatusDevicesDto;
const devicesUuidArray = devicesUuid.split(',');
try {
await this.checkAllDevicesHaveSameProductUuid(devicesUuidArray);
const statuses = await Promise.all(
devicesUuidArray.map(async (deviceUuid) => {
const result = await this.getDevicesInstructionStatus(deviceUuid);
return { deviceUuid, result };
}),
);
return {
status: statuses[0].result,
devices: statuses,
};
} catch (error) {
throw new HttpException(
error.message || 'Device Not Found',
error.status || HttpStatus.NOT_FOUND,
);
}
}
async checkAllDevicesHaveSameProductUuid(deviceUuids: string[]) {
const firstDevice = await this.deviceRepository.findOne({
where: { uuid: deviceUuids[0] },