import { ControllerRoute } from '@app/common/constants/controller-route'; import { Body, Controller, Delete, Get, Param, Post, Put, Query, UseGuards, } from '@nestjs/common'; import { SubSpaceService } from '../../services'; import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'; import { AddSubspaceDto, GetSpaceParam, GetSubSpaceParam } from '../../dtos'; import { BaseResponseDto } from '@app/common/dto/base.response.dto'; import { PaginationRequestGetListDto } from '@app/common/dto/pagination.request.dto'; import { PermissionsGuard } from 'src/guards/permissions.guard'; import { Permissions } from 'src/decorators/permissions.decorator'; @ApiTags('Space Module') @Controller({ version: '1', path: ControllerRoute.SUBSPACE.ROUTE, }) export class SubSpaceController { constructor(private readonly subSpaceService: SubSpaceService) {} @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('SUBSPACE_ADD') @Post() @ApiOperation({ summary: ControllerRoute.SUBSPACE.ACTIONS.CREATE_SUBSPACE_SUMMARY, description: ControllerRoute.SUBSPACE.ACTIONS.CREATE_SUBSPACE_DESCRIPTION, }) async createSubspace( @Param() params: GetSpaceParam, @Body() addSubspaceDto: AddSubspaceDto, ): Promise { return this.subSpaceService.createSubspace(addSubspaceDto, params); } @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('SUBSPACE_VIEW') @ApiOperation({ summary: ControllerRoute.SUBSPACE.ACTIONS.LIST_SUBSPACES_SUMMARY, description: ControllerRoute.SUBSPACE.ACTIONS.LIST_SUBSPACES_DESCRIPTION, }) @Get() async list( @Param() params: GetSpaceParam, @Query() query: PaginationRequestGetListDto, ): Promise { return this.subSpaceService.list(params, query); } @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('SUBSPACE_VIEW') @ApiOperation({ summary: ControllerRoute.SUBSPACE.ACTIONS.GET_SUBSPACE_SUMMARY, description: ControllerRoute.SUBSPACE.ACTIONS.GET_SUBSPACE_DESCRIPTION, }) @Get(':subSpaceUuid') async findOne(@Param() params: GetSubSpaceParam): Promise { return this.subSpaceService.getOne(params); } @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('SUBSPACE_UPDATE') @ApiOperation({ summary: ControllerRoute.SUBSPACE.ACTIONS.UPDATE_SUBSPACE_SUMMARY, description: ControllerRoute.SUBSPACE.ACTIONS.UPDATE_SUBSPACE_DESCRIPTION, }) @Put(':subSpaceUuid') async updateSubspace( @Param() params: GetSubSpaceParam, @Body() updateSubSpaceDto: AddSubspaceDto, ): Promise { return this.subSpaceService.updateSubSpace(params, updateSubSpaceDto); } @ApiBearerAuth() @UseGuards(PermissionsGuard) @Permissions('SUBSPACE_DELETE') @ApiOperation({ summary: ControllerRoute.SUBSPACE.ACTIONS.DELETE_SUBSPACE_SUMMARY, description: ControllerRoute.SUBSPACE.ACTIONS.DELETE_SUBSPACE_DESCRIPTION, }) @Delete(':subSpaceUuid') async delete(@Param() params: GetSubSpaceParam): Promise { return this.subSpaceService.delete(params); } }