// Component ContactForm is using this API Route:api/contact
import { NextRequest, NextResponse } from 'next/server'

const API_KEY = process.env.MAILCHIMP_TRANSACTIONAL_API_KEY;

if (!API_KEY) {
  console.error('MAILCHIMP_TRANSACTIONAL_API_KEY is not set in environment variables');
}

const mailchimp = require("@mailchimp/mailchimp_transactional")(API_KEY);

interface ContactFormData {
  name: string
  lastname: string
  email: string
  phone: string
  message: string
}

export async function POST(req: NextRequest): Promise<NextResponse> {
    try {
        // Check if API key is available
        if (!API_KEY) {
            console.error('Mailchimp API key is not configured');
            return NextResponse.json(
                { message: "Server configuration error", error: "Email service not configured" },
                { status: 500 }
            );
        }

        const { name, lastname, email, phone, message }: ContactFormData = await req.json();

        // Validate required fields
        if (!name || !lastname || !email || !phone || !message) {
            return NextResponse.json(
                { message: "Missing required fields", error: "All fields are required" },
                { status: 400 }
            );
        }

        // Handle the data, e.g., store it in a database, send an email, etc.
        const text = `Ime i prezime:\n${name} ${lastname}\n\nTelefon:\n${phone}\n\nEmail:\n${email}\n\nPoruka:\n${message}\n\n-- Poslato sa AKTIV website \n`;

        // Server side console.log!
        console.log('Contact form submission:', { name, lastname, email, phone });

        const data = {
            message: {
                from_email: process.env.MAIL_FROM || 'noreply@aktiv.rs',
                to: [
                    {
                        email: process.env.MAIL_TO || 'info@aktiv.rs',
                        type: "to" as const,
                    },
                ],
                subject: `Nova poruka sa AKTIV website, pošiljalac: ${name} ${lastname}`,
                text: text,
                headers: {
                    'Reply-To': email
                },
            },
        };

        const response = await mailchimp.messages.send({ ...data });

        // Server side console.log!
        console.log('Mailchimp response:', response);

        if (response?.[0]?.status === "sent") {
            return NextResponse.json(
                { message: "Message sent successfully" },
                { status: 200 }
            );
        } else {
            console.error('Email sending failed:', response?.[0]?.reject_reason);
            return NextResponse.json(
                {
                    message: "Failed to send message",
                    error: response?.[0]?.reject_reason || "Unknown error"
                },
                { status: 400 }
            );
        }
    } catch (error) {
        console.error('Contact form API error:', error);
        return NextResponse.json(
            {
                message: "Internal server error",
                error: error instanceof Error ? error.message : "Unknown error"
            },
            { status: 500 }
        );
    }
}