Add User UUID to Temporary Passwords and Save to Repository

This commit is contained in:
faris Aljohari
2024-08-27 22:10:20 +03:00
parent 2a596d3b33
commit e8e68f7dfc
3 changed files with 57 additions and 8 deletions

View File

@ -7,6 +7,7 @@ import {
HttpStatus, HttpStatus,
UseGuards, UseGuards,
Get, Get,
Req,
} from '@nestjs/common'; } from '@nestjs/common';
import { ApiTags, ApiBearerAuth } from '@nestjs/swagger'; import { ApiTags, ApiBearerAuth } from '@nestjs/swagger';
import { import {
@ -31,11 +32,14 @@ export class VisitorPasswordController {
@Post('temporary-password/online/multiple-time') @Post('temporary-password/online/multiple-time')
async addOnlineTemporaryPasswordMultipleTime( async addOnlineTemporaryPasswordMultipleTime(
@Body() addDoorLockOnlineMultipleDto: AddDoorLockOnlineMultipleDto, @Body() addDoorLockOnlineMultipleDto: AddDoorLockOnlineMultipleDto,
@Req() req: any,
) { ) {
try { try {
const userUuid = req.user.uuid;
const temporaryPasswords = const temporaryPasswords =
await this.visitorPasswordService.addOnlineTemporaryPasswordMultipleTime( await this.visitorPasswordService.addOnlineTemporaryPasswordMultipleTime(
addDoorLockOnlineMultipleDto, addDoorLockOnlineMultipleDto,
userUuid,
); );
return { return {
@ -54,11 +58,14 @@ export class VisitorPasswordController {
@Post('temporary-password/online/one-time') @Post('temporary-password/online/one-time')
async addOnlineTemporaryPassword( async addOnlineTemporaryPassword(
@Body() addDoorLockOnlineOneTimeDto: AddDoorLockOnlineOneTimeDto, @Body() addDoorLockOnlineOneTimeDto: AddDoorLockOnlineOneTimeDto,
@Req() req: any,
) { ) {
try { try {
const userUuid = req.user.uuid;
const temporaryPasswords = const temporaryPasswords =
await this.visitorPasswordService.addOnlineTemporaryPasswordOneTime( await this.visitorPasswordService.addOnlineTemporaryPasswordOneTime(
addDoorLockOnlineOneTimeDto, addDoorLockOnlineOneTimeDto,
userUuid,
); );
return { return {
@ -77,11 +84,14 @@ export class VisitorPasswordController {
@Post('temporary-password/offline/one-time') @Post('temporary-password/offline/one-time')
async addOfflineOneTimeTemporaryPassword( async addOfflineOneTimeTemporaryPassword(
@Body() addDoorLockOfflineOneTimeDto: AddDoorLockOfflineOneTimeDto, @Body() addDoorLockOfflineOneTimeDto: AddDoorLockOfflineOneTimeDto,
@Req() req: any,
) { ) {
try { try {
const userUuid = req.user.uuid;
const temporaryPassword = const temporaryPassword =
await this.visitorPasswordService.addOfflineOneTimeTemporaryPassword( await this.visitorPasswordService.addOfflineOneTimeTemporaryPassword(
addDoorLockOfflineOneTimeDto, addDoorLockOfflineOneTimeDto,
userUuid,
); );
return { return {
@ -101,11 +111,14 @@ export class VisitorPasswordController {
async addOfflineMultipleTimeTemporaryPassword( async addOfflineMultipleTimeTemporaryPassword(
@Body() @Body()
addDoorLockOfflineMultipleDto: AddDoorLockOfflineMultipleDto, addDoorLockOfflineMultipleDto: AddDoorLockOfflineMultipleDto,
@Req() req: any,
) { ) {
try { try {
const userUuid = req.user.uuid;
const temporaryPassword = const temporaryPassword =
await this.visitorPasswordService.addOfflineMultipleTimeTemporaryPassword( await this.visitorPasswordService.addOfflineMultipleTimeTemporaryPassword(
addDoorLockOfflineMultipleDto, addDoorLockOfflineMultipleDto,
userUuid,
); );
return { return {

View File

@ -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 { Injectable, HttpException, HttpStatus } from '@nestjs/common';
import { TuyaContext } from '@tuya/tuya-connector-nodejs'; import { TuyaContext } from '@tuya/tuya-connector-nodejs';
import { ConfigService } from '@nestjs/config'; import { ConfigService } from '@nestjs/config';
@ -26,6 +27,7 @@ export class VisitorPasswordService {
constructor( constructor(
private readonly configService: ConfigService, private readonly configService: ConfigService,
private readonly deviceRepository: DeviceRepository, private readonly deviceRepository: DeviceRepository,
private readonly visitorPasswordRepository: VisitorPasswordRepository,
private readonly emailService: EmailService, private readonly emailService: EmailService,
private readonly doorLockService: DoorLockService, private readonly doorLockService: DoorLockService,
private readonly deviceService: DeviceService, private readonly deviceService: DeviceService,
@ -43,6 +45,7 @@ export class VisitorPasswordService {
async addOfflineMultipleTimeTemporaryPassword( async addOfflineMultipleTimeTemporaryPassword(
addDoorLockOfflineMultipleDto: AddDoorLockOfflineMultipleDto, addDoorLockOfflineMultipleDto: AddDoorLockOfflineMultipleDto,
userUuid: string,
) { ) {
try { try {
const deviceResults = await Promise.allSettled( const deviceResults = await Promise.allSettled(
@ -87,7 +90,14 @@ export class VisitorPasswordService {
emailBody, emailBody,
); );
} }
if (createMultipleOfflinePass.result.offline_temp_password_id) {
await this.visitorPasswordRepository.save({
passwordTuyaUuid: `${createMultipleOfflinePass.result.offline_temp_password_id}`,
user: {
uuid: userUuid,
},
});
}
return { return {
success: true, success: true,
result: createMultipleOfflinePass.result, result: createMultipleOfflinePass.result,
@ -156,6 +166,7 @@ export class VisitorPasswordService {
async addOfflineOneTimeTemporaryPassword( async addOfflineOneTimeTemporaryPassword(
addDoorLockOfflineOneTimeDto: AddDoorLockOfflineOneTimeDto, addDoorLockOfflineOneTimeDto: AddDoorLockOfflineOneTimeDto,
userUuid: string,
) { ) {
try { try {
const deviceResults = await Promise.allSettled( const deviceResults = await Promise.allSettled(
@ -200,7 +211,14 @@ export class VisitorPasswordService {
emailBody, emailBody,
); );
} }
if (createOnceOfflinePass.result.offline_temp_password_id) {
await this.visitorPasswordRepository.save({
passwordTuyaUuid: `${createOnceOfflinePass.result.offline_temp_password_id}`,
user: {
uuid: userUuid,
},
});
}
return { return {
success: true, success: true,
result: createOnceOfflinePass.result, result: createOnceOfflinePass.result,
@ -299,6 +317,7 @@ export class VisitorPasswordService {
} }
async addOnlineTemporaryPasswordMultipleTime( async addOnlineTemporaryPasswordMultipleTime(
addDoorLockOnlineMultipleDto: AddDoorLockOnlineMultipleDto, addDoorLockOnlineMultipleDto: AddDoorLockOnlineMultipleDto,
userUuid: string,
) { ) {
try { try {
const deviceResults = await Promise.allSettled( const deviceResults = await Promise.allSettled(
@ -343,7 +362,14 @@ export class VisitorPasswordService {
emailBody, emailBody,
); );
} }
if (createPass.result.id) {
await this.visitorPasswordRepository.save({
passwordTuyaUuid: `${createPass.result.id}`,
user: {
uuid: userUuid,
},
});
}
return { return {
success: true, success: true,
id: createPass.result.id, id: createPass.result.id,
@ -431,18 +457,18 @@ export class VisitorPasswordService {
this.doorLockService this.doorLockService
.getOnlineTemporaryPasswordsMultiple(deviceId.uuid, true, true) .getOnlineTemporaryPasswordsMultiple(deviceId.uuid, true, true)
.catch(() => {}), .catch(() => {}),
this.doorLockService
.getOfflineOneTimeTemporaryPasswords(deviceId.uuid, true, true)
.catch(() => {}),
this.doorLockService this.doorLockService
.getOfflineOneTimeTemporaryPasswords(deviceId.uuid, true, false) .getOfflineOneTimeTemporaryPasswords(deviceId.uuid, true, false)
.catch(() => {}), .catch(() => {}),
this.doorLockService this.doorLockService
.getOfflineMultipleTimeTemporaryPasswords(deviceId.uuid, true, true) .getOfflineOneTimeTemporaryPasswords(deviceId.uuid, true, true)
.catch(() => {}), .catch(() => {}),
this.doorLockService this.doorLockService
.getOfflineMultipleTimeTemporaryPasswords(deviceId.uuid, true, false) .getOfflineMultipleTimeTemporaryPasswords(deviceId.uuid, true, false)
.catch(() => {}), .catch(() => {}),
this.doorLockService
.getOfflineMultipleTimeTemporaryPasswords(deviceId.uuid, true, true)
.catch(() => {}),
); );
}); });
return (await Promise.all(data)).flat().filter((datum) => { return (await Promise.all(data)).flat().filter((datum) => {
@ -476,6 +502,7 @@ export class VisitorPasswordService {
async addOnlineTemporaryPasswordOneTime( async addOnlineTemporaryPasswordOneTime(
addDoorLockOnlineOneTimeDto: AddDoorLockOnlineOneTimeDto, addDoorLockOnlineOneTimeDto: AddDoorLockOnlineOneTimeDto,
userUuid: string,
) { ) {
try { try {
const deviceResults = await Promise.allSettled( const deviceResults = await Promise.allSettled(
@ -519,7 +546,14 @@ export class VisitorPasswordService {
emailBody, emailBody,
); );
} }
if (createPass.result.id) {
await this.visitorPasswordRepository.save({
passwordTuyaUuid: `${createPass.result.id}`,
user: {
uuid: userUuid,
},
});
}
return { return {
success: true, success: true,
id: createPass.result.id, id: createPass.result.id,

View File

@ -11,6 +11,7 @@ import { DeviceService } from 'src/device/services';
import { ProductRepository } from '@app/common/modules/product/repositories'; import { ProductRepository } from '@app/common/modules/product/repositories';
import { DeviceStatusFirebaseService } from '@app/common/firebase/devices-status/services/devices-status.service'; import { DeviceStatusFirebaseService } from '@app/common/firebase/devices-status/services/devices-status.service';
import { SpaceRepository } from '@app/common/modules/space/repositories'; import { SpaceRepository } from '@app/common/modules/space/repositories';
import { VisitorPasswordRepository } from '@app/common/modules/visitor-password/repositories';
@Module({ @Module({
imports: [ConfigModule, DeviceRepositoryModule, DoorLockModule], imports: [ConfigModule, DeviceRepositoryModule, DoorLockModule],
controllers: [VisitorPasswordController], controllers: [VisitorPasswordController],
@ -23,6 +24,7 @@ import { SpaceRepository } from '@app/common/modules/space/repositories';
DeviceStatusFirebaseService, DeviceStatusFirebaseService,
SpaceRepository, SpaceRepository,
DeviceRepository, DeviceRepository,
VisitorPasswordRepository,
], ],
exports: [VisitorPasswordService], exports: [VisitorPasswordService],
}) })