import { NextResponse } from 'next/server'
import nodemailer from 'nodemailer'
import { site } from '@/lib/site'

export const runtime = 'nodejs'

/**
 * Az eredeti kapcsolat űrlap PHPMailerrel küldött SMTP-n.
 * Ugyanaz a kiszolgáló és címzett, de a belépési adatok
 * környezeti változóból jönnek — nem a forráskódból.
 */
const required = ['SMTP_HOST', 'SMTP_USER', 'SMTP_PASS'] as const

function escapeHtml(value: string) {
  return value
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
}

export async function POST(request: Request) {
  let body: Record<string, unknown>
  try {
    body = await request.json()
  } catch {
    return NextResponse.json({ error: 'Hibás kérés' }, { status: 400 })
  }

  // mézesbödön: ha ki van töltve, robot küldte — csendben elnyeljük
  if (typeof body.website === 'string' && body.website.length > 0) {
    return NextResponse.json({ ok: true })
  }

  const name = String(body.name ?? '').trim()
  const email = String(body.email ?? '').trim()
  const message = String(body.message ?? '').trim()
  const subject = String(body.subject ?? '').trim() || 'Nem adott meg tárgyat'

  if (!name || !email || !message) {
    return NextResponse.json({ error: 'A név, e-mail cím és üzenet kitöltése kötelező' }, { status: 400 })
  }
  if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
    return NextResponse.json({ error: 'Érvénytelen e-mail cím' }, { status: 400 })
  }

  const missing = required.filter((key) => !process.env[key])
  if (missing.length > 0) {
    console.error(`Hiányzó SMTP beállítás: ${missing.join(', ')}`)
    return NextResponse.json(
      { error: 'A levélküldés jelenleg nincs beállítva. Kérjük, hívjon minket telefonon.' },
      { status: 503 }
    )
  }

  const transporter = nodemailer.createTransport({
    host: process.env.SMTP_HOST,
    port: Number(process.env.SMTP_PORT ?? 465),
    secure: process.env.SMTP_SECURE !== 'false',
    auth: { user: process.env.SMTP_USER, pass: process.env.SMTP_PASS },
  })

  try {
    await transporter.sendMail({
      from: `"${process.env.SMTP_FROM_NAME ?? 'webron'}" <${process.env.SMTP_FROM ?? process.env.SMTP_USER}>`,
      to: process.env.CONTACT_TO ?? site.email,
      replyTo: `"${name}" <${email}>`,
      subject: 'Üzenet zsoltiacm.hu weboldalról',
      text: `Új üzenete érkezett ${name} ügyféltől.\n\nNév: ${name}\nEmail: ${email}\nTárgy: ${subject}\n\nÜzenet:\n${message}`,
      html: `<!doctype html>
<html lang="hu">
<body style="margin:0;padding:0;background:#f6f6f6;font-family:Helvetica,Arial,sans-serif;font-size:14px;line-height:1.6;">
  <div style="max-width:600px;margin:0 auto;padding:20px;">
    <div style="background:#fff;border:1px solid #e9e9e9;border-radius:3px;padding:20px;">
      <h3 style="text-align:center;color:#5f6368;font-weight:400;margin:0 0 20px;">
        Új üzenete érkezett ${escapeHtml(name)} ügyféltől.
      </h3>
      <p style="color:#5f6368;">Név: ${escapeHtml(name)}</p>
      <p style="color:#5f6368;">Email: ${escapeHtml(email)}</p>
      <p style="color:#5f6368;">Tárgy: ${escapeHtml(subject)}</p>
      <p style="color:#5f6368;">Üzenet: ${escapeHtml(message).replace(/\n/g, '<br>')}</p>
    </div>
    <div style="text-align:center;color:#999;padding:20px;">
      Follow <a href="https://webron.hu" style="color:#999;text-decoration:none;">webron</a>
    </div>
  </div>
</body>
</html>`,
    })

    return NextResponse.json({ ok: true })
  } catch (error) {
    console.error('Levélküldési hiba:', error)
    return NextResponse.json({ error: 'Az üzenet küldése nem sikerült. Kérjük, próbálja újra.' }, { status: 502 })
  }
}
