import { priorityEnumSchema, statusEnumSchema } from "@/database/schema";
import { formatDate } from "@/lib/utils";
import { z } from "zod";
export const modifyTaskSchema = z.object({
id: z.number(),
status: statusEnumSchema,
userId:z.string(),
priority: priorityEnumSchema,
startDate: z.string().refine((str) => (str ? formatDate(str) : undefined)).optional(),
expireDate: z.string().refine((str) => (str ? formatDate(str) : undefined)).optional(),
}).refine(
(data) => {
const now = formatDate(new Date())!;
if (data.startDate) {
return formatDate(data.startDate)! >= now;
}
return true;
},
{
message:
"La fecha de inicio no puede ser inferior a la fecha actual",
path: ["startDate"],
}
)
.refine(
(data) => {
// Verificar si expireDate es proporcionado y es mayor o igual a startDate
if (data.expireDate) {
return formatDate(data.expireDate)! >= formatDate(data.startDate)!;
}
return true; // Si expireDate no está proporcionado, no aplicar la validación
},
{
message:
"La fecha de expiración debe ser igual o posterior a la fecha de inicio",
path: ["expireDate"],
}
)