import { VisitorPasswordService } from '../services/visitor-password.service'; import { Body, Controller, Post, HttpStatus, UseGuards, Req, } from '@nestjs/common'; import { ApiTags, ApiBearerAuth, ApiOperation } from '@nestjs/swagger'; import { AddDoorLockOfflineMultipleDto, AddDoorLockOfflineOneTimeDto, AddDoorLockOnlineMultipleDto, AddDoorLockOnlineOneTimeDto, } from '../dtos/temp-pass.dto'; import { EnableDisableStatusEnum } from '@app/common/constants/days.enum'; import { ControllerRoute } from '@app/common/constants/controller-route'; import { PermissionsGuard } from 'src/guards/permissions.guard'; import { Permissions } from 'src/decorators/permissions.decorator'; @ApiTags('Visitor Password Module') @Controller({ version: EnableDisableStatusEnum.ENABLED, path: ControllerRoute.VISITOR_PASSWORD.ROUTE, }) export class VisitorPasswordController { constructor( private readonly visitorPasswordService: VisitorPasswordService, ) {} @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('VISITOR_PASSWORD_ADD') @Post('temporary-password/online/multiple-time') @ApiOperation({ summary: ControllerRoute.VISITOR_PASSWORD.ACTIONS .ADD_ONLINE_TEMP_PASSWORD_MULTIPLE_TIME_SUMMARY, description: ControllerRoute.VISITOR_PASSWORD.ACTIONS .ADD_ONLINE_TEMP_PASSWORD_MULTIPLE_TIME_DESCRIPTION, }) async addOnlineTemporaryPasswordMultipleTime( @Body() addDoorLockOnlineMultipleDto: AddDoorLockOnlineMultipleDto, @Req() req: any, ) { const userUuid = req.user.uuid; const temporaryPasswords = await this.visitorPasswordService.addOnlineTemporaryPasswordMultipleTime( addDoorLockOnlineMultipleDto, userUuid, ); return { statusCode: HttpStatus.CREATED, data: temporaryPasswords, }; } @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('VISITOR_PASSWORD_ADD') @Post('temporary-password/online/one-time') @ApiOperation({ summary: ControllerRoute.VISITOR_PASSWORD.ACTIONS .ADD_ONLINE_TEMP_PASSWORD_ONE_TIME_SUMMARY, description: ControllerRoute.VISITOR_PASSWORD.ACTIONS .ADD_ONLINE_TEMP_PASSWORD_ONE_TIME_DESCRIPTION, }) async addOnlineTemporaryPassword( @Body() addDoorLockOnlineOneTimeDto: AddDoorLockOnlineOneTimeDto, @Req() req: any, ) { const userUuid = req.user.uuid; const temporaryPasswords = await this.visitorPasswordService.addOnlineTemporaryPasswordOneTime( addDoorLockOnlineOneTimeDto, userUuid, ); return { statusCode: HttpStatus.CREATED, data: temporaryPasswords, }; } @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('VISITOR_PASSWORD_ADD') @Post('temporary-password/offline/one-time') @ApiOperation({ summary: ControllerRoute.VISITOR_PASSWORD.ACTIONS .ADD_OFFLINE_TEMP_PASSWORD_ONE_TIME_SUMMARY, description: ControllerRoute.VISITOR_PASSWORD.ACTIONS .ADD_OFFLINE_TEMP_PASSWORD_ONE_TIME_DESCRIPTION, }) async addOfflineOneTimeTemporaryPassword( @Body() addDoorLockOfflineOneTimeDto: AddDoorLockOfflineOneTimeDto, @Req() req: any, ) { 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, }; } }