"use server"

import { z } from "zod"

// Define a schema for form validation
const ContactFormSchema = z.object({
  firstName: z.string().min(1, "Il nome è obbligatorio"),
  lastName: z.string().min(1, "Il cognome è obbligatorio"),
  email: z.string().email("Indirizzo email non valido"),
  company: z.string().optional(),
  message: z.string().min(10, "Il messaggio deve contenere almeno 10 caratteri"),
})

type ContactFormData = z.infer<typeof ContactFormSchema>

export async function submitContactForm(formData: FormData) {
  // Artificial delay to simulate network request
  await new Promise((resolve) => setTimeout(resolve, 1000))

  try {
    // Extract and validate form data
    const data = {
      firstName: formData.get("firstName") as string,
      lastName: formData.get("lastName") as string,
      email: formData.get("email") as string,
      company: formData.get("company") as string,
      message: formData.get("message") as string,
    } as ContactFormData

    // Validate the form data
    const validatedData = ContactFormSchema.parse(data)

    // In a real application, you would send an email here
    // For example, using a service like SendGrid, Mailgun, etc.
    console.log("Form submission:", validatedData)

    // For demonstration purposes, let's log what would happen in a real app
    console.log(`
      In a production environment, an email would be sent with:
      To: contact@techtonicfault.com
      From: ${validatedData.email}
      Subject: New contact form submission from ${validatedData.firstName} ${validatedData.lastName}
      Body: ${validatedData.message}
      Additional Info: Company - ${validatedData.company || "Not provided"}
    `)

    // Return success response
    return {
      success: true,
      message: "Grazie per l'interesse! Ti ricontatteremo a breve.",
    }
  } catch (error) {
    console.error("Form validation error:", error)

    if (error instanceof z.ZodError) {
      // Return validation errors
      const errorMessages = error.errors.map((err) => `${err.message}`).join(", ")
      return {
        success: false,
        message: `Ricontrolla i dati: ${errorMessages}`,
      }
    }

    // Return generic error
    return {
      success: false,
      message: "Qualcosa è andato storto. Riprova più tardi.",
    }
  }
}
