import { z } from "zod";
import type { Messages } from "@/shared/i18n/config";

export const createUserSchema = (t: Messages) =>
  z.object({
    first_name: z.string().min(1, t.validation.firstNameRequired),
    last_name: z.string().min(1, t.validation.nameRequired),
    email: z.string().min(1, t.validation.emailRequired).email(t.validation.emailInvalid),
    phone: z.string().min(1, t.validation.phoneRequired),
    password: z.string().min(8, t.validation.passwordMinLength),
    role: z.enum(["company", "driver", "site-manager", "company-client"], {
      message: t.validation.roleRequired,
    }),
    user_id: z.number().optional(),
    status: z.string().optional(),
  });

export const updateUserSchema = (t: Messages) =>
  z.object({
    first_name: z.string().min(1, t.validation.firstNameRequired).optional(),
    last_name: z.string().min(1, t.validation.nameRequired).optional(),
    email: z.string().email(t.validation.emailInvalid).optional(),
    phone: z.string().min(1, t.validation.phoneRequired).optional(),
    role: z.enum(["company", "driver", "site-manager", "company-client"]).optional(),
    preferred_language: z.string().optional(),
  });

export const resetPasswordSchema = (t: Messages) =>
  z.object({
    password: z.string().min(8, t.validation.passwordMinLength),
  });

export type CreateUserFormValues = z.infer<ReturnType<typeof createUserSchema>>;
export type UpdateUserFormValues = z.infer<ReturnType<typeof updateUserSchema>>;
export type ResetPasswordFormValues = z.infer<ReturnType<typeof resetPasswordSchema>>;
