diff options
Diffstat (limited to 'server/controllers/chat_room.controller.ts')
-rw-r--r-- | server/controllers/chat_room.controller.ts | 51 |
1 files changed, 47 insertions, 4 deletions
diff --git a/server/controllers/chat_room.controller.ts b/server/controllers/chat_room.controller.ts index 5a8da66..bd9ba4a 100644 --- a/server/controllers/chat_room.controller.ts +++ b/server/controllers/chat_room.controller.ts @@ -1,12 +1,55 @@ -import { Controller, Get } from '@nestjs/common'; +import { Body, Controller, Delete, Get, Param, Post, Put, Query } from '@nestjs/common'; +import { JwtBody } from 'server/decorators/jwt_body.decorator'; +import { JwtBodyDto } from 'server/dto/jwt_body.dto'; import { ChatRoomService } from 'server/providers/services/chat_room.service'; +import { UsersService } from 'server/providers/services/users.service'; @Controller() export class ChatRoomController { - constructor(private chatRoomService: ChatRoomService) {} + constructor(private chatRoomService: ChatRoomService, private usersService: UsersService) {} @Get('/chat_rooms') - async get() { - return await this.chatRoomService.all(); + async get(@Query() query: any) { + console.log(query); + return await this.chatRoomService.near(query); + } + + @Post('/chat_rooms') + async create(@JwtBody() jwtBody: JwtBodyDto, @Body() chatRoom: any) { + chatRoom.user = await this.usersService.find(jwtBody.userId); + console.log(jwtBody); + return await this.chatRoomService.create(chatRoom); + } + + private async authorized(jwtBody: JwtBodyDto, chatRoom: any) { + const user = await this.usersService.find(jwtBody.userId); + if (user.id !== chatRoom.user.id) { + return { + error: 'You are not the owner of this chat room', + }; + } + return true; + } + + @Put('/chat_rooms/:id') + async update(@JwtBody() jwtBody: JwtBodyDto, @Param('id') id: number, @Body() chatRoom: any) { + console.log(id); + const chat_room = await this.chatRoomService.findById(id, ['user']); + if (!(await this.authorized(jwtBody, chat_room))) { + return chat_room; + } + chat_room.latitude = chatRoom.latitude; + chat_room.longitude = chatRoom.longitude; + chat_room.radius = chatRoom.radius; + return await this.chatRoomService.save(chat_room); + } + + @Delete('/chat_rooms/:id') + async delete(@JwtBody() jwtBody: JwtBodyDto, @Param('id') id: number) { + const chat_room = await this.chatRoomService.findById(id, ['user']); + if (!(await this.authorized(jwtBody, chat_room))) { + return false; + } + return await this.chatRoomService.remove(chat_room); } } |