import { VisitorPasswordService } from '../services/visitor-password.service'; import { Body, Controller, Post, HttpException, HttpStatus, UseGuards, Get, Req, } from '@nestjs/common'; import { ApiTags, ApiBearerAuth } from '@nestjs/swagger'; import { AddDoorLockOfflineMultipleDto, AddDoorLockOfflineOneTimeDto, AddDoorLockOnlineMultipleDto, AddDoorLockOnlineOneTimeDto, } from '../dtos/temp-pass.dto'; import { JwtAuthGuard } from '@app/common/guards/jwt.auth.guard'; @ApiTags('Visitor Password Module') @Controller({ version: '1', path: 'visitor-password', }) export class VisitorPasswordController { constructor( private readonly visitorPasswordService: VisitorPasswordService, ) {} @ApiBearerAuth() @UseGuards(JwtAuthGuard) @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 { statusCode: HttpStatus.CREATED, data: temporaryPasswords, }; } catch (error) { throw new HttpException( error.message || 'Internal server error', error.status || HttpStatus.INTERNAL_SERVER_ERROR, ); } } @ApiBearerAuth() @UseGuards(JwtAuthGuard) @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 { statusCode: HttpStatus.CREATED, data: temporaryPasswords, }; } catch (error) { throw new HttpException( error.message || 'Internal server error', error.status || HttpStatus.INTERNAL_SERVER_ERROR, ); } } @ApiBearerAuth() @UseGuards(JwtAuthGuard) @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 { statusCode: HttpStatus.CREATED, data: temporaryPassword, }; } catch (error) { throw new HttpException( error.message || 'Internal server error', error.status || HttpStatus.INTERNAL_SERVER_ERROR, ); } } @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Post('temporary-password/offline/multiple-time') async addOfflineMultipleTimeTemporaryPassword( @Body() addDoorLockOfflineMultipleDto: AddDoorLockOfflineMultipleDto, @Req() req: any, ) { try { const userUuid = req.user.uuid; const temporaryPassword = await this.visitorPasswordService.addOfflineMultipleTimeTemporaryPassword( addDoorLockOfflineMultipleDto, userUuid, ); return { statusCode: HttpStatus.CREATED, data: temporaryPassword, }; } catch (error) { throw new HttpException( error.message || 'Internal server error', error.status || HttpStatus.INTERNAL_SERVER_ERROR, ); } } @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Get() async GetVisitorPassword() { try { return await this.visitorPasswordService.getPasswords(); } catch (error) { throw new HttpException( error.message || 'Internal server error', error.status || HttpStatus.INTERNAL_SERVER_ERROR, ); } } @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Get('/devices') async GetVisitorDevices() { try { return await this.visitorPasswordService.getAllPassDevices(); } catch (error) { throw new HttpException( error.message || 'Internal server error', error.status || HttpStatus.INTERNAL_SERVER_ERROR, ); } } }