Untitled

 avatar
unknown
plain_text
a year ago
3.4 kB
11
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