import { ControllerRoute } from '@app/common/constants/controller-route'; import { Controller, Delete, Param, Post, UseGuards } from '@nestjs/common'; import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger'; import { SpaceUserService } from '../services'; import { BaseResponseDto } from '@app/common/dto/base.response.dto'; import { UserSpaceParam } from '../dtos'; import { PermissionsGuard } from 'src/guards/permissions.guard'; import { Permissions } from 'src/decorators/permissions.decorator'; @ApiTags('Space Module') @Controller({ version: '1', path: ControllerRoute.SPACE_USER.ROUTE, }) export class SpaceUserController { constructor(private readonly spaceUserService: SpaceUserService) {} @ApiBearerAuth() @Post('/:userUuid') @UseGuards(PermissionsGuard) @Permissions('SPACE_ASSIGN_USER_TO_SPACE') @ApiOperation({ summary: ControllerRoute.SPACE_USER.ACTIONS.ASSOCIATE_SPACE_USER_DESCRIPTION, description: ControllerRoute.SPACE_USER.ACTIONS.ASSOCIATE_SPACE_USER_DESCRIPTION, }) async associateUserToSpace( @Param() params: UserSpaceParam, ): Promise { return this.spaceUserService.associateUserToSpace(params); } @ApiBearerAuth() @Delete('/:userUuid') @UseGuards(PermissionsGuard) @Permissions('SPACE_ASSIGN_USER_TO_SPACE') @ApiOperation({ summary: ControllerRoute.SPACE_USER.ACTIONS.DISSOCIATE_SPACE_USER_SUMMARY, description: ControllerRoute.SPACE_USER.ACTIONS.DISSOCIATE_SPACE_USER_DESCRIPTION, }) async disassociateUserFromSpace( @Param() params: UserSpaceParam, ): Promise { return this.spaceUserService.disassociateUserFromSpace(params); } }