diff --git a/libs/common/src/firebase/devices-status/services/devices-status.service.ts b/libs/common/src/firebase/devices-status/services/devices-status.service.ts index 267d6b6..f075f34 100644 --- a/libs/common/src/firebase/devices-status/services/devices-status.service.ts +++ b/libs/common/src/firebase/devices-status/services/devices-status.service.ts @@ -85,6 +85,7 @@ export class DeviceStatusFirebaseService { return await this.deviceRepository.findOne({ where: { deviceTuyaUuid, + isActive: true, }, relations: ['productDevice'], }); @@ -139,6 +140,7 @@ export class DeviceStatusFirebaseService { return await this.deviceRepository.findOne({ where: { uuid: deviceUuid, + isActive: true, }, ...(withProductDevice && { relations: ['productDevice'] }), }); diff --git a/libs/common/src/modules/device/entities/device.entity.ts b/libs/common/src/modules/device/entities/device.entity.ts index c02f8a1..5a96255 100644 --- a/libs/common/src/modules/device/entities/device.entity.ts +++ b/libs/common/src/modules/device/entities/device.entity.ts @@ -18,8 +18,9 @@ export class DeviceEntity extends AbstractEntity { @Column({ nullable: true, default: true, + type: 'boolean', }) - isActive: true; + isActive: boolean; @ManyToOne(() => UserEntity, (user) => user.userSpaces, { nullable: false }) user: UserEntity; diff --git a/src/device/services/device.service.ts b/src/device/services/device.service.ts index e45152b..68e11b5 100644 --- a/src/device/services/device.service.ts +++ b/src/device/services/device.service.ts @@ -62,6 +62,7 @@ export class DeviceService { return await this.deviceRepository.findOne({ where: { uuid: deviceUuid, + isActive: true, }, ...(withProductDevice && { relations: ['productDevice'] }), }); @@ -70,6 +71,7 @@ export class DeviceService { return await this.deviceRepository.findOne({ where: { deviceTuyaUuid, + isActive: true, }, relations: ['productDevice'], }); @@ -126,6 +128,7 @@ export class DeviceService { const devices = await this.deviceRepository.find({ where: { user: { uuid: userUuid }, + isActive: true, permission: { userUuid, permissionType: { @@ -172,6 +175,7 @@ export class DeviceService { const devices = await this.deviceRepository.find({ where: { spaceDevice: { uuid: getDeviceByRoomUuidDto.roomUuid }, + isActive: true, permission: { userUuid, permissionType: { @@ -221,6 +225,7 @@ export class DeviceService { const device = await this.deviceRepository.findOne({ where: { uuid: updateDeviceInRoomDto.deviceUuid, + isActive: true, }, relations: ['spaceDevice', 'spaceDevice.parent'], }); @@ -407,7 +412,7 @@ export class DeviceService { } async checkAllDevicesHaveSameProductUuid(deviceUuids: string[]) { const firstDevice = await this.deviceRepository.findOne({ - where: { uuid: deviceUuids[0] }, + where: { uuid: deviceUuids[0], isActive: true }, relations: ['productDevice'], }); @@ -419,7 +424,7 @@ export class DeviceService { for (let i = 1; i < deviceUuids.length; i++) { const device = await this.deviceRepository.findOne({ - where: { uuid: deviceUuids[i] }, + where: { uuid: deviceUuids[i], isActive: true }, relations: ['productDevice'], }); @@ -463,6 +468,11 @@ export class DeviceService { if (operationResult.success) { // Add to success results if operationResult.success is true successResults.push({ deviceUuid, result: operationResult }); + // Update isActive to false in the repository for the successfully reset device + await this.deviceRepository.update( + { uuid: deviceUuid }, + { isActive: false }, + ); } else { // Add to failed results if operationResult.success is false failedResults.push({ deviceUuid, error: operationResult.msg }); @@ -643,6 +653,7 @@ export class DeviceService { const device = await this.deviceRepository.findOne({ where: { uuid: deviceUuid, + isActive: true, permission: { userUuid: userUuid, }, @@ -774,6 +785,9 @@ export class DeviceService { parent: { uuid: unitUuid, }, + devicesSpaceEntity: { + isActive: true, + }, }, relations: ['devicesSpaceEntity', 'devicesSpaceEntity.productDevice'], }); @@ -808,6 +822,7 @@ export class DeviceService { async getAllDevices(): Promise { try { const devices = await this.deviceRepository.find({ + where: { isActive: true }, relations: [ 'spaceDevice.parent', 'productDevice', diff --git a/src/door-lock/services/door.lock.service.ts b/src/door-lock/services/door.lock.service.ts index 5864c5d..4007cea 100644 --- a/src/door-lock/services/door.lock.service.ts +++ b/src/door-lock/services/door.lock.service.ts @@ -826,6 +826,7 @@ export class DoorLockService { return await this.deviceRepository.findOne({ where: { uuid: deviceUuid, + isActive: true, }, ...(withProductDevice && { relations: ['productDevice'] }), }); diff --git a/src/guards/device.product.guard.ts b/src/guards/device.product.guard.ts index 108307a..6bf84cc 100644 --- a/src/guards/device.product.guard.ts +++ b/src/guards/device.product.guard.ts @@ -28,7 +28,7 @@ export class CheckProductUuidForAllDevicesGuard implements CanActivate { async checkAllDevicesHaveSameProductUuid(deviceUuids: string[]) { const firstDevice = await this.deviceRepository.findOne({ - where: { uuid: deviceUuids[0] }, + where: { uuid: deviceUuids[0], isActive: true }, relations: ['productDevice'], }); @@ -40,7 +40,7 @@ export class CheckProductUuidForAllDevicesGuard implements CanActivate { for (let i = 1; i < deviceUuids.length; i++) { const device = await this.deviceRepository.findOne({ - where: { uuid: deviceUuids[i] }, + where: { uuid: deviceUuids[i], isActive: true }, relations: ['productDevice'], }); diff --git a/src/guards/room.guard.ts b/src/guards/room.guard.ts index c5ed514..97fb992 100644 --- a/src/guards/room.guard.ts +++ b/src/guards/room.guard.ts @@ -55,6 +55,7 @@ export class CheckRoomGuard implements CanActivate { const response = await this.deviceRepository.findOne({ where: { uuid: deviceUuid, + isActive: true, }, }); diff --git a/src/guards/user.device.controllable.permission.guard.ts b/src/guards/user.device.controllable.permission.guard.ts index 2684c8d..3736368 100644 --- a/src/guards/user.device.controllable.permission.guard.ts +++ b/src/guards/user.device.controllable.permission.guard.ts @@ -58,7 +58,11 @@ export class CheckUserHaveControllablePermission implements CanActivate { deviceUuid: string, ): Promise { const device = await this.deviceRepository.findOne({ - where: { uuid: deviceUuid, permission: { userUuid: userUuid } }, + where: { + uuid: deviceUuid, + isActive: true, + permission: { userUuid: userUuid }, + }, relations: ['permission', 'permission.permissionType'], }); diff --git a/src/guards/user.device.permission.guard.ts b/src/guards/user.device.permission.guard.ts index e63a08e..adf78e4 100644 --- a/src/guards/user.device.permission.guard.ts +++ b/src/guards/user.device.permission.guard.ts @@ -59,7 +59,11 @@ export class CheckUserHavePermission implements CanActivate { deviceUuid: string, ): Promise { const device = await this.deviceRepository.findOne({ - where: { uuid: deviceUuid, permission: { userUuid: userUuid } }, + where: { + uuid: deviceUuid, + permission: { userUuid: userUuid }, + isActive: true, + }, relations: ['permission', 'permission.permissionType'], }); diff --git a/src/schedule/services/schedule.service.ts b/src/schedule/services/schedule.service.ts index 6af6a76..ee029cf 100644 --- a/src/schedule/services/schedule.service.ts +++ b/src/schedule/services/schedule.service.ts @@ -298,6 +298,7 @@ export class ScheduleService { return await this.deviceRepository.findOne({ where: { uuid: deviceUuid, + isActive: true, }, ...(withProductDevice && { relations: ['productDevice'] }), }); diff --git a/src/vistor-password/services/visitor-password.service.ts b/src/vistor-password/services/visitor-password.service.ts index f15b8e4..f03d370 100644 --- a/src/vistor-password/services/visitor-password.service.ts +++ b/src/vistor-password/services/visitor-password.service.ts @@ -440,6 +440,7 @@ export class VisitorPasswordService { productDevice: { prodType: ProductType.DL, }, + isActive: true, }, }); const data = []; @@ -482,6 +483,7 @@ export class VisitorPasswordService { productDevice: { prodType: ProductType.DL, }, + isActive: true, }, relations: ['productDevice'], }); @@ -823,6 +825,7 @@ export class VisitorPasswordService { return await this.deviceRepository.findOne({ where: { uuid: deviceUuid, + isActive: true, }, ...(withProductDevice && { relations: ['productDevice'] }), });