import { z } from "zod";

export const equipmentSchema = z.object({
  categoryId: z.string().min(1, "Selecione uma categoria."),
  code: z.string().min(2, "O código interno deve ter pelo menos 2 caracteres."),
  assetTag: z.string().min(2, "A placa de patrimônio é obrigatória."),
  brand: z.string().min(2, "Informe a marca."),
  model: z.string().min(2, "Informe o modelo."),
  year: z
    .number({ invalid_type_error: "Ano inválido." })
    .min(1900, "Ano inválido.")
    .max(new Date().getFullYear() + 1, "Ano não pode ser no futuro.")
    .optional(),
  serialNumber: z.string().optional(),
  acquisitionValue: z
    .number({ invalid_type_error: "Valor inválido." })
    .min(0, "Valor deve ser maior ou igual a zero.")
    .optional(),
  dailyRate: z
    .number({ invalid_type_error: "Diária inválida." })
    .min(0, "A diária deve ser maior ou igual a zero.")
    .optional(),
  weeklyRate: z
    .number({ invalid_type_error: "Tarifa semanal inválida." })
    .min(0, "A tarifa deve ser maior ou igual a zero.")
    .optional(),
  monthlyRate: z
    .number({ invalid_type_error: "Tarifa mensal inválida." })
    .min(0, "A tarifa deve ser maior ou igual a zero.")
    .optional(),
  status: z
    .enum(["AVAILABLE", "RENTED", "MAINTENANCE", "RESERVED", "INACTIVE"])
    .optional(),
  hourMeter: z
    .number({ invalid_type_error: "Horímetro inválido." })
    .min(0, "O horímetro deve ser positivo.")
    .optional(),
  mileage: z
    .number({ invalid_type_error: "Quilometragem inválida." })
    .min(0, "A quilometragem deve ser positiva.")
    .optional(),
  notes: z.string().optional(),
});

export type EquipmentFormValues = z.infer<typeof equipmentSchema>;
