import { SceneService } from '../services/scene.service'; import { Body, Controller, Delete, Get, HttpException, HttpStatus, Param, Post, Put, UseGuards, } from '@nestjs/common'; import { ApiTags, ApiBearerAuth } from '@nestjs/swagger'; import { AddSceneTapToRunDto, UpdateSceneTapToRunDto } from '../dtos/scene.dto'; import { JwtAuthGuard } from '@app/common/guards/jwt.auth.guard'; @ApiTags('Scene Module') @Controller({ version: '1', path: 'scene', }) export class SceneController { constructor(private readonly sceneService: SceneService) {} @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Post('tap-to-run') async addTapToRunScene(@Body() addSceneTapToRunDto: AddSceneTapToRunDto) { try { const tapToRunScene = await this.sceneService.addTapToRunScene(addSceneTapToRunDto); return { statusCode: HttpStatus.CREATED, success: true, message: 'Scene added successfully', data: tapToRunScene, }; } catch (error) { throw new HttpException( error.message || 'Internal server error', error.status || HttpStatus.INTERNAL_SERVER_ERROR, ); } } @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Get('tap-to-run/:unitUuid') async getTapToRunSceneByUnit(@Param('unitUuid') unitUuid: string) { try { const tapToRunScenes = await this.sceneService.getTapToRunSceneByUnit(unitUuid); return tapToRunScenes; } catch (error) { throw new HttpException( error.message || 'Internal server error', error.status || HttpStatus.INTERNAL_SERVER_ERROR, ); } } @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Delete('tap-to-run/:unitUuid/:sceneId') async deleteTapToRunScene( @Param('unitUuid') unitUuid: string, @Param('sceneId') sceneId: string, ) { try { await this.sceneService.deleteTapToRunScene(unitUuid, sceneId); return { statusCode: HttpStatus.OK, message: 'Scene Deleted Successfully', }; } catch (error) { throw new HttpException( error.message || 'Internal server error', error.status || HttpStatus.INTERNAL_SERVER_ERROR, ); } } @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Post('tap-to-run/trigger/:sceneId') async triggerTapToRunScene(@Param('sceneId') sceneId: string) { try { await this.sceneService.triggerTapToRunScene(sceneId); return { statusCode: HttpStatus.CREATED, success: true, message: 'Scene trigger successfully', }; } catch (error) { throw new HttpException( error.message || 'Internal server error', error.status || HttpStatus.INTERNAL_SERVER_ERROR, ); } } @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Get('tap-to-run/details/:sceneId') async getTapToRunSceneDetails(@Param('sceneId') sceneId: string) { try { const tapToRunScenes = await this.sceneService.getTapToRunSceneDetails(sceneId); return tapToRunScenes; } catch (error) { throw new HttpException( error.message || 'Internal server error', error.status || HttpStatus.INTERNAL_SERVER_ERROR, ); ``; } } @ApiBearerAuth() @UseGuards(JwtAuthGuard) @Put('tap-to-run/:sceneId') async updateTapToRunScene( @Body() updateSceneTapToRunDto: UpdateSceneTapToRunDto, @Param('sceneId') sceneId: string, ) { try { const tapToRunScene = await this.sceneService.updateTapToRunScene( updateSceneTapToRunDto, sceneId, ); return { statusCode: HttpStatus.CREATED, success: true, message: 'Scene updated successfully', data: tapToRunScene, }; } catch (error) { throw new HttpException( error.message || 'Internal server error', error.status || HttpStatus.INTERNAL_SERVER_ERROR, ); } } }