@dvsa/smc-encounter-schema
Version:
Schemas required for Encounter submission as well as custom validators ## Developing ### Pre-requisites
1 lines • 3.94 kB
JavaScript
;var classTransformer=require('class-transformer'),classValidator=require('class-validator');var O=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var s=(r,e)=>O(r,"name",{value:e,configurable:true});var t=(r,e,o,n)=>{for(var E=n>1?void 0:n?U(e,o):e,T=r.length-1,u;T>=0;T--)(u=r[T])&&(E=(n?u(e,o,E):u(E))||E);return n&&E&&O(e,o,E),E};var p=class r{static{s(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(e){this.level=e;}getExaminerOfficerType(){return this.officerType}setExaminerOfficerType(e){this.officerType=e;}getRequestType(){return this.requestType}setRequestType(e){this.requestType=e;}isDeletedEncounter(){return this.requestType==="D"}};var a=class{validate(e,o){let n=o.constraints[0],E=p.getInstance(),T=E.getEncounterType(),u=E.getExaminerOfficerType();return n.level===0||n.exceptions?.includes(T)||n.level!==void 0&&n.level>T||n.roles?.length&&!n.roles.includes(u)&&!n.roles.includes("ANY")?true:e==null?false:typeof e=="string"?n.allowEmpty?true:e.trim().length>0:Array.isArray(e)?e.length===0?false:e.every((N,V)=>N==null?false:Object.entries(N).every(([D,R])=>typeof R=="string"?R.trim().length>0:R!=null)):true}};s(a,"MandatoryFieldConstraint"),a=t([classValidator.ValidatorConstraint({name:"MandatoryField",async:false})],a);function i(r,e){return (o,n)=>{classValidator.registerDecorator({name:"MandatoryField",target:o.constructor,propertyName:n,constraints:[r],options:e,validator:a});}}s(i,"MandatoryField");function g(){return classTransformer.Transform(({value:r})=>typeof r=="string"?r.toUpperCase():r)}s(g,"ToUpperCase");var c=class{static{s(this,"JourneyType");}generatedNumber;rank;deletionMarker;description};t([i({level:4},{groups:["createEncounter"]})],c.prototype,"generatedNumber",2),t([i({level:4},{groups:["createEncounter"]})],c.prototype,"rank",2),t([i({level:4},{groups:["createEncounter"]})],c.prototype,"deletionMarker",2),t([i({level:4},{groups:["createEncounter"]})],c.prototype,"description",2);var f=class{static{s(this,"PortOfExit");}portCode;portDescription;deletionMarker};t([classTransformer.Transform(({value:e})=>e?.toString()),i({level:4},{groups:["createEncounter"]})],f.prototype,"portCode",2),t([i({level:4},{groups:["createEncounter"]})],f.prototype,"portDescription",2),t([i({level:4},{groups:["createEncounter"]})],f.prototype,"deletionMarker",2);var l=class l{static{s(this,"Journey");}static REG_EX_JOURNEY=/^(?!-|\\s)(?!.*[&’',.\-]{2})[A-Za-z0-9&‘’',. \-]*$/;goodsCarried;journeyStartLctn;journeyEndLocatn;journeyType;portOfExit};t([classValidator.ValidateIf(()=>p.getInstance().getExaminerOfficerType()==="TRAFFIC"),classValidator.Matches(l.REG_EX_JOURNEY,{groups:["createEncounter"]}),g(),i({level:4,roles:["TRAFFIC"]},{groups:["createEncounter"]})],l.prototype,"goodsCarried",2),t([classValidator.ValidateIf(()=>p.getInstance().getExaminerOfficerType()==="TRAFFIC"),classValidator.Matches(l.REG_EX_JOURNEY,{groups:["createEncounter"]}),g(),i({level:4,roles:["TRAFFIC"]},{groups:["createEncounter"]})],l.prototype,"journeyStartLctn",2),t([classValidator.ValidateIf(()=>p.getInstance().getExaminerOfficerType()==="TRAFFIC"),classValidator.Matches(l.REG_EX_JOURNEY,{groups:["createEncounter"]}),g(),i({level:4,roles:["TRAFFIC"]},{groups:["createEncounter"]})],l.prototype,"journeyEndLocatn",2),t([classValidator.ValidateIf(()=>p.getInstance().getExaminerOfficerType()==="TRAFFIC"),classValidator.ValidateNested(),classTransformer.Type(()=>c),i({level:4,roles:["TRAFFIC"]},{groups:["createEncounter"]})],l.prototype,"journeyType",2),t([classValidator.ValidateIf((e,o)=>o!=null),classValidator.IsOptional(),classValidator.ValidateNested(),classTransformer.Type(()=>f)],l.prototype,"portOfExit",2);var F=l;exports.Journey=F;