import * as z from "zod";

export const projectChargeSchema = z
  .object({
    project: z.string().min(1, {
      message: "Please select a project",
    }),
    chargeName: z.string().min(1, { message: "Charge name required" }),
    chargeType: z.enum(["percentage", "fixedAmount", "perSqYard", "perSqFt"], {
      required_error: "Please select charge type",
    }),
    chargeValue: z.coerce.number({
      required_error: "Please enter a value",
      invalid_type_error: "Value must be a number",
    }),
    status: z.enum(["active", "inactive"], {
      required_error: "Please select status",
    }),
  })
  .superRefine((data, ctx) => {
    if (data.chargeType === "percentage") {
      if (data.chargeValue < 0 || data.chargeValue > 100) {
        ctx.addIssue({
          path: ["chargeValue"],
          code: z.ZodIssueCode.custom,
          message: "Percentage value must be between 0 and 100",
        });
      }
    } else {
      if (data.chargeValue < 0) {
        ctx.addIssue({
          path: ["chargeValue"],
          code: z.ZodIssueCode.custom,
          message: "Value must be a positive number",
        });
      }
    }
  });
