import { z } from "zod";

export const reservationSchema = z
  .object({
    customerId: z.string().min(1, "Selecione o cliente."),
    equipmentId: z.string().min(1, "Selecione o equipamento a ser reservado."),
    startDate: z.string().min(1, "Informe a data inicial da reserva."),
    endDate: z.string().min(1, "Informe a data de término."),
    depositAmount: z.number().min(0, "O valor do sinal deve ser maior ou igual a zero."),
    validUntil: z.string().min(1, "Informe a data limite de validade da reserva."),
    notes: z.string().optional(),
    status: z.enum(["PENDING", "CONFIRMED", "CONVERTED", "EXPIRED", "CANCELED"]),
  })
  .refine(
    (data) => {
      const start = new Date(data.startDate);
      const end = new Date(data.endDate);
      return end >= start;
    },
    {
      message: "A data de término deve ser igual ou posterior à data inicial.",
      path: ["endDate"],
    }
  );

export type ReservationFormValues = z.infer<typeof reservationSchema>;
