mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-11-26 08:54:54 +00:00
refactor visitor passwords apis
This commit is contained in:
@ -726,26 +726,10 @@ export class ControllerRoute {
|
|||||||
'/projects/:projectUuid/visitor-password';
|
'/projects/:projectUuid/visitor-password';
|
||||||
|
|
||||||
static ACTIONS = class {
|
static ACTIONS = class {
|
||||||
public static readonly ADD_ONLINE_TEMP_PASSWORD_MULTIPLE_TIME_SUMMARY =
|
public static readonly ADD_VISITOR_PASSWORD_SUMMARY =
|
||||||
'Add online temporary passwords (multiple-time)';
|
'Add visitor password';
|
||||||
public static readonly ADD_ONLINE_TEMP_PASSWORD_MULTIPLE_TIME_DESCRIPTION =
|
public static readonly ADD_VISITOR_PASSWORD_DESCRIPTION =
|
||||||
'This endpoint adds multiple online temporary passwords for door locks.';
|
'This endpoint allows you to add a visitor password based on the operation type.';
|
||||||
|
|
||||||
public static readonly ADD_ONLINE_TEMP_PASSWORD_ONE_TIME_SUMMARY =
|
|
||||||
'Add online temporary password (one-time)';
|
|
||||||
public static readonly ADD_ONLINE_TEMP_PASSWORD_ONE_TIME_DESCRIPTION =
|
|
||||||
'This endpoint adds a one-time online temporary password for a door lock.';
|
|
||||||
|
|
||||||
public static readonly ADD_OFFLINE_TEMP_PASSWORD_ONE_TIME_SUMMARY =
|
|
||||||
'Add offline temporary password (one-time)';
|
|
||||||
public static readonly ADD_OFFLINE_TEMP_PASSWORD_ONE_TIME_DESCRIPTION =
|
|
||||||
'This endpoint adds a one-time offline temporary password for a door lock.';
|
|
||||||
|
|
||||||
public static readonly ADD_OFFLINE_TEMP_PASSWORD_MULTIPLE_TIME_SUMMARY =
|
|
||||||
'Add offline temporary passwords (multiple-time)';
|
|
||||||
public static readonly ADD_OFFLINE_TEMP_PASSWORD_MULTIPLE_TIME_DESCRIPTION =
|
|
||||||
'This endpoint adds multiple offline temporary passwords for door locks.';
|
|
||||||
|
|
||||||
public static readonly GET_VISITOR_PASSWORD_SUMMARY =
|
public static readonly GET_VISITOR_PASSWORD_SUMMARY =
|
||||||
'Get visitor passwords';
|
'Get visitor passwords';
|
||||||
public static readonly GET_VISITOR_PASSWORD_DESCRIPTION =
|
public static readonly GET_VISITOR_PASSWORD_DESCRIPTION =
|
||||||
|
|||||||
6
libs/common/src/constants/visitor-password.enum.ts
Normal file
6
libs/common/src/constants/visitor-password.enum.ts
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
export enum VisitorPasswordEnum {
|
||||||
|
ONLINE_ONE_TIME = 'ONLINE_ONE_TIME',
|
||||||
|
ONLINE_MULTIPLE_TIME = 'ONLINE_MULTIPLE_TIME',
|
||||||
|
OFFLINE_ONE_TIME = 'OFFLINE_ONE_TIME',
|
||||||
|
OFFLINE_MULTIPLE_TIME = 'OFFLINE_MULTIPLE_TIME',
|
||||||
|
}
|
||||||
@ -231,8 +231,6 @@ export class SceneService {
|
|||||||
|
|
||||||
const safeFetch = async (scene: any) => {
|
const safeFetch = async (scene: any) => {
|
||||||
try {
|
try {
|
||||||
console.log('scene', scene);
|
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||||
const { actions, ...sceneDetails } = await this.getScene(
|
const { actions, ...sceneDetails } = await this.getScene(
|
||||||
scene,
|
scene,
|
||||||
|
|||||||
@ -1,2 +1 @@
|
|||||||
export * from './visitor-password.controller';
|
export * from './visitor-password.controller';
|
||||||
export * from './project-visitor-password.controller';
|
|
||||||
@ -1,48 +0,0 @@
|
|||||||
import { VisitorPasswordService } from '../services/visitor-password.service';
|
|
||||||
import { Controller, UseGuards, Get, Param } from '@nestjs/common';
|
|
||||||
import { ApiTags, ApiBearerAuth, ApiOperation } from '@nestjs/swagger';
|
|
||||||
import { Permissions } from 'src/decorators/permissions.decorator';
|
|
||||||
|
|
||||||
import { EnableDisableStatusEnum } from '@app/common/constants/days.enum';
|
|
||||||
import { ControllerRoute } from '@app/common/constants/controller-route';
|
|
||||||
import { ProjectParam } from 'src/community/dtos';
|
|
||||||
import { PermissionsGuard } from 'src/guards/permissions.guard';
|
|
||||||
|
|
||||||
@ApiTags('Visitor Password Module')
|
|
||||||
@Controller({
|
|
||||||
version: EnableDisableStatusEnum.ENABLED,
|
|
||||||
path: ControllerRoute.VISITOR_PASSWORD.PROJECT_ROUTE,
|
|
||||||
})
|
|
||||||
export class VisitorPasswordProjectController {
|
|
||||||
constructor(
|
|
||||||
private readonly visitorPasswordService: VisitorPasswordService,
|
|
||||||
) {}
|
|
||||||
|
|
||||||
@ApiBearerAuth()
|
|
||||||
@UseGuards(PermissionsGuard)
|
|
||||||
@Permissions('VISITOR_PASSWORD_ADD')
|
|
||||||
@Get()
|
|
||||||
@ApiOperation({
|
|
||||||
summary:
|
|
||||||
ControllerRoute.VISITOR_PASSWORD.ACTIONS.GET_VISITOR_PASSWORD_SUMMARY,
|
|
||||||
description:
|
|
||||||
ControllerRoute.VISITOR_PASSWORD.ACTIONS.GET_VISITOR_PASSWORD_DESCRIPTION,
|
|
||||||
})
|
|
||||||
async GetVisitorPassword(@Param() param: ProjectParam) {
|
|
||||||
return await this.visitorPasswordService.getPasswords(param);
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiBearerAuth()
|
|
||||||
@UseGuards(PermissionsGuard)
|
|
||||||
@Permissions('VISITOR_PASSWORD_VIEW')
|
|
||||||
@Get('/devices')
|
|
||||||
@ApiOperation({
|
|
||||||
summary:
|
|
||||||
ControllerRoute.VISITOR_PASSWORD.ACTIONS.GET_VISITOR_DEVICES_SUMMARY,
|
|
||||||
description:
|
|
||||||
ControllerRoute.VISITOR_PASSWORD.ACTIONS.GET_VISITOR_DEVICES_DESCRIPTION,
|
|
||||||
})
|
|
||||||
async GetVisitorDevices(@Param() param: ProjectParam) {
|
|
||||||
return await this.visitorPasswordService.getAllPassDevices(param);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -6,14 +6,10 @@ import {
|
|||||||
HttpStatus,
|
HttpStatus,
|
||||||
UseGuards,
|
UseGuards,
|
||||||
Req,
|
Req,
|
||||||
|
Get,
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import { ApiTags, ApiBearerAuth, ApiOperation } from '@nestjs/swagger';
|
import { ApiTags, ApiBearerAuth, ApiOperation } from '@nestjs/swagger';
|
||||||
import {
|
import { AddDoorLockTemporaryPasswordDto } from '../dtos/temp-pass.dto';
|
||||||
AddDoorLockOfflineMultipleDto,
|
|
||||||
AddDoorLockOfflineOneTimeDto,
|
|
||||||
AddDoorLockOnlineMultipleDto,
|
|
||||||
AddDoorLockOnlineOneTimeDto,
|
|
||||||
} from '../dtos/temp-pass.dto';
|
|
||||||
import { EnableDisableStatusEnum } from '@app/common/constants/days.enum';
|
import { EnableDisableStatusEnum } from '@app/common/constants/days.enum';
|
||||||
import { ControllerRoute } from '@app/common/constants/controller-route';
|
import { ControllerRoute } from '@app/common/constants/controller-route';
|
||||||
import { PermissionsGuard } from 'src/guards/permissions.guard';
|
import { PermissionsGuard } from 'src/guards/permissions.guard';
|
||||||
@ -32,23 +28,21 @@ export class VisitorPasswordController {
|
|||||||
@ApiBearerAuth()
|
@ApiBearerAuth()
|
||||||
@UseGuards(PermissionsGuard)
|
@UseGuards(PermissionsGuard)
|
||||||
@Permissions('VISITOR_PASSWORD_ADD')
|
@Permissions('VISITOR_PASSWORD_ADD')
|
||||||
@Post('temporary-password/online/multiple-time')
|
@Post()
|
||||||
@ApiOperation({
|
@ApiOperation({
|
||||||
summary:
|
summary:
|
||||||
ControllerRoute.VISITOR_PASSWORD.ACTIONS
|
ControllerRoute.VISITOR_PASSWORD.ACTIONS.ADD_VISITOR_PASSWORD_SUMMARY,
|
||||||
.ADD_ONLINE_TEMP_PASSWORD_MULTIPLE_TIME_SUMMARY,
|
|
||||||
description:
|
description:
|
||||||
ControllerRoute.VISITOR_PASSWORD.ACTIONS
|
ControllerRoute.VISITOR_PASSWORD.ACTIONS.ADD_VISITOR_PASSWORD_DESCRIPTION,
|
||||||
.ADD_ONLINE_TEMP_PASSWORD_MULTIPLE_TIME_DESCRIPTION,
|
|
||||||
})
|
})
|
||||||
async addOnlineTemporaryPasswordMultipleTime(
|
async addTemporaryPassword(
|
||||||
@Body() addDoorLockOnlineMultipleDto: AddDoorLockOnlineMultipleDto,
|
@Body() addDoorLockTemporaryPasswordDto: AddDoorLockTemporaryPasswordDto,
|
||||||
@Req() req: any,
|
@Req() req: any,
|
||||||
) {
|
) {
|
||||||
const userUuid = req.user.uuid;
|
const userUuid = req.user.uuid;
|
||||||
const temporaryPasswords =
|
const temporaryPasswords =
|
||||||
await this.visitorPasswordService.addOnlineTemporaryPasswordMultipleTime(
|
await this.visitorPasswordService.handleTemporaryPassword(
|
||||||
addDoorLockOnlineMultipleDto,
|
addDoorLockTemporaryPasswordDto,
|
||||||
userUuid,
|
userUuid,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -57,92 +51,33 @@ export class VisitorPasswordController {
|
|||||||
data: temporaryPasswords,
|
data: temporaryPasswords,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiBearerAuth()
|
@ApiBearerAuth()
|
||||||
@UseGuards(PermissionsGuard)
|
@UseGuards(PermissionsGuard)
|
||||||
@Permissions('VISITOR_PASSWORD_ADD')
|
@Permissions('VISITOR_PASSWORD_ADD')
|
||||||
@Post('temporary-password/online/one-time')
|
@Get()
|
||||||
@ApiOperation({
|
@ApiOperation({
|
||||||
summary:
|
summary:
|
||||||
ControllerRoute.VISITOR_PASSWORD.ACTIONS
|
ControllerRoute.VISITOR_PASSWORD.ACTIONS.GET_VISITOR_PASSWORD_SUMMARY,
|
||||||
.ADD_ONLINE_TEMP_PASSWORD_ONE_TIME_SUMMARY,
|
|
||||||
description:
|
description:
|
||||||
ControllerRoute.VISITOR_PASSWORD.ACTIONS
|
ControllerRoute.VISITOR_PASSWORD.ACTIONS.GET_VISITOR_PASSWORD_DESCRIPTION,
|
||||||
.ADD_ONLINE_TEMP_PASSWORD_ONE_TIME_DESCRIPTION,
|
|
||||||
})
|
})
|
||||||
async addOnlineTemporaryPassword(
|
async GetVisitorPassword(@Req() req: any) {
|
||||||
@Body() addDoorLockOnlineOneTimeDto: AddDoorLockOnlineOneTimeDto,
|
const projectUuid = req.user.project.uuid;
|
||||||
@Req() req: any,
|
return await this.visitorPasswordService.getPasswords(projectUuid);
|
||||||
) {
|
|
||||||
const userUuid = req.user.uuid;
|
|
||||||
const temporaryPasswords =
|
|
||||||
await this.visitorPasswordService.addOnlineTemporaryPasswordOneTime(
|
|
||||||
addDoorLockOnlineOneTimeDto,
|
|
||||||
userUuid,
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
|
||||||
statusCode: HttpStatus.CREATED,
|
|
||||||
data: temporaryPasswords,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiBearerAuth()
|
@ApiBearerAuth()
|
||||||
@UseGuards(PermissionsGuard)
|
@UseGuards(PermissionsGuard)
|
||||||
@Permissions('VISITOR_PASSWORD_ADD')
|
@Permissions('VISITOR_PASSWORD_VIEW')
|
||||||
@Post('temporary-password/offline/one-time')
|
@Get('/devices')
|
||||||
@ApiOperation({
|
@ApiOperation({
|
||||||
summary:
|
summary:
|
||||||
ControllerRoute.VISITOR_PASSWORD.ACTIONS
|
ControllerRoute.VISITOR_PASSWORD.ACTIONS.GET_VISITOR_DEVICES_SUMMARY,
|
||||||
.ADD_OFFLINE_TEMP_PASSWORD_ONE_TIME_SUMMARY,
|
|
||||||
description:
|
description:
|
||||||
ControllerRoute.VISITOR_PASSWORD.ACTIONS
|
ControllerRoute.VISITOR_PASSWORD.ACTIONS.GET_VISITOR_DEVICES_DESCRIPTION,
|
||||||
.ADD_OFFLINE_TEMP_PASSWORD_ONE_TIME_DESCRIPTION,
|
|
||||||
})
|
})
|
||||||
async addOfflineOneTimeTemporaryPassword(
|
async GetVisitorDevices(@Req() req: any) {
|
||||||
@Body() addDoorLockOfflineOneTimeDto: AddDoorLockOfflineOneTimeDto,
|
const projectUuid = req.user.project.uuid;
|
||||||
@Req() req: any,
|
return await this.visitorPasswordService.getAllPassDevices(projectUuid);
|
||||||
) {
|
|
||||||
const userUuid = req.user.uuid;
|
|
||||||
const temporaryPassword =
|
|
||||||
await this.visitorPasswordService.addOfflineOneTimeTemporaryPassword(
|
|
||||||
addDoorLockOfflineOneTimeDto,
|
|
||||||
userUuid,
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
|
||||||
statusCode: HttpStatus.CREATED,
|
|
||||||
data: temporaryPassword,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
@ApiBearerAuth()
|
|
||||||
@UseGuards(PermissionsGuard)
|
|
||||||
@Permissions('VISITOR_PASSWORD_ADD')
|
|
||||||
@Post('temporary-password/offline/multiple-time')
|
|
||||||
@ApiOperation({
|
|
||||||
summary:
|
|
||||||
ControllerRoute.VISITOR_PASSWORD.ACTIONS
|
|
||||||
.ADD_OFFLINE_TEMP_PASSWORD_MULTIPLE_TIME_SUMMARY,
|
|
||||||
description:
|
|
||||||
ControllerRoute.VISITOR_PASSWORD.ACTIONS
|
|
||||||
.ADD_OFFLINE_TEMP_PASSWORD_MULTIPLE_TIME_DESCRIPTION,
|
|
||||||
})
|
|
||||||
async addOfflineMultipleTimeTemporaryPassword(
|
|
||||||
@Body()
|
|
||||||
addDoorLockOfflineMultipleDto: AddDoorLockOfflineMultipleDto,
|
|
||||||
@Req() req: any,
|
|
||||||
) {
|
|
||||||
const userUuid = req.user.uuid;
|
|
||||||
const temporaryPassword =
|
|
||||||
await this.visitorPasswordService.addOfflineMultipleTimeTemporaryPassword(
|
|
||||||
addDoorLockOfflineMultipleDto,
|
|
||||||
userUuid,
|
|
||||||
);
|
|
||||||
|
|
||||||
return {
|
|
||||||
statusCode: HttpStatus.CREATED,
|
|
||||||
data: temporaryPassword,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import {
|
|||||||
} from 'class-validator';
|
} from 'class-validator';
|
||||||
import { Type } from 'class-transformer';
|
import { Type } from 'class-transformer';
|
||||||
import { WorkingDays } from '@app/common/constants/working-days';
|
import { WorkingDays } from '@app/common/constants/working-days';
|
||||||
|
import { VisitorPasswordEnum } from '@app/common/constants/visitor-password.enum';
|
||||||
|
|
||||||
class ScheduleDto {
|
class ScheduleDto {
|
||||||
@ApiProperty({
|
@ApiProperty({
|
||||||
@ -211,3 +212,73 @@ export class AddDoorLockOfflineMultipleDto {
|
|||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
public invalidTime: string;
|
public invalidTime: string;
|
||||||
}
|
}
|
||||||
|
export class AddDoorLockTemporaryPasswordDto {
|
||||||
|
@ApiProperty({
|
||||||
|
description: 'Operation type',
|
||||||
|
enum: VisitorPasswordEnum,
|
||||||
|
required: true,
|
||||||
|
})
|
||||||
|
@IsEnum(VisitorPasswordEnum)
|
||||||
|
@IsNotEmpty()
|
||||||
|
public operationType: VisitorPasswordEnum;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
description: 'email',
|
||||||
|
required: true,
|
||||||
|
})
|
||||||
|
@IsEmail()
|
||||||
|
@IsNotEmpty()
|
||||||
|
public email: string;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
description: 'devicesUuid',
|
||||||
|
required: true,
|
||||||
|
})
|
||||||
|
@IsArray()
|
||||||
|
@IsNotEmpty()
|
||||||
|
public devicesUuid: string[];
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
description: 'password name',
|
||||||
|
required: true,
|
||||||
|
})
|
||||||
|
@IsString()
|
||||||
|
@IsNotEmpty()
|
||||||
|
public passwordName: string;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
description: 'password',
|
||||||
|
required: true,
|
||||||
|
})
|
||||||
|
@IsString()
|
||||||
|
@IsNotEmpty()
|
||||||
|
@Length(7, 7)
|
||||||
|
public password: string;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
description: 'effectiveTime',
|
||||||
|
required: false,
|
||||||
|
})
|
||||||
|
@IsString()
|
||||||
|
@IsOptional()
|
||||||
|
public effectiveTime: string;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
description: 'invalidTime',
|
||||||
|
required: false,
|
||||||
|
})
|
||||||
|
@IsString()
|
||||||
|
@IsOptional()
|
||||||
|
public invalidTime: string;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
description: 'scheduleList',
|
||||||
|
type: [ScheduleDto],
|
||||||
|
required: false,
|
||||||
|
})
|
||||||
|
@IsArray()
|
||||||
|
@ValidateNested({ each: true })
|
||||||
|
@IsOptional()
|
||||||
|
@Type(() => ScheduleDto)
|
||||||
|
public scheduleList: ScheduleDto[];
|
||||||
|
}
|
||||||
|
|||||||
@ -1,5 +1,10 @@
|
|||||||
import { VisitorPasswordRepository } from './../../../libs/common/src/modules/visitor-password/repositories/visitor-password.repository';
|
import { VisitorPasswordRepository } from './../../../libs/common/src/modules/visitor-password/repositories/visitor-password.repository';
|
||||||
import { Injectable, HttpException, HttpStatus } from '@nestjs/common';
|
import {
|
||||||
|
Injectable,
|
||||||
|
HttpException,
|
||||||
|
HttpStatus,
|
||||||
|
BadRequestException,
|
||||||
|
} 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';
|
||||||
import {
|
import {
|
||||||
@ -9,13 +14,7 @@ import {
|
|||||||
import { DeviceRepository } from '@app/common/modules/device/repositories';
|
import { DeviceRepository } from '@app/common/modules/device/repositories';
|
||||||
import { ProductType } from '@app/common/constants/product-type.enum';
|
import { ProductType } from '@app/common/constants/product-type.enum';
|
||||||
|
|
||||||
import {
|
import { AddDoorLockTemporaryPasswordDto } from '../dtos';
|
||||||
AddDoorLockOfflineMultipleDto,
|
|
||||||
AddDoorLockOfflineOneTimeDto,
|
|
||||||
AddDoorLockOnlineMultipleDto,
|
|
||||||
AddDoorLockOnlineOneTimeDto,
|
|
||||||
ProjectParam,
|
|
||||||
} from '../dtos';
|
|
||||||
import { EmailService } from '@app/common/util/email.service';
|
import { EmailService } from '@app/common/util/email.service';
|
||||||
import { PasswordEncryptionService } from 'src/door-lock/services/encryption.services';
|
import { PasswordEncryptionService } from 'src/door-lock/services/encryption.services';
|
||||||
import { DoorLockService } from 'src/door-lock/services';
|
import { DoorLockService } from 'src/door-lock/services';
|
||||||
@ -32,6 +31,7 @@ import {
|
|||||||
CommonHours,
|
CommonHours,
|
||||||
} from '@app/common/constants/hours-minutes.enum';
|
} from '@app/common/constants/hours-minutes.enum';
|
||||||
import { ProjectRepository } from '@app/common/modules/project/repositiories';
|
import { ProjectRepository } from '@app/common/modules/project/repositiories';
|
||||||
|
import { VisitorPasswordEnum } from '@app/common/constants/visitor-password.enum';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class VisitorPasswordService {
|
export class VisitorPasswordService {
|
||||||
@ -55,9 +55,39 @@ export class VisitorPasswordService {
|
|||||||
secretKey,
|
secretKey,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
async handleTemporaryPassword(
|
||||||
|
addDoorLockTemporaryPasswordDto: AddDoorLockTemporaryPasswordDto,
|
||||||
|
userUuid: string,
|
||||||
|
) {
|
||||||
|
const { operationType } = addDoorLockTemporaryPasswordDto;
|
||||||
|
|
||||||
|
switch (operationType) {
|
||||||
|
case VisitorPasswordEnum.ONLINE_ONE_TIME:
|
||||||
|
return this.addOnlineTemporaryPasswordOneTime(
|
||||||
|
addDoorLockTemporaryPasswordDto,
|
||||||
|
userUuid,
|
||||||
|
);
|
||||||
|
case VisitorPasswordEnum.ONLINE_MULTIPLE_TIME:
|
||||||
|
return this.addOnlineTemporaryPasswordMultipleTime(
|
||||||
|
addDoorLockTemporaryPasswordDto,
|
||||||
|
userUuid,
|
||||||
|
);
|
||||||
|
case VisitorPasswordEnum.OFFLINE_ONE_TIME:
|
||||||
|
return this.addOfflineOneTimeTemporaryPassword(
|
||||||
|
addDoorLockTemporaryPasswordDto,
|
||||||
|
userUuid,
|
||||||
|
);
|
||||||
|
case VisitorPasswordEnum.OFFLINE_MULTIPLE_TIME:
|
||||||
|
return this.addOfflineMultipleTimeTemporaryPassword(
|
||||||
|
addDoorLockTemporaryPasswordDto,
|
||||||
|
userUuid,
|
||||||
|
);
|
||||||
|
default:
|
||||||
|
throw new BadRequestException('Invalid operation type');
|
||||||
|
}
|
||||||
|
}
|
||||||
async addOfflineMultipleTimeTemporaryPassword(
|
async addOfflineMultipleTimeTemporaryPassword(
|
||||||
addDoorLockOfflineMultipleDto: AddDoorLockOfflineMultipleDto,
|
addDoorLockOfflineMultipleDto: AddDoorLockTemporaryPasswordDto,
|
||||||
userUuid: string,
|
userUuid: string,
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
@ -178,7 +208,7 @@ export class VisitorPasswordService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async addOfflineOneTimeTemporaryPassword(
|
async addOfflineOneTimeTemporaryPassword(
|
||||||
addDoorLockOfflineOneTimeDto: AddDoorLockOfflineOneTimeDto,
|
addDoorLockOfflineOneTimeDto: AddDoorLockTemporaryPasswordDto,
|
||||||
userUuid: string,
|
userUuid: string,
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
@ -301,7 +331,7 @@ export class VisitorPasswordService {
|
|||||||
async addOfflineTemporaryPasswordTuya(
|
async addOfflineTemporaryPasswordTuya(
|
||||||
doorLockUuid: string,
|
doorLockUuid: string,
|
||||||
type: string,
|
type: string,
|
||||||
addDoorLockOfflineMultipleDto: AddDoorLockOfflineMultipleDto,
|
addDoorLockOfflineMultipleDto: AddDoorLockTemporaryPasswordDto,
|
||||||
passwordName: string,
|
passwordName: string,
|
||||||
): Promise<createTickInterface> {
|
): Promise<createTickInterface> {
|
||||||
try {
|
try {
|
||||||
@ -329,7 +359,7 @@ export class VisitorPasswordService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
async addOnlineTemporaryPasswordMultipleTime(
|
async addOnlineTemporaryPasswordMultipleTime(
|
||||||
addDoorLockOnlineMultipleDto: AddDoorLockOnlineMultipleDto,
|
addDoorLockOnlineMultipleDto: AddDoorLockTemporaryPasswordDto,
|
||||||
userUuid: string,
|
userUuid: string,
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
@ -447,8 +477,8 @@ export class VisitorPasswordService {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
async getPasswords(param: ProjectParam) {
|
async getPasswords(projectUuid: string) {
|
||||||
await this.validateProject(param.projectUuid);
|
await this.validateProject(projectUuid);
|
||||||
|
|
||||||
const deviceIds = await this.deviceRepository.find({
|
const deviceIds = await this.deviceRepository.find({
|
||||||
where: {
|
where: {
|
||||||
@ -458,7 +488,7 @@ export class VisitorPasswordService {
|
|||||||
spaceDevice: {
|
spaceDevice: {
|
||||||
community: {
|
community: {
|
||||||
project: {
|
project: {
|
||||||
uuid: param.projectUuid,
|
uuid: projectUuid,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -499,8 +529,8 @@ export class VisitorPasswordService {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async getAllPassDevices(param: ProjectParam) {
|
async getAllPassDevices(projectUuid: string) {
|
||||||
await this.validateProject(param.projectUuid);
|
await this.validateProject(projectUuid);
|
||||||
|
|
||||||
const devices = await this.deviceRepository.find({
|
const devices = await this.deviceRepository.find({
|
||||||
where: {
|
where: {
|
||||||
@ -510,7 +540,7 @@ export class VisitorPasswordService {
|
|||||||
spaceDevice: {
|
spaceDevice: {
|
||||||
community: {
|
community: {
|
||||||
project: {
|
project: {
|
||||||
uuid: param.projectUuid,
|
uuid: projectUuid,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -548,7 +578,7 @@ export class VisitorPasswordService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async addOnlineTemporaryPasswordOneTime(
|
async addOnlineTemporaryPasswordOneTime(
|
||||||
addDoorLockOnlineOneTimeDto: AddDoorLockOnlineOneTimeDto,
|
addDoorLockOnlineOneTimeDto: AddDoorLockTemporaryPasswordDto,
|
||||||
userUuid: string,
|
userUuid: string,
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@ -22,10 +22,9 @@ import {
|
|||||||
import { SceneDeviceRepository } from '@app/common/modules/scene-device/repositories';
|
import { SceneDeviceRepository } from '@app/common/modules/scene-device/repositories';
|
||||||
import { AutomationRepository } from '@app/common/modules/automation/repositories';
|
import { AutomationRepository } from '@app/common/modules/automation/repositories';
|
||||||
import { ProjectRepository } from '@app/common/modules/project/repositiories';
|
import { ProjectRepository } from '@app/common/modules/project/repositiories';
|
||||||
import { VisitorPasswordProjectController } from './controllers';
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [ConfigModule, DeviceRepositoryModule, DoorLockModule],
|
imports: [ConfigModule, DeviceRepositoryModule, DoorLockModule],
|
||||||
controllers: [VisitorPasswordController, VisitorPasswordProjectController],
|
controllers: [VisitorPasswordController],
|
||||||
providers: [
|
providers: [
|
||||||
VisitorPasswordService,
|
VisitorPasswordService,
|
||||||
EmailService,
|
EmailService,
|
||||||
|
|||||||
Reference in New Issue
Block a user