import { z } from "zod";

export const assetMaintenanceSchema = z.object({
  id: z.number(),
  clientId: z.number(),
  propId: z.number(),
  assetId: z.number(),
  description: z.string(),
  cost: z.number(),
  assignedToType: z.number(),
  assignedToId: z.number(),
  lastMaintenance: z.string().date(),
  nextMaintenance: z.string().date(),
  expenseId: z.number().nullable(),
  createdAt: z.string().datetime(),
  updatedAt: z.string().datetime(),
});

type assetMaintenanceTypes = z.infer<typeof assetMaintenanceSchema>;

export const assetMaintenanceAddSchema = z.object({
  propId: assetMaintenanceSchema.shape.propId,
  assetId: assetMaintenanceSchema.shape.assetId,
  description: assetMaintenanceSchema.shape.description,
  cost: assetMaintenanceSchema.shape.cost,
  assignedToType: assetMaintenanceSchema.shape.assignedToType,
  assignedToId: assetMaintenanceSchema.shape.assignedToId,
  lastMaintenance: assetMaintenanceSchema.shape.lastMaintenance,
  nextMaintenance: assetMaintenanceSchema.shape.nextMaintenance.optional(),
});

export const assetMaintenanceEditSchema = z.object({
  id: assetMaintenanceSchema.shape.id,
  description: assetMaintenanceSchema.shape.description.optional(),
  cost: assetMaintenanceSchema.shape.cost,
  assignedToType: assetMaintenanceSchema.shape.assignedToType,
  assignedToId: assetMaintenanceSchema.shape.assignedToId,
  lastMaintenance: assetMaintenanceSchema.shape.lastMaintenance,
  nextMaintenance: assetMaintenanceSchema.shape.nextMaintenance.optional(),
});

export default assetMaintenanceTypes;
