task-managment / src / lib / schemas / materialSchema.ts
materialSchema.ts
Raw
import { z } from "zod";
import { v4 as uuidv4 } from 'uuid';

export const materialSchema=  z.object({
    name: z.string(),
    price: z.string().transform((value) => parseFloat(value)),
    brand: z.string(),
  })


  export const projectMaterialSchema = z.object({
    projectId:z.string().uuid({message:'Projecto invalido'}),
    projectName:z.string(),
    requiredQuantity: z.coerce.number().min(1,{message:'Cantidad minima requerida es 1'}),
    usedQuantity: z.coerce.number().optional().default(0),
    availableQuantity: z.coerce.number(),
    materialId: z.string().uuid({message:'Seleccione un material valido'})
  });

  export const updateProjectMaterialSchema = projectMaterialSchema.extend({
    id:z.string().uuid({message:'Area no valida'})
  });

  export const addMaterialToProjectSchema = z.object({
    id: z.string().uuid().default(()=>uuidv4()),
    projectId:z.string(),
    projectName:z.string(),
    material:z.object({
      id:z.string(),
      name:z.string()
    }),
    requiredQuantity:z.coerce.number({message:'Cantidad requerida invalida'}).min(1,{message:"Cantidad minima 1"}),
    availableQuantity:z.coerce.number({message:'Cantidad disponible invalida'}).default(0)
  })