made add parent company details and upload supporting documents
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { z } from "zod";
|
||||
|
||||
// Allowed document types (must match your DocumentType master table IDs)
|
||||
// REQUIRED_DOC_TYPES (use your mapping)
|
||||
export const REQUIRED_DOC_TYPES = {
|
||||
GST: 1,
|
||||
PAN: 2,
|
||||
@@ -8,6 +8,44 @@ export const REQUIRED_DOC_TYPES = {
|
||||
AADHAAR: 4,
|
||||
};
|
||||
|
||||
export const parentCompanySchema = z.object({
|
||||
companyName: z.string().min(1, "Parent company name is required"),
|
||||
address1: z.string().min(1, "Address1 is required"),
|
||||
address2: z.string().optional(),
|
||||
|
||||
// Parent companies DO NOT need this
|
||||
hostRefNumber: z.string().optional(),
|
||||
|
||||
cityXid: z.number().min(1, "City is required"),
|
||||
stateXid: z.number().min(1, "State is required"),
|
||||
countryXid: z.number().min(1, "Country is required"),
|
||||
|
||||
pinCode: z.string().min(4, "Pincode/Zipcode is required"),
|
||||
|
||||
logoPath: z.string().optional(),
|
||||
|
||||
// Parent companies do NOT need this
|
||||
isSubsidairy: z.boolean().optional(),
|
||||
|
||||
registrationNumber: z.string().min(1, "Registration number is required"),
|
||||
panNumber: z.string().min(1, "PAN number is required"),
|
||||
gstNumber: z.string().optional(),
|
||||
|
||||
formationDate: z.string().refine((val) => !isNaN(Date.parse(val)), {
|
||||
message: "Formation date must be a valid date",
|
||||
}),
|
||||
|
||||
companyType: z.string().min(1, "Company type is required"),
|
||||
websiteUrl: z.string().url().optional(),
|
||||
instagramUrl: z.string().url().optional(),
|
||||
facebookUrl: z.string().url().optional(),
|
||||
linkedinUrl: z.string().url().optional(),
|
||||
twitterUrl: z.string().url().optional(),
|
||||
|
||||
currencyXid: z.number().min(1, "Currency is required"),
|
||||
});
|
||||
|
||||
|
||||
export const hostCompanyDetailsSchema = z.object({
|
||||
companyName: z.string().min(1, "Company name is required"),
|
||||
address1: z.string().min(1, "Address1 is required"),
|
||||
@@ -26,20 +64,23 @@ export const hostCompanyDetailsSchema = z.object({
|
||||
message: "Formation date must be a valid date",
|
||||
}),
|
||||
companyType: z.string().min(1, "Company type is required"),
|
||||
websiteUrl: z.url().optional(),
|
||||
instagramUrl: z.url().optional(),
|
||||
facebookUrl: z.url().optional(),
|
||||
linkedinUrl: z.url().optional(),
|
||||
twitterUrl: z.url().optional(),
|
||||
websiteUrl: z.string().url().optional(),
|
||||
instagramUrl: z.string().url().optional(),
|
||||
facebookUrl: z.string().url().optional(),
|
||||
linkedinUrl: z.string().url().optional(),
|
||||
twitterUrl: z.string().url().optional(),
|
||||
currencyXid: z.number().min(1, "Currency is required"),
|
||||
|
||||
// Parent company nested when this is subsidiary
|
||||
parentCompany: parentCompanySchema.optional(),
|
||||
});
|
||||
|
||||
// Validation for documents with file data (base64)
|
||||
// Documents schema: added optional owner
|
||||
export const hostDocumentsSchema = z.array(
|
||||
z.object({
|
||||
documentTypeXid: z.number(),
|
||||
documentName: z.string(),
|
||||
fileData: z.string().min(1, "File data is required"), // base64 encoded file
|
||||
contentType: z.string().optional(), // e.g., "application/pdf", "image/png"
|
||||
fieldName: z.string(), // metadata must include the fieldName so we can map files
|
||||
owner: z.enum(['host', 'parent']).optional(), // optional, default to host
|
||||
})
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user