import { z } from "zod";

const msg = (ru: string, en: string, tm: string, lang: string) =>
  lang === "ru" ? ru : lang === "tm" ? tm : en;

export const createStandFormSchema = (lang: string) =>
  z.object({
    space_package: z.string(),

    company_name: z
      .string()
      .min(3, {
        message: msg(
          "Название компании должно быть не менее 3 символов",
          "Company name must be at least 3 characters",
          "Kompaniýanyň ady azyndan 3 simwoldan ybarat bolmaly",
          lang
        ),
      }),

    rep_name: z
      .string()
      .min(3, {
        message: msg(
          "Имя представителя должно быть не менее 3 символов",
          "Representative name must be at least 3 characters",
          "Wekiliniň ady azyndan 3 simwoldan ybarat bolmaly",
          lang
        ),
      }),

    job_title: z
      .string()
      .min(3, {
        message: msg(
          "Должность должна быть не менее 3 символов",
          "Job title must be at least 3 characters",
          "Wezipesi azyndan 3 simwoldan ybarat bolmaly",
          lang
        ),
      }),

    participants_number: z.preprocess(
      (val) => Number(val),
      z.number().min(1, msg(
        "Укажите количество участников",
        "Specify the number of participants",
        "Gatnaşyjylaryň sanyny görkeziň",
        lang
      ))
    ),

    country: z
      .string()
      .min(3, {
        message: msg(
          "Название страны должно быть не менее 3 символов",
          "Country must be at least 3 characters",
          "Ýurduň ady azyndan 3 simwoldan ybarat bolmaly",
          lang
        ),
      }),

    email: z.string().email({
      message: msg(
        "Укажите корректный email",
        "Enter a valid email",
        "Dogry email salgysyny giriziň",
        lang
      ),
    }),

    phone: z
      .string()
      .min(8, {
        message: msg(
          "Номер телефона должен быть не менее 8 символов",
          "Phone number must be at least 8 characters",
          "Telefon belgisi azyndan 8 simwoldan ybarat bolmaly",
          lang
        ),
      }),

    website: z.string().optional(),

    visa_support: z.string().optional(),
  });

export type StandFormType = z.infer<ReturnType<typeof createStandFormSchema>>;

export const standDefaultValues = {
  space_package: "space",
  company_name: "",
  rep_name: "",
  job_title: "",
  participants_number: 1,
  country: "",
  email: "",
  phone: "",
  website: "",
  visa_support: "",
};
