Untitled

 avatar
unknown
plain_text
a year ago
2.1 kB
10
Indexable
import Joi from 'joi';
import { CoverCode } from './path-to-cover-code';  // Adjust the import path as needed

const BuildingSchema = Joi.object({
    city: Joi.string().required(),
    area: Joi.string().required(),
    propertyTypeCode: Joi.number().required(),
    buildingName: Joi.string().required(),
    flatVillaNo: Joi.number().required(),
    poBox: Joi.number().required(),
    numberOfFloors: Joi.number().required(),
    numberOfBedrooms: Joi.number().required(),
    latitude: Joi.number().required(),
    longitude: Joi.number().required(),
    street: Joi.string().required(),
    zone: Joi.string().required(),
    grl: Joi.string().required(),
    infoMapStatus: Joi.string().required(),
    effectiveDate: Joi.string().required(),
    mortgageCode: Joi.number().required(),
    mortgage: Joi.string().required(),
});

const CoverageDetailsSchema = Joi.object({
    listedItems: Joi.object({
        contents: Joi.array().items(
            Joi.object({
                coverDescription: Joi.string().required(),
                coverageLimit: Joi.number().required(),
            })
        ).optional(),
        personalPossessions: Joi.array().items(
            Joi.object({
                coverDescription: Joi.string().required(),
                coverageLimit: Joi.number().required(),
            })
        ).optional(),
    }).optional(),
    mandatoryCovers: Joi.array().items(
        Joi.object({
            coverCode: Joi.string().valid(CoverCode.CONTENTS, CoverCode.PERSONAL_POSESSIONS, CoverCode.BUILDING).required(),
            coverIncluded: Joi.boolean().optional(),
            coverageLimit: Joi.number().required(),
            coverageRange: Joi.string().optional(),
        })
    ).required(),
}).optional();

export const UpdateHomeFormSchema = Joi.object({
    building: BuildingSchema,
    coverageDetails: CoverageDetailsSchema,
}).xor('building', 'coverageDetails');  // Ensure that either 'building' or 'coverageDetails' is required, but not both
Editor is loading...
Leave a Comment