import { z } from "zod";

export const inviteEmployeeSchema = z.object({
  body: z.object({
    name: z.string().min(1, "Name is required"),
    email: z.string().email("Invalid email"),
    phone: z.string().optional(),
    gender: z.enum(["MALE", "FEMALE", "OTHER"]).optional(),
    role: z.enum(["EMPLOYEE", "MANAGER"], { message: "Role is required" }),
    departmentId: z.string().optional(),
  }),
  query: z.object({}).optional(),
  params: z.object({}).optional(),
});

export const acceptInvitationSchema = z.object({
  body: z.object({
    token: z.string().min(1, "Token is required"),
    password: z.string().min(8, "Password must be at least 8 characters"),
  }),
  query: z.object({}).optional(),
  params: z.object({}).optional(),
});

export const updateEmployeeSchema = z.object({
  body: z.object({
    name: z.string().min(1).optional(),
    role: z.enum(["EMPLOYEE", "MANAGER"]).optional(),
    departmentId: z.string().optional(),
    phone: z.string().optional(),
    gender: z.enum(["MALE", "FEMALE", "OTHER"]).optional(),
    status: z.enum(["INVITED", "ACTIVE", "SUSPENDED", "REVOKED"]).optional(),
  }).refine((d) => Object.keys(d).length > 0, {
    message: "At least one field is required to update",
  }),
  query: z.object({}).optional(),
  params: z.object({ id: z.string() }),
});
