UNPKG

@dvsa/smc-encounter-schema

Version:

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

1 lines 3.09 kB
'use strict';var classValidator=require('class-validator'),classTransformer=require('class-transformer');var O=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var i=(t,e)=>O(t,"name",{value:e,configurable:true});var n=(t,e,p,r)=>{for(var s=r>1?void 0:r?h(e,p):e,u=t.length-1,c;u>=0;u--)(c=t[u])&&(s=(r?c(e,p,s):c(s))||s);return r&&s&&O(e,p,s),s};var m=class t{static{i(this,"CurrentEncounterLevel");}static instance;level;officerType;requestType;constructor(){this.level=1,this.officerType="ANY",this.requestType="C";}static getInstance(){return t.instance||(t.instance=new t),t.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,p){let r=p.constraints[0],s=m.getInstance(),u=s.getEncounterType(),c=s.getExaminerOfficerType();return r.level===0||r.exceptions?.includes(u)||r.level!==void 0&&r.level>u||r.roles?.length&&!r.roles.includes(c)&&!r.roles.includes("ANY")?true:e==null?false:typeof e=="string"?r.allowEmpty?true:e.trim().length>0:Array.isArray(e)?e.length===0?false:e.every((g,U)=>g==null?false:Object.entries(g).every(([v,f])=>typeof f=="string"?f.trim().length>0:f!=null)):true}};i(a,"MandatoryFieldConstraint"),a=n([classValidator.ValidatorConstraint({name:"MandatoryField",async:false})],a);function y(t,e){return (p,r)=>{classValidator.registerDecorator({name:"MandatoryField",target:p.constructor,propertyName:r,constraints:[t],options:e,validator:a});}}i(y,"MandatoryField");function T(){return classTransformer.Transform(({value:t})=>typeof t=="string"?t.toUpperCase():t)}i(T,"ToUpperCase");var E=class{static{i(this,"CommonPostAddress");}postTown;postcode};n([classValidator.Matches(/^(?!-|\s)(?!.*[&‘’',.-]{2})[A-Za-z0-9&‘’',. -]{0,20}$/,{message:"Must match pattern",groups:["createEncounter"]}),classValidator.MaxLength(20,{message:"Must be no more than 20 characters in length",groups:["createEncounter"]}),T(),y({level:4},{groups:["createEncounter"]})],E.prototype,"postTown",2),n([classValidator.IsOptional(),classValidator.Matches(/^[A-Za-z0-9 -]*$/,{message:"Must match pattern",groups:["createEncounter"]}),classValidator.MaxLength(8,{message:"Must be no more than 8 characters in length",groups:["createEncounter"]}),T()],E.prototype,"postcode",2);var o=class extends E{static{i(this,"RteArea");}code;areaDescription;address1;address2;address3;address4;email;enforcementArea};n([classValidator.IsOptional()],o.prototype,"code",2),n([classValidator.IsOptional()],o.prototype,"areaDescription",2),n([classValidator.IsOptional()],o.prototype,"address1",2),n([classValidator.IsOptional()],o.prototype,"address2",2),n([classValidator.IsOptional()],o.prototype,"address3",2),n([classValidator.IsOptional()],o.prototype,"address4",2),n([classValidator.IsOptional()],o.prototype,"email",2),n([classValidator.IsOptional()],o.prototype,"enforcementArea",2);exports.RteArea=o;