From e8e68f7dfc56402028b8d6bef4043a39ae058661 Mon Sep 17 00:00:00 2001 From: faris Aljohari <83524184+farisaljohari@users.noreply.github.com> Date: Tue, 27 Aug 2024 22:10:20 +0300 Subject: [PATCH] Add User UUID to Temporary Passwords and Save to Repository --- .../visitor-password.controller.ts | 13 +++++ .../services/visitor-password.service.ts | 50 ++++++++++++++++--- .../visitor-password.module.ts | 2 + 3 files changed, 57 insertions(+), 8 deletions(-) diff --git a/src/vistor-password/controllers/visitor-password.controller.ts b/src/vistor-password/controllers/visitor-password.controller.ts index f1a84bb..bdd4324 100644 --- a/src/vistor-password/controllers/visitor-password.controller.ts +++ b/src/vistor-password/controllers/visitor-password.controller.ts @@ -7,6 +7,7 @@ import { HttpStatus, UseGuards, Get, + Req, } from '@nestjs/common'; import { ApiTags, ApiBearerAuth } from '@nestjs/swagger'; import { @@ -31,11 +32,14 @@ export class VisitorPasswordController { @Post('temporary-password/online/multiple-time') async addOnlineTemporaryPasswordMultipleTime( @Body() addDoorLockOnlineMultipleDto: AddDoorLockOnlineMultipleDto, + @Req() req: any, ) { try { + const userUuid = req.user.uuid; const temporaryPasswords = await this.visitorPasswordService.addOnlineTemporaryPasswordMultipleTime( addDoorLockOnlineMultipleDto, + userUuid, ); return { @@ -54,11 +58,14 @@ export class VisitorPasswordController { @Post('temporary-password/online/one-time') async addOnlineTemporaryPassword( @Body() addDoorLockOnlineOneTimeDto: AddDoorLockOnlineOneTimeDto, + @Req() req: any, ) { try { + const userUuid = req.user.uuid; const temporaryPasswords = await this.visitorPasswordService.addOnlineTemporaryPasswordOneTime( addDoorLockOnlineOneTimeDto, + userUuid, ); return { @@ -77,11 +84,14 @@ export class VisitorPasswordController { @Post('temporary-password/offline/one-time') async addOfflineOneTimeTemporaryPassword( @Body() addDoorLockOfflineOneTimeDto: AddDoorLockOfflineOneTimeDto, + @Req() req: any, ) { try { + const userUuid = req.user.uuid; const temporaryPassword = await this.visitorPasswordService.addOfflineOneTimeTemporaryPassword( addDoorLockOfflineOneTimeDto, + userUuid, ); return { @@ -101,11 +111,14 @@ export class VisitorPasswordController { async addOfflineMultipleTimeTemporaryPassword( @Body() addDoorLockOfflineMultipleDto: AddDoorLockOfflineMultipleDto, + @Req() req: any, ) { try { + const userUuid = req.user.uuid; const temporaryPassword = await this.visitorPasswordService.addOfflineMultipleTimeTemporaryPassword( addDoorLockOfflineMultipleDto, + userUuid, ); return { diff --git a/src/vistor-password/services/visitor-password.service.ts b/src/vistor-password/services/visitor-password.service.ts index c18ee84..f15b8e4 100644 --- a/src/vistor-password/services/visitor-password.service.ts +++ b/src/vistor-password/services/visitor-password.service.ts @@ -1,3 +1,4 @@ +import { VisitorPasswordRepository } from './../../../libs/common/src/modules/visitor-password/repositories/visitor-password.repository'; import { Injectable, HttpException, HttpStatus } from '@nestjs/common'; import { TuyaContext } from '@tuya/tuya-connector-nodejs'; import { ConfigService } from '@nestjs/config'; @@ -26,6 +27,7 @@ export class VisitorPasswordService { constructor( private readonly configService: ConfigService, private readonly deviceRepository: DeviceRepository, + private readonly visitorPasswordRepository: VisitorPasswordRepository, private readonly emailService: EmailService, private readonly doorLockService: DoorLockService, private readonly deviceService: DeviceService, @@ -43,6 +45,7 @@ export class VisitorPasswordService { async addOfflineMultipleTimeTemporaryPassword( addDoorLockOfflineMultipleDto: AddDoorLockOfflineMultipleDto, + userUuid: string, ) { try { const deviceResults = await Promise.allSettled( @@ -87,7 +90,14 @@ export class VisitorPasswordService { emailBody, ); } - + if (createMultipleOfflinePass.result.offline_temp_password_id) { + await this.visitorPasswordRepository.save({ + passwordTuyaUuid: `${createMultipleOfflinePass.result.offline_temp_password_id}`, + user: { + uuid: userUuid, + }, + }); + } return { success: true, result: createMultipleOfflinePass.result, @@ -156,6 +166,7 @@ export class VisitorPasswordService { async addOfflineOneTimeTemporaryPassword( addDoorLockOfflineOneTimeDto: AddDoorLockOfflineOneTimeDto, + userUuid: string, ) { try { const deviceResults = await Promise.allSettled( @@ -200,7 +211,14 @@ export class VisitorPasswordService { emailBody, ); } - + if (createOnceOfflinePass.result.offline_temp_password_id) { + await this.visitorPasswordRepository.save({ + passwordTuyaUuid: `${createOnceOfflinePass.result.offline_temp_password_id}`, + user: { + uuid: userUuid, + }, + }); + } return { success: true, result: createOnceOfflinePass.result, @@ -299,6 +317,7 @@ export class VisitorPasswordService { } async addOnlineTemporaryPasswordMultipleTime( addDoorLockOnlineMultipleDto: AddDoorLockOnlineMultipleDto, + userUuid: string, ) { try { const deviceResults = await Promise.allSettled( @@ -343,7 +362,14 @@ export class VisitorPasswordService { emailBody, ); } - + if (createPass.result.id) { + await this.visitorPasswordRepository.save({ + passwordTuyaUuid: `${createPass.result.id}`, + user: { + uuid: userUuid, + }, + }); + } return { success: true, id: createPass.result.id, @@ -431,18 +457,18 @@ export class VisitorPasswordService { this.doorLockService .getOnlineTemporaryPasswordsMultiple(deviceId.uuid, true, true) .catch(() => {}), - this.doorLockService - .getOfflineOneTimeTemporaryPasswords(deviceId.uuid, true, true) - .catch(() => {}), this.doorLockService .getOfflineOneTimeTemporaryPasswords(deviceId.uuid, true, false) .catch(() => {}), this.doorLockService - .getOfflineMultipleTimeTemporaryPasswords(deviceId.uuid, true, true) + .getOfflineOneTimeTemporaryPasswords(deviceId.uuid, true, true) .catch(() => {}), this.doorLockService .getOfflineMultipleTimeTemporaryPasswords(deviceId.uuid, true, false) .catch(() => {}), + this.doorLockService + .getOfflineMultipleTimeTemporaryPasswords(deviceId.uuid, true, true) + .catch(() => {}), ); }); return (await Promise.all(data)).flat().filter((datum) => { @@ -476,6 +502,7 @@ export class VisitorPasswordService { async addOnlineTemporaryPasswordOneTime( addDoorLockOnlineOneTimeDto: AddDoorLockOnlineOneTimeDto, + userUuid: string, ) { try { const deviceResults = await Promise.allSettled( @@ -519,7 +546,14 @@ export class VisitorPasswordService { emailBody, ); } - + if (createPass.result.id) { + await this.visitorPasswordRepository.save({ + passwordTuyaUuid: `${createPass.result.id}`, + user: { + uuid: userUuid, + }, + }); + } return { success: true, id: createPass.result.id, diff --git a/src/vistor-password/visitor-password.module.ts b/src/vistor-password/visitor-password.module.ts index 33454a3..19e61ea 100644 --- a/src/vistor-password/visitor-password.module.ts +++ b/src/vistor-password/visitor-password.module.ts @@ -11,6 +11,7 @@ import { DeviceService } from 'src/device/services'; import { ProductRepository } from '@app/common/modules/product/repositories'; import { DeviceStatusFirebaseService } from '@app/common/firebase/devices-status/services/devices-status.service'; import { SpaceRepository } from '@app/common/modules/space/repositories'; +import { VisitorPasswordRepository } from '@app/common/modules/visitor-password/repositories'; @Module({ imports: [ConfigModule, DeviceRepositoryModule, DoorLockModule], controllers: [VisitorPasswordController], @@ -23,6 +24,7 @@ import { SpaceRepository } from '@app/common/modules/space/repositories'; DeviceStatusFirebaseService, SpaceRepository, DeviceRepository, + VisitorPasswordRepository, ], exports: [VisitorPasswordService], })