made add parent company details and upload supporting documents
This commit is contained in:
8
src/common/utils/constants/common.constant.ts
Normal file
8
src/common/utils/constants/common.constant.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
export const ROLE = {
|
||||
MINGLAR_ADMIN: 1,
|
||||
CO_ADMIN: 2,
|
||||
ACCOUNT_MANAGER: 3,
|
||||
HOST: 4,
|
||||
OPERATOR: 5,
|
||||
USER: 6
|
||||
}
|
||||
24
src/common/utils/constants/host.constant.ts
Normal file
24
src/common/utils/constants/host.constant.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
export const HOST_STATUS_INTERNAL = {
|
||||
HOST_SUBMITTED: "Host Submitted",
|
||||
HOST_TO_UPDATE: "Host To Update",
|
||||
REJECTED: "Rejected",
|
||||
APPROVED: "Approved",
|
||||
DRAFT: "Draft",
|
||||
}
|
||||
|
||||
export const HOST_STATUS_DISPLAY = {
|
||||
DRAFT: "Draft",
|
||||
UNDER_REVIEW: "Under Review",
|
||||
ENHANCING: "Enhancing",
|
||||
REJECTED: "Rejected",
|
||||
APPROVED: "Approved",
|
||||
}
|
||||
|
||||
export const STEPPER = {
|
||||
NOT_SUBMITTED: 1,
|
||||
UNDER_REVIEW: 2,
|
||||
COMPANY_DETAILS_APPROVED: 3,
|
||||
BANK_DETAILS_UPDATED: 4,
|
||||
AGREEMENT_ACCEPTED: 5,
|
||||
REJECTED: 6
|
||||
}
|
||||
17
src/common/utils/constants/minglar.constant.ts
Normal file
17
src/common/utils/constants/minglar.constant.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
export const MINGLAR_STATUS_INTERNAL = {
|
||||
ADMIN_TO_REVIEW: "Admin To Review",
|
||||
ADMIN_REJECTED: "Admin Rejected",
|
||||
AM_NOT_ASSIGNED: "AM Not Assigned",
|
||||
AM_TO_REVIEW: "AM To Review",
|
||||
AM_REJECTED: "AM Rejected",
|
||||
AM_APPROVED: "AM Approved"
|
||||
}
|
||||
|
||||
export const MINGLAR_STATUS_DISPLAY = {
|
||||
NEW: "New",
|
||||
AM_NOT_ASSIGNED: "AM Not Assigned",
|
||||
TO_REVIEW: "To Review",
|
||||
ENHANCING: "Enhancing",
|
||||
APPROVED: "Approved",
|
||||
REJECTED: "Rejected",
|
||||
}
|
||||
@@ -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