import { z } from 'zod';

export type ContactMessageFormValues = {
    name: string;
    email: string;
    phone: string;
    company: string;
    country: string;
    product_id: number | null;
    inquiry_type: string;
    quantity_kg: string;
    subject: string;
    message: string;
    website: string;
};

const MESSAGES = {
    id: {
        name_required: 'Nama wajib diisi',
        email_required: 'Email wajib diisi',
        email_invalid: 'Format email tidak valid',
        max_255: 'Maksimal 255 karakter',
        phone_max: 'Maksimal 50 karakter',
        message_min: 'Pesan minimal 10 karakter',
        message_max: 'Maksimal 5000 karakter',
        invalid_request: 'Invalid request',
    },
    en: {
        name_required: 'Name is required',
        email_required: 'Email is required',
        email_invalid: 'Invalid email format',
        max_255: 'Maximum 255 characters',
        phone_max: 'Maximum 50 characters',
        message_min: 'Message must be at least 10 characters',
        message_max: 'Maximum 5000 characters',
        invalid_request: 'Invalid request',
    },
} as const;

export const contactMessageSchemaFor = (locale: 'id' | 'en' = 'id') => {
    const m = MESSAGES[locale];

    return z.object({
        name: z.string().min(1, m.name_required).max(255, m.max_255),
        email: z.string().min(1, m.email_required).email(m.email_invalid).max(255, m.max_255),
        phone: z.string().max(50, m.phone_max).optional().or(z.literal('')),
        company: z.string().max(255).optional().or(z.literal('')),
        country: z.string().max(100).optional().or(z.literal('')),
        product_id: z.number().nullable().optional(),
        inquiry_type: z.string().optional().or(z.literal('')),
        quantity_kg: z.string().max(10).optional().or(z.literal('')),
        subject: z.string().max(255, m.max_255).optional().or(z.literal('')),
        message: z.string().min(10, m.message_min).max(5000, m.message_max),
        website: z.string().max(0, m.invalid_request).optional().or(z.literal('')),
    }) as unknown as z.ZodType<ContactMessageFormValues, ContactMessageFormValues>;
};