"use server"; import { z } from "zod"; import { Resend } from "resend"; import { verifyRecaptcha } from "@/lib/recaptcha"; const resend = new Resend(process.env.RESEND_API_KEY); const multisplitFormSchema = z.object({ name: z.string().min(2, "Imię musi mieć min. 2 znaki"), phone: z.string().min(9, "Wprowadź poprawny numer telefonu"), email: z.union([z.literal(''), z.string().email("Niepoprawny adres e-mail")]).optional(), city: z.string().min(1, "Wybierz miasto"), rooms: z.string().optional(), message: z.string().optional(), consent: z.boolean().refine((val) => val === true, "Zgoda RODO jest wymagana"), productName: z.string(), productSku: z.string(), }); export async function submitMultisplitForm(data: any) { try { if (process.env.NEXT_PUBLIC_RECAPTCHA_SITE_KEY && process.env.RECAPTCHA_SECRET_KEY) { if (!data.recaptchaToken) { return { success: false, message: "Weryfikacja bezpieczeństwa nie powiodła się. Odśwież stronę i spróbuj ponownie." }; } const { success } = await verifyRecaptcha(data.recaptchaToken); if (!success) { return { success: false, message: "Weryfikacja bezpieczeństwa nie powiodła się. Odśwież stronę i spróbuj ponownie." }; } } const validatedData = multisplitFormSchema.parse(data); const { error } = await resend.emails.send({ from: process.env.RESEND_FROM_EMAIL || "noreply@thermcool.pl", to: process.env.RESEND_TO_EMAIL || "biuro@thermcool.pl", replyTo: validatedData.email || undefined, subject: `Zapytanie o multisplit: ${validatedData.productName} (${validatedData.productSku})`, html: `

Zapytanie o multisplit

Domena: thermcool.pl

Dane kontaktowe:

Imię: ${validatedData.name}
Telefon: ${validatedData.phone}
E-mail: ${validatedData.email || 'Brak'}
Miasto: ${validatedData.city}
Produkt: ${validatedData.productName} (${validatedData.productSku})
Pokoje: ${validatedData.rooms}

Dodatkowe informacje:

${validatedData.message || 'Brak'}

Zgoda RODO została zaakceptowana: ${validatedData.consent ? "Tak" : "Nie"}

Wiadomość wygenerowana automatycznie z formularza multisplit na stronie thermcool.pl
`, }); if (error) { console.error("Resend Error:", error); return { success: false, message: "Nie udało się wysłać wiadomości ze względu na błąd serwera pocztowego.", }; } return { success: true, message: "Dziękujemy za zapytanie! Skontaktujemy się z Tobą najszybciej jak to możliwe.", }; } catch (error) { if (error instanceof z.ZodError) { return { success: false, message: "Wystąpił błąd walidacji. Sprawdź poprawność danych.", errors: error.flatten().fieldErrors, }; } return { success: false, message: "Wystąpił nieoczekiwany błąd serwera. Spróbuj ponownie później.", }; } }