import { ControllerRoute } from '@app/common/constants/controller-route'; import { Body, Controller, Delete, Get, Param, Post, Put, Query, UseGuards, } from '@nestjs/common'; import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'; import { SpaceModelService } from '../services'; import { CreateSpaceModelDto, SpaceModelParam, UpdateSpaceModelDto, } from '../dtos'; import { ProjectParam } from 'src/community/dtos'; import { BaseResponseDto } from '@app/common/dto/base.response.dto'; import { PermissionsGuard } from 'src/guards/permissions.guard'; import { Permissions } from 'src/decorators/permissions.decorator'; import { PaginationRequestGetListDto } from '@app/common/dto/pagination.request.dto'; @ApiTags('Space Model Module') @Controller({ version: '1', path: ControllerRoute.SPACE_MODEL.ROUTE, }) export class SpaceModelController { constructor(private readonly spaceModelService: SpaceModelService) {} @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('SPACE_MODEL_ADD') @ApiOperation({ summary: ControllerRoute.SPACE_MODEL.ACTIONS.CREATE_SPACE_MODEL_SUMMARY, description: ControllerRoute.SPACE_MODEL.ACTIONS.CREATE_SPACE_MODEL_DESCRIPTION, }) @Post() async createSpaceModel( @Body() createSpaceModelDto: CreateSpaceModelDto, @Param() projectParam: ProjectParam, ): Promise { return await this.spaceModelService.createSpaceModel( createSpaceModelDto, projectParam, ); } @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('SPACE_MODEL_VIEW') @ApiOperation({ summary: ControllerRoute.SPACE_MODEL.ACTIONS.LIST_SPACE_MODEL_SUMMARY, description: ControllerRoute.SPACE_MODEL.ACTIONS.LIST_SPACE_MODEL_DESCRIPTION, }) @Get() async listSpaceModel( @Param() projectParam: ProjectParam, @Query() query: PaginationRequestGetListDto, ): Promise { return await this.spaceModelService.list(projectParam, query); } @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('SPACE_MODEL_VIEW') @ApiOperation({ summary: ControllerRoute.SPACE_MODEL.ACTIONS.LIST_SPACE_MODEL_SUMMARY, description: ControllerRoute.SPACE_MODEL.ACTIONS.LIST_SPACE_MODEL_DESCRIPTION, }) @Get(':spaceModelUuid') async get(@Param() param: SpaceModelParam): Promise { return await this.spaceModelService.findOne(param); } @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('SPACE_MODEL_UPDATE') @ApiOperation({ summary: ControllerRoute.SPACE_MODEL.ACTIONS.UPDATE_SPACE_MODEL_SUMMARY, description: ControllerRoute.SPACE_MODEL.ACTIONS.UPDATE_SPACE_MODEL_DESCRIPTION, }) @Put(':spaceModelUuid') async update( @Body() dto: UpdateSpaceModelDto, @Param() param: SpaceModelParam, ): Promise { return await this.spaceModelService.update(dto, param); } @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('SPACE_MODEL_DELETE') @ApiOperation({ summary: ControllerRoute.SPACE_MODEL.ACTIONS.DELETE_SPACE_MODEL_SUMMARY, description: ControllerRoute.SPACE_MODEL.ACTIONS.DELETE_SPACE_MODEL_DESCRIPTION, }) @Delete(':spaceModelUuid') async delete(@Param() param: SpaceModelParam): Promise { return await this.spaceModelService.deleteSpaceModel(param); } }