import express from 'express';
import logger from '../utils/logger.js';
import pb from '../utils/pocketbaseClient.js';

const router = express.Router();

// Email validation regex
const isValidEmail = (email) => {
  const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  return emailRegex.test(email);
};

router.post('/', async (req, res) => {
  const { nome, email, telefone, mensagem } = req.body;

  // Validate nome
  if (!nome || typeof nome !== 'string' || nome.trim() === '') {
    return res.status(400).json({ error: 'Nome é obrigatório e deve ser uma string não vazia' });
  }

  // Validate email
  if (!email || typeof email !== 'string' || email.trim() === '') {
    return res.status(400).json({ error: 'Email é obrigatório e deve ser uma string não vazia' });
  }

  if (!isValidEmail(email.trim())) {
    return res.status(400).json({ error: 'Email inválido' });
  }

  // Validate mensagem
  if (!mensagem || typeof mensagem !== 'string' || mensagem.trim() === '') {
    return res.status(400).json({ error: 'Mensagem é obrigatória e deve ser uma string não vazia' });
  }

  // Telefone is optional, default to empty string
  const telefoneValue = telefone && typeof telefone === 'string' && telefone.trim() !== '' ? telefone.trim() : '';

  logger.info(`Contact form submission from ${email.trim()}: ${nome.trim()}`);

  // Save to PocketBase - the hook will send the email
  const record = await pb.collection('contatos').create({
    nome: nome.trim(),
    email: email.trim(),
    telefone: telefoneValue,
    mensagem: mensagem.trim(),
    status: 'novo',
  });

  logger.info(`Contact record created with ID: ${record.id}`);

  res.json({ success: true, message: 'Contato enviado com sucesso' });
});

export default router;