import { z } from "zod"; export const newTenantSchema = z.object({ firstName: z.string().nonempty("First name is required"), lastName: z.string().nonempty("Last name is required"), email: z.string().email("Invalid email address"), description: z.string().optional(), domainName: z.string().nonempty("Domain name is required"), billingAddress: z.string().nonempty("Billing address is required"), taxId: z.string().nonempty("Tax ID is required"), logoImage: z.string().optional(), organizationName: z.string().nonempty("Organization name is required"), officeNumber: z.string().nonempty("Office number is required"), contactNumber: z.string().nonempty("Contact number is required"), onBoardingDate: z.coerce.date({ required_error: "Onboarding date is required", invalid_type_error: "Invalid date format", }), organizationSize: z.string().nonempty("Organization size is required"), industryId: z.string().uuid("Invalid industry ID"), reference: z.string().nonempty("Reference is required"), }); export const tenantDefaultValues = { firstName: "", lastName: "", email: "", description: "", domainName: "", billingAddress: "", taxId: "", logoImage: "", organizationName: "", officeNumber: "", contactNumber: "", onBoardingDate: new Date(), // or `null` if you want it empty organizationSize: "", industryId: "", // should be a valid UUID if pre-filled reference: "", }; export const subscriptionSchema = z.object({ tenantId: z.string().uuid("Invalid tenant ID"), planId: z.string().uuid("Invalid plan ID"), currencyId: z.string().uuid("Invalid currency ID"), maxUsers: z .number({ invalid_type_error: "Max users must be a number" }) .min(1, "At least one user is required"), frequency: z .number({ invalid_type_error: "Frequency must be a number" }) .min(1, "Frequency must be at least 1"), isTrial: z.boolean(), autoRenew: z.boolean(), }); export const subscriptionDefaultValues = { tenantId: "", // should be a UUID planId: "", // should be a UUID currencyId: "", // should be a UUID maxUsers: 1, frequency: 1, isTrial: false, autoRenew: false, }; export const getStepFields = (stepIndex) => { const stepFieldMap = { 0: [ "firstName", "lastName", "email", "contactNumber", "billingAddress", ], 1: [ "organizationName", "officeNumber", "domainName", "description", "onBoardingDate", "organizationSize", "taxId", "industryId", "reference", "logoImage", ], 2: [ "tenantId", "planId", "currencyId", "maxUsers", "frequency", "isTrial", "autoRenew", ], }; return stepFieldMap[stepIndex] || []; };