UNPKG

@dvsa/smc-encounter-schema

Version:

Schemas required for Encounter submission as well as custom validators ## Developing ### Pre-requisites

1 lines 1.65 kB
'use strict';var classValidator=require('class-validator');var m=Object.defineProperty;var i=(r,t)=>m(r,"name",{value:t,configurable:true});var n=class r{static{i(this,"CurrentEncounterLevel");}static instance;level;officerType;requestType;constructor(){this.level=1,this.officerType="ANY",this.requestType="C";}static getInstance(){return r.instance||(r.instance=new r),r.instance}getEncounterType(){return this.level}setEncounterType(t){this.level=t;}getExaminerOfficerType(){return this.officerType}setExaminerOfficerType(t){this.officerType=t;}getRequestType(){return this.requestType}setRequestType(t){this.requestType=t;}isDeletedEncounter(){return this.requestType==="D"}};function b(r){return t=>{classValidator.registerDecorator({name:"ValidateMotorObject",target:t,propertyName:"motor",options:r,validator:{validate(s,l){let e=l.object;if(!e)return false;let c=!!e.nationality,d=!!e.vehicleIdType,p=!!e.roadsideVehicleType;if(!e.vehicleId||!c||!e.nationality?.irlCode||!d||!e.vehicleIdType?.shortCode||!p)return false;let u=e.vehicleId.toLowerCase(),T=e.vehicleIdType.shortCode.toLowerCase();e.nationality.irlCode.toLowerCase();let f=e.roadsideVehicleType.tractorIndicator?.toUpperCase()==="N",o=0,a=n.getInstance().getEncounterType();return ["vrm","vin"].includes(T)||o++,a!==2&&e.odometerReading==null&&o++,(a===2||e.actionCode?.toUpperCase()==="C")&&e.odometerReadingUnit==null&&o++,f&&o++,/^[a-z0-9]+$/i.test(u)||o++,o===0},defaultMessage(s){return "Motor requires VehicleId, Nationality, VehicleIdType and RoadsideVehicleType. Odometer or format may also be invalid."}}});}}i(b,"ValidateMotorObject");exports.ValidateMotorObject=b;