Spaces:
Sleeping
Sleeping
| import { | |
| Controller, | |
| Get, | |
| Patch, | |
| Delete, | |
| Param, | |
| Query, | |
| Body, | |
| UseGuards, | |
| HttpCode, | |
| HttpStatus, | |
| } from '@nestjs/common'; | |
| import { ApiTags, ApiBearerAuth } from '@nestjs/swagger'; | |
| import { MembersService } from './members.service'; | |
| import { JwtAuthGuard } from '../../common/guards/jwt-auth.guard'; | |
| import { CurrentUser } from '../../common/decorators/current-user.decorator'; | |
| import { UpdateRoleDto } from './dto/update-role.dto'; | |
| ('Members') | |
| (JwtAuthGuard) | |
| () | |
| ('spaces/:spaceId/members') | |
| export class MembersController { | |
| constructor(private readonly membersService: MembersService) {} | |
| /** | |
| * GET /spaces/:spaceId/members | |
| * Get all members in a space | |
| */ | |
| () | |
| (HttpStatus.OK) | |
| async getSpaceMembers(('spaceId') spaceId: string): Promise<any> { | |
| const members = await this.membersService.getSpaceMembers(spaceId); | |
| return { | |
| success: true, | |
| data: members, | |
| }; | |
| } | |
| /** | |
| * GET /spaces/:spaceId/members/search?q= | |
| * Search members in a space | |
| */ | |
| ('search') | |
| (HttpStatus.OK) | |
| async searchMembers( | |
| ('spaceId') spaceId: string, | |
| ('q') query: string, | |
| ): Promise<any> { | |
| const members = await this.membersService.searchMembers( | |
| spaceId, | |
| query || '', | |
| ); | |
| return { | |
| success: true, | |
| data: members, | |
| }; | |
| } | |
| /** | |
| * GET /spaces/:spaceId/members/:userId/role | |
| * Get member role | |
| */ | |
| (':userId/role') | |
| (HttpStatus.OK) | |
| async getMemberRole( | |
| ('spaceId') spaceId: string, | |
| ('userId') userId: string, | |
| ): Promise<any> { | |
| const role = await this.membersService.getMemberRole(spaceId, userId); | |
| return { | |
| success: true, | |
| data: role, | |
| }; | |
| } | |
| /** | |
| * PATCH /spaces/:spaceId/members/:userId/role | |
| * Update member role | |
| */ | |
| (':userId/role') | |
| (HttpStatus.OK) | |
| async updateMemberRole( | |
| ('spaceId') spaceId: string, | |
| ('userId') userId: string, | |
| () dto: UpdateRoleDto, | |
| ('userId') currentUserId: string, | |
| ): Promise<any> { | |
| const member = await this.membersService.updateMemberRole( | |
| spaceId, | |
| userId, | |
| dto.role, | |
| currentUserId, | |
| ); | |
| return { | |
| success: true, | |
| data: member, | |
| }; | |
| } | |
| /** | |
| * GET /spaces/:spaceId/members/:userId/activity | |
| * Get member activity | |
| */ | |
| (':userId/activity') | |
| (HttpStatus.OK) | |
| async getMemberActivity( | |
| ('spaceId') spaceId: string, | |
| ('userId') userId: string, | |
| ): Promise<any> { | |
| const activity = await this.membersService.getMemberActivity( | |
| spaceId, | |
| userId, | |
| ); | |
| return { | |
| success: true, | |
| data: activity, | |
| }; | |
| } | |
| /** | |
| * DELETE /spaces/:spaceId/members/:userId | |
| * Remove member from space | |
| */ | |
| (':userId') | |
| (HttpStatus.OK) | |
| async removeMember( | |
| ('spaceId') spaceId: string, | |
| ('userId') userId: string, | |
| ('userId') currentUserId: string, | |
| ): Promise<any> { | |
| await this.membersService.removeMember(spaceId, userId, currentUserId); | |
| return { | |
| success: true, | |
| message: 'Member removed successfully', | |
| }; | |
| } | |
| } | |