import { Body, Controller, Delete, Get, HttpStatus, Param, Post, Put, UseGuards, } from '@nestjs/common'; import { ApiBearerAuth, ApiTags } from '@nestjs/swagger'; import { UserDevicePermissionService } from '../services/user-device-permission.service'; import { UserDevicePermissionAddDto } from '../dtos/user-device-permission.add.dto'; import { UserDevicePermissionEditDto } from '../dtos/user-device-permission.edit.dto'; import { AdminRoleGuard } from 'src/guards/admin.role.guard'; import { EnableDisableStatusEnum } from '@app/common/constants/days.enum'; @ApiTags('Device Permission Module') @Controller({ version: EnableDisableStatusEnum.ENABLED, path: 'device-permission', }) export class UserDevicePermissionController { constructor( private readonly userDevicePermissionService: UserDevicePermissionService, ) {} @ApiBearerAuth() @UseGuards(AdminRoleGuard) @Post() async addDevicePermission( @Body() userDevicePermissionDto: UserDevicePermissionAddDto, ) { const addDetails = await this.userDevicePermissionService.addUserPermission( userDevicePermissionDto, ); return { statusCode: HttpStatus.CREATED, message: 'User Permission for Devices Added Successfully', data: addDetails, }; } @ApiBearerAuth() @UseGuards(AdminRoleGuard) @Put(':devicePermissionUuid') async editDevicePermission( @Param('devicePermissionUuid') devicePermissionUuid: string, @Body() userDevicePermissionEditDto: UserDevicePermissionEditDto, ) { await this.userDevicePermissionService.editUserPermission( devicePermissionUuid, userDevicePermissionEditDto, ); return { statusCode: HttpStatus.OK, message: 'User Permission for Devices Updated Successfully', }; } @ApiBearerAuth() @UseGuards(AdminRoleGuard) @Get(':deviceUuid') async fetchDevicePermission(@Param('deviceUuid') deviceUuid: string) { const deviceDetails = await this.userDevicePermissionService.fetchUserPermission(deviceUuid); return { statusCode: HttpStatus.OK, message: 'Device Details fetched Successfully', data: deviceDetails, }; } @ApiBearerAuth() @UseGuards(AdminRoleGuard) @Delete(':devicePermissionUuid') async deleteDevicePermission( @Param('devicePermissionUuid') devicePermissionUuid: string, ) { await this.userDevicePermissionService.deleteDevicePermission( devicePermissionUuid, ); return { statusCode: HttpStatus.OK, message: 'User Permission for Devices Deleted Successfully', }; } }