141 lines
4.2 KiB
JavaScript
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(),
|
|
});
|