import { Controller, Post, Body, HttpStatus, HttpException, Logger } from '@nestjs/common';
import { ContactService } from './contact.service';
import { CreateContactDto } from './dto/create-contact.dto';
import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger';

@ApiTags('Contact')
@Controller({ path: 'contact', version: '1' })
export class ContactController {
  constructor(private readonly contactService: ContactService) {}

  @Post()
  @ApiOperation({ summary: 'Send contact email' })
  @ApiResponse({
    status: HttpStatus.OK,
    description: 'Email sent successfully',
  })
  @ApiResponse({
    status: HttpStatus.BAD_REQUEST,
    description: 'Invalid input, e.g., missing required fields',
  })
  @ApiResponse({
    status: HttpStatus.INTERNAL_SERVER_ERROR,
    description: 'Server error while sending the email',
  })
  async sendEmail(@Body() createContactDto: CreateContactDto): Promise<{ success: boolean }> {
    try {
      const result = await this.contactService.sendEmail(createContactDto);
      return { success: result };
    } catch (error) {
      Logger.error('Error sending the email.', error);
      throw new HttpException('Unexpected error occurred', HttpStatus.INTERNAL_SERVER_ERROR);
    }
  }
}
