import { Controller, Get, Post, Put, Body, Param, UseGuards } from '@nestjs/common';
import { ApiTags, ApiBearerAuth } from '@nestjs/swagger';
import { ContactsService } from './contacts.service';
import { JwtAuthGuard } from '../common/guards/jwt-auth.guard';
import { RolesGuard } from '../common/guards/roles.guard';
import { Roles } from '../common/decorators/roles.decorator';

@ApiTags('Contacts')
@Controller()
export class ContactsController {
  constructor(private contactsService: ContactsService) {}

  @Get('contacts')
  async getFirst() {
    const contact = await this.contactsService.getFirst();
    return [contact];
  }

  @ApiBearerAuth()
  @UseGuards(JwtAuthGuard, RolesGuard)
  @Roles('SUPER_ADMIN', 'ADMIN')
  @Get('admin/contacts')
  adminFindAll() {
    return this.contactsService.adminFindAll();
  }

  @ApiBearerAuth()
  @UseGuards(JwtAuthGuard, RolesGuard)
  @Roles('SUPER_ADMIN', 'ADMIN')
  @Post('admin/contacts')
  upsert(@Body() data: { address?: string; phone?: string; email?: string; googleMapEmbed?: string }) {
    return this.contactsService.upsert(data);
  }

  @ApiBearerAuth()
  @UseGuards(JwtAuthGuard, RolesGuard)
  @Roles('SUPER_ADMIN', 'ADMIN')
  @Put('admin/contacts/:id')
  update(@Param('id') id: string, @Body() data: { address?: string; phone?: string; email?: string; googleMapEmbed?: string }) {
    return this.contactsService.upsert(data);
  }
}
