import {
    Body,
    Controller,
    Delete,
    Get,
    Param,
    Post,
    Put,
    Query,
    UseGuards,
    Request,
    Patch,
} from '@nestjs/common';
// import { AuthGuard } from 'src/auth/auth.guard';

import { ApiBearerAuth, ApiTags, ApiOperation } from '@nestjs/swagger';
import * as dto from './dto/index';
import { ChatService } from './chat.service';
// import { RolesGuard } from 'src/auth/roles.guard';

@ApiTags('Chat')
@Controller('chat')
export class ChatController {
    constructor(private readonly ChatService: ChatService) { }

    @Post()
    async chat_with_ai(@Body() dto: dto.chat.chatPost) {
        try {
            let data = await this.ChatService.chat_with_ai(dto);
            let response = {
                success: true,
                message: "success",
                data: data,
            };
            return response;
        } catch (err) {
            throw err;
        }
    }

    @Put("/:_id")
    async end_chat(@Param("_id") chat_id: string) {
        try {
            let data = await this.ChatService.end_chat(chat_id);
            let response = {
                success: true,
                message: "success",
                data: data,
            };
            return response;
        } catch (err) {
            throw err;
        }
    }

    @Put("/:_id/user-detail")
    async update_chat_user_detail(@Param("_id") chat_id: string,@Body() dto: dto.chat.chatUpdateDetail) {
        try {
            let data = await this.ChatService.update_chat_detail(chat_id, dto);
            let response = {
                success: true,
                message: "success",
                data: data,
            };
            return response;
        } catch (err) {
            throw err;
        }
    }

}
