summaryrefslogtreecommitdiff
path: root/server/controllers/chat_room.controller.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/controllers/chat_room.controller.ts')
-rw-r--r--server/controllers/chat_room.controller.ts51
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);
}
}