import * as z from "zod";
import { SafeFileCtor } from "@/utils/safeFile";

export const companyFormSchema = z.object({
  name: z
    .string()
    .min(2, { message: "Company name must be at least 2 characters." }),
  address: z.string().min(5, { message: "Address is required." }),
  city: z.string().min(1, { message: "City is required." }),
  state: z.string().min(1, { message: "State/Province is required." }),
  pincode: z
    .string()
    .length(6, { message: "Pin code must be exactly 6 digits." })
    .regex(/^\d+$/, { message: "Pin code must only contain digits." }),
  country: z.string().min(1, { message: "Country is required." }),
  phone: z.string().optional(),
  email: z.string().optional(),
  websiteUrl: z
    .string()
    .url({ message: "Please enter a valid URL." })
    .optional()
    .or(z.literal("")),
  panNumber: z
    .string()
    .length(10, {
      message: "PAN number must be exactly 10 characters.",
    })
    .optional()
    .nullable(),
  gstNumber: z
    .string()
    .length(15, {
      message: "GST number must be exactly 15 characters.",
    })
    .optional()
    .nullable(),
  taxIdentificationNumber: z.string().optional(),
  logo: z.string().optional(),
  whatsAppCredit: z.number().optional(),
  smsCredit: z.number().optional(),
  emailCredit: z.number().optional(),
  uom: z.string().optional(),
});

export const logoFormSchema = z.object({
  logo: z.union([z.string(), z.instanceof(SafeFileCtor), z.null()]).optional(),
  displayLogoOnInvoices: z.boolean().optional(),
  displayLogoOnQuotations: z.boolean().optional(),
});
