Untitled
unknown
plain_text
a year ago
3.4 kB
14
Indexable
import Joi from 'joi';
// Define the base schema for MandatoryCover
const mandatoryCoverSchema = Joi.object({
coverCode: Joi.string().valid('CT', 'PP', 'BG').required(),
coverIncluded: Joi.boolean().required(),
coverageLimit: Joi.number().required(),
coverageRange: Joi.string().optional()
});
// Define the schema for coverageDetails
export const CreateHomeFormSchema = Joi.object({
coverageDetails: Joi.object({
ownershipCode: Joi.number().valid(1, 2).required(),
nationalityCode: Joi.number().required(),
mandatoryCovers: Joi.array().items(
Joi.object({
coverCode: Joi.string().valid('CT', 'PP', 'BG').required(),
coverIncluded: Joi.boolean().required(),
coverageLimit: Joi.number().required(),
coverageRange: Joi.string().optional()
})
).required().when('ownershipCode', {
switch: [
{
is: 1,
then: Joi.array().items(
Joi.object({
coverCode: Joi.string().valid('CT').required(),
coverIncluded: Joi.boolean().required(),
coverageLimit: Joi.number().required(),
coverageRange: Joi.string().optional()
}),
Joi.object({
coverCode: Joi.string().valid('PP').required(),
coverIncluded: Joi.boolean().required(),
coverageLimit: Joi.number().required(),
coverageRange: Joi.string().optional()
}),
Joi.object({
coverCode: Joi.string().valid('BG').required(),
coverIncluded: Joi.boolean().required(),
coverageLimit: Joi.number().required(),
coverageRange: Joi.string().optional()
}),
Joi.array().items(
Joi.object({
coverCode: Joi.string().valid('BG').required(),
coverIncluded: Joi.boolean().required(),
coverageLimit: Joi.number().required(),
coverageRange: Joi.string().optional()
}),
Joi.object({
coverCode: Joi.string().valid('CT').required(),
coverIncluded: Joi.boolean().required(),
coverageLimit: Joi.number().required(),
coverageRange: Joi.string().optional()
}),
Joi.object({
coverCode: Joi.string().valid('PP').required(),
coverIncluded: Joi.boolean().required(),
coverageLimit: Joi.number().required(),
coverageRange: Joi.string().optional()
})
)
)
},
{
is: 2,
then: Joi.array().items(
Joi.object({
coverCode: Joi.string().valid('CT').required(),
coverIncluded: Joi.boolean().required(),
coverageLimit: Joi.number().required(),
coverageRange: Joi.string().optional()
}),
Joi.object({
coverCode: Joi.string().valid('PP').required(),
coverIncluded: Joi.boolean().required(),
coverageLimit: Joi.number().required(),
coverageRange: Joi.string().optional()
})
)
}
]
})
}).required().error(errors => {
mapErrorMessages(errors, 'Coverage details is required.')
});
Editor is loading...
Leave a Comment