import { NextRequest, NextResponse } from "next/server";
import nodemailer from "nodemailer";

export async function POST(request: NextRequest) {
  try {
    const { name, phone, email, message } = await request.json();

    // Validation
    if (!name || !phone || !message) {
      return NextResponse.json(
        { error: "Vui lòng điền đầy đủ thông tin bắt buộc" },
        { status: 400 }
      );
    }

    // Validate phone number (Vietnamese format)
    const phoneRegex = /^(0|\+84)(3|5|7|8|9)[0-9]{8}$/;
    if (!phoneRegex.test(phone.replace(/\s/g, ""))) {
      return NextResponse.json(
        { error: "Số điện thoại không hợp lệ" },
        { status: 400 }
      );
    }

    // Validate email if provided
    if (email && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
      return NextResponse.json(
        { error: "Email không hợp lệ" },
        { status: 400 }
      );
    }

    // Create transporter
    const transporter = nodemailer.createTransport({
      service: "gmail",
      auth: {
        user: process.env.GMAIL_USER,
        pass: process.env.GMAIL_APP_PASSWORD,
      },
    });

    // Get current time
    const now = new Date();
    const formattedDate = now.toLocaleString("vi-VN", {
      dateStyle: "short",
      timeStyle: "short",
    });

    // Email content
    const mailOptions = {
      from: process.env.GMAIL_USER,
      to: process.env.NOTIFICATION_EMAIL, // Email nhận thông báo
      subject: "📩 KHÁCH HÀNG GỬI FORM LIÊN HỆ - V_LOG MEDIA",
      html: `
        <div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-radius: 10px;">
          <div style="background: white; padding: 30px; border-radius: 8px; box-shadow: 0 4px 6px rgba(0,0,0,0.1);">
            <h1 style="color: #dc2626; margin-top: 0; font-size: 24px; border-bottom: 3px solid #dc2626; padding-bottom: 10px;">
              📩 KHÁCH HÀNG GỬI FORM LIÊN HỆ
            </h1>

            <div style="background: #fef2f2; padding: 20px; border-radius: 8px; margin: 20px 0; border-left: 4px solid #dc2626;">
              <p style="margin: 10px 0; font-size: 16px;">
                <strong style="color: #dc2626;">👤 Họ tên:</strong>
                <span style="color: #374151;">${name}</span>
              </p>
              <p style="margin: 10px 0; font-size: 16px;">
                <strong style="color: #dc2626;">📱 Số điện thoại:</strong>
                <span style="color: #374151;">${phone}</span>
              </p>
              ${
                email
                  ? `<p style="margin: 10px 0; font-size: 16px;">
                <strong style="color: #dc2626;">📧 Email:</strong>
                <span style="color: #374151;">${email}</span>
              </p>`
                  : ""
              }
              <p style="margin: 10px 0; font-size: 16px;">
                <strong style="color: #dc2626;">🕐 Thời gian:</strong>
                <span style="color: #374151;">${formattedDate}</span>
              </p>
            </div>

            <div style="background: #f9fafb; padding: 20px; border-radius: 8px; margin: 20px 0; border: 2px solid #e5e7eb;">
              <h3 style="color: #374151; margin-top: 0; font-size: 16px;">💬 Nội dung tin nhắn:</h3>
              <p style="color: #4b5563; line-height: 1.6; white-space: pre-wrap;">${message}</p>
            </div>

            <div style="background: linear-gradient(135deg, #dc2626 0%, #f97316 100%); padding: 15px; border-radius: 8px; text-align: center; margin-top: 20px;">
              <p style="color: white; margin: 0; font-size: 18px; font-weight: bold;">
                🎯 V_LOG MEDIA
              </p>
              <p style="color: white; margin: 5px 0 0 0; font-size: 14px; opacity: 0.9;">
                Phản hồi khách hàng ngay để tạo ấn tượng tốt!
              </p>
            </div>
          </div>
        </div>
      `,
    };

    await transporter.sendMail(mailOptions);

    return NextResponse.json(
      { message: "Cảm ơn bạn! Chúng tôi sẽ liên hệ lại sớm nhất." },
      { status: 200 }
    );
  } catch (error) {
    console.error("Email sending error:", error);
    return NextResponse.json(
      { error: "Có lỗi xảy ra, vui lòng thử lại sau" },
      { status: 500 }
    );
  }
}
