// src/contact/contact.controller.ts
import {
  Body,
  Controller,
  Get,
  Post,
  Query,
  Req,
  UseGuards,
} from '@nestjs/common';
import { ContactService } from './contact.service';
import { CreateContactDto } from './dto/create-contact.dto';
import { JwtAuthGuard } from '../auth/jwt-auth.guard';
import { RolesGuard } from '../auth/roles.guard';
import { Roles } from '../auth/roles.decorator';
import { OptionalJwtAuthGuard } from '../auth/optional-jwt-auth.guard';

@Controller('contact')
export class ContactController {
  constructor(private readonly service: ContactService) {}

  // Public: create a contact message (title + subject)
  @UseGuards(OptionalJwtAuthGuard)
  @Post()
  async create(@Body() dto: CreateContactDto, @Req() req: any) {
    // if you keep it truly public, req.user will be undefined (that’s fine)
    const userId = req?.user?.id;
    return this.service.create(dto, userId);
  }

  // Admin: list messages
  @UseGuards(JwtAuthGuard, RolesGuard)
  // @Roles('admin')
  @Get()
  async list(@Query('skip') skip = '0', @Query('take') take = '1000') {
    return this.service.list(Number(skip), Number(take));
  }
}
