141 lines
4.2 KiB
JavaScript

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.preprocess((val) => {
if (typeof val === "string" && val.includes("-")) {
const [day, month, year] = val.split("-");
return new Date(`${year}-${month}-${day}`);
}
return val;
}, z.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().min(1,{message:"Please select Plan"}),
currencyId: z.string().uuid("Invalid currency"),
maxUsers: z
.number({ invalid_type_error: " Must be a number" })
.min(1, "Team size is required and must be greater than zero"),
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: "",
planId: "",
currencyId: "",
maxUsers: 1,
frequency: 1,
isTrial: false,
autoRenew: false,
};
export const filterSchema = z.object({
industryIds: z.array(z.string()).optional(),
// createdByIds: z.array(z.string()).optional(),
tenantStatusIds: z.array(z.string()).optional(),
references: z.array(z.string()).optional(),
startDate: z.string().optional(),
endDate: z.string().optional(),
});
export const defaultFilterValues = {
industryIds: [],
// createdByIds: [],
tenantStatusIds: [],
references: [],
startDate:null,
endDate:null,
};
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] || [];
};
export const EditTenant = z.object({
firstName: z.string().min(1, { message: "First Name is required!" }),
lastName: z.string().min(1, { message: "Last Name is required!" }),
description: z.string().optional(),
domainName: z.string().min(1, { message: "Domain Name is required!" }),
billingAddress: z.string().min(1, { message: "Billing Address is required!" }),
taxId: z.string().min(1, { message: "Tax ID is required!" }),
logoImage: z.string().optional(),
officeNumber: z.string().min(1, { message: "Office Number is required!" }),
contactNumber: z
.string()
.min(10, { message: "Contact Number must be at least 10 digits!" }),
organizationSize: z.string().min(1, { message: "Organization Size is required!" }),
industryId: z.string().min(1,{ message: "Invalid Industry ID!" }),
reference: z.string().optional(),
});