import { z } from "zod";

export const addTargetSchema = z.object({
  timePeriod: z
    .string({
      required_error: "Time period is required",
      invalid_type_error: "Time period must be a string",
    })
    .optional(),

  targetType: z
    .string({
      required_error: "Target type is required",
      invalid_type_error: "Target type must be a string",
    })
    .min(1, "Target type cannot be empty"),

    team: z
    .string({
      required_error: "Team is required",
      invalid_type_error: "Team must be a string",
    })
    .min(1, "Team cannot be empty"),

    month: z
    .string()
    .refine(val => {
      const num = Number(val);
      return !isNaN(num) && num >= 1 && num <= 12;
    }, {
      message: "Invalid month",
    }),
  
  year: z
    .string()
    .refine(val => {
      const num = Number(val);
      return !isNaN(num) && num >= 2020 && num <= 2100;
    }, {
      message: "Invalid year",
    }),

  teamMember: z
    .string({
      invalid_type_error: "Team member must be a string",
    })
    .optional(),

  salesAmount: z
    .coerce.number({
      required_error: "Sales amount is required",
      invalid_type_error: "Sales amount must be a number",
    })
    .min(1, "Sales amount must be greater than 0"),

  unitsSold: z
    .coerce.number({
      required_error: "Units sold is required",
      invalid_type_error: "Units sold must be a number",
    })
    .min(1, "Units sold must be greater than 0"),

  meetings: z
    .coerce.number({
      required_error: "Meetings field is required",
      invalid_type_error: "Meetings must be a number",
    })
    .min(1, "Meetings must be greater than 0"),

  siteVisits: z
    .coerce.number({
      required_error: "Site visits field is required",
      invalid_type_error: "Site visits must be a number",
    })
    .min(1, "Site visits must be greater than 0"),

  calls: z
    .coerce.number({
      required_error: "Calls field is required",
      invalid_type_error: "Calls must be a number",
    })
    .min(1, "Calls must be greater than 0"),
});
