From 51a5850fd71b1c7915b2abb300172a1d97a15297 Mon Sep 17 00:00:00 2001 From: Ayoub Essabiry Date: Tue, 17 Oct 2023 08:53:54 +0100 Subject: [PATCH] ADD: get room members --- backend/code/src/rooms/rooms.controller.ts | 26 ++++++++++++------ backend/code/src/rooms/rooms.service.ts | 32 ++++++++++++++++++++++ backend/code/src/users/users.service.ts | 1 + 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/backend/code/src/rooms/rooms.controller.ts b/backend/code/src/rooms/rooms.controller.ts index 77f45d8..65f6671 100644 --- a/backend/code/src/rooms/rooms.controller.ts +++ b/backend/code/src/rooms/rooms.controller.ts @@ -5,6 +5,7 @@ import { HttpStatus, Get, Query, + Param, Post, UseGuards, } from '@nestjs/common'; @@ -17,6 +18,7 @@ import { LeaveRoomDto } from './dto/leave-room.dto'; import { DeleteRoomDto } from './dto/delete-room.dto'; import { UpdateRoomDto } from './dto/update-room.dto'; import { ChangeOwnerDto } from './dto/change-owner.dto'; +import { QueryOffsetDto } from '../friends/dto/query-ofsset-dto'; import { RoomSearchDto } from './dto/room-search.dto'; import { ApiCookieAuth, ApiResponse, ApiTags } from '@nestjs/swagger'; import { RoomDataDto } from './dto/room-data.dto'; @@ -138,13 +140,19 @@ export class RoomsController { return await this.roomsService.getRooms(query); } - // @Get('members') - // @HttpCode(HttpStatus.OK) - // @UseGuards(AtGuard) - // async getRoomMembers( - // @Query() query: RoomSearchDto, - // @GetCurrentUser('userId') userId: string - // ){ - // return await this.roomsService.getRoomMembers(query, userId); - // } + @Get(':id/members') + @HttpCode(HttpStatus.OK) + @UseGuards(AtGuard) + async getRoomMembers( + @Param('id') roomId: string, + @GetCurrentUser('userId') userId: string, + @Query() { offset, limit }: QueryOffsetDto, + ) { + return await this.roomsService.getRoomMembers( + roomId, + userId, + offset, + limit, + ); + } } diff --git a/backend/code/src/rooms/rooms.service.ts b/backend/code/src/rooms/rooms.service.ts index dddd95e..b3470d8 100644 --- a/backend/code/src/rooms/rooms.service.ts +++ b/backend/code/src/rooms/rooms.service.ts @@ -306,4 +306,36 @@ export class RoomsService { return { id: room.id, name: room.name, type: room.type }; }); } + + async getRoomMembers( + roomId: string, + userId: string, + offset: number, + limit: number, + ) { + const user = await this.prisma.roomMember.findUnique({ + where: { unique_user_room: { userId: userId, roomId: roomId } }, + }); + + if (!user) + throw new UnauthorizedException('You are not a member of this room'); + + return await this.prisma.roomMember.findMany({ + skip: offset, + take: limit, + where: { + roomId: roomId, + is_banned: false, + }, + select: { + user: { + select: { + userId: true, + firstName: true, + lastName: true, + }, + }, + }, + }); + } } diff --git a/backend/code/src/users/users.service.ts b/backend/code/src/users/users.service.ts index 6221fc7..7e688bd 100644 --- a/backend/code/src/users/users.service.ts +++ b/backend/code/src/users/users.service.ts @@ -93,6 +93,7 @@ export class UsersService { async getUsers(name: string) { const users = await this.prisma.user.findMany({ + take: 5, where: { OR: [ {