UNPKG

@dvsa/smc-encounter-schema

Version:

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

1 lines 8.52 kB
'use strict';var classTransformer=require('class-transformer'),classValidator=require('class-validator');var V=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var n=(t,r)=>V(t,"name",{value:r,configurable:true});var e=(t,r,l,s)=>{for(var E=s>1?void 0:s?Y(r,l):r,N=t.length-1,O;N>=0;N--)(O=t[N])&&(E=(s?O(r,l,E):O(E))||E);return s&&E&&V(r,l,E),E};var L=class t{static{n(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(r){this.level=r;}getExaminerOfficerType(){return this.officerType}setExaminerOfficerType(r){this.officerType=r;}getRequestType(){return this.requestType}setRequestType(r){this.requestType=r;}isDeletedEncounter(){return this.requestType==="D"}};var d=class{validate(r,l){let s=l.constraints[0],E=L.getInstance(),N=E.getEncounterType(),O=E.getExaminerOfficerType();return s.level===0||s.exceptions?.includes(N)||s.level!==void 0&&s.level>N||s.roles?.length&&!s.roles.includes(O)&&!s.roles.includes("ANY")?true:r==null?false:typeof r=="string"?s.allowEmpty?true:r.trim().length>0:Array.isArray(r)?r.length===0?false:r.every((_,W)=>_==null?false:Object.entries(_).every(([X,h])=>typeof h=="string"?h.trim().length>0:h!=null)):true}};n(d,"MandatoryFieldConstraint"),d=e([classValidator.ValidatorConstraint({name:"MandatoryField",async:false})],d);function i(t,r){return (l,s)=>{classValidator.registerDecorator({name:"MandatoryField",target:l.constructor,propertyName:s,constraints:[t],options:r,validator:d});}}n(i,"MandatoryField");var f=class{validate(r,l){return r==null?true:/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(r)}defaultMessage(r){return `${r.property} must match format YYYY-MM-DD HH:mm:ss`}};n(f,"UKDateFormatValidator"),f=e([classValidator.ValidatorConstraint({name:"ValidateUKDateFormat",async:false})],f);function y(t){return (r,l)=>{classValidator.registerDecorator({name:"ValidateUKDateFormat",target:r.constructor,propertyName:l,options:t,validator:f});}}n(y,"ValidateUKDateFormat");function I(t){return (r,l)=>{classValidator.registerDecorator({name:"isNullableNumber",target:r.constructor,propertyName:l,options:t,validator:{validate(s,E){return s===null||typeof s=="number"},defaultMessage(s){return `${s.property} must be a number or null`}}});}}n(I,"IsNullableNumber");function b(t){return (r,l)=>{classValidator.registerDecorator({name:"isNullableString",target:r.constructor,propertyName:l,options:t,validator:{validate(s,E){return s===null||typeof s=="string"},defaultMessage(s){return `${s.property} must be a string or null`}}});}}n(b,"IsNullableString");function U(){return classTransformer.Transform(({value:t})=>typeof t=="string"?t.toUpperCase():t)}n(U,"ToUpperCase");var c=class{static{n(this,"CommonPostAddress");}postTown;postcode};e([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"]}),U(),i({level:4},{groups:["createEncounter"]})],c.prototype,"postTown",2),e([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"]}),U()],c.prototype,"postcode",2);var u=class extends c{static{n(this,"RteArea");}code;areaDescription;address1;address2;address3;address4;email;enforcementArea};e([classValidator.IsOptional()],u.prototype,"code",2),e([classValidator.IsOptional()],u.prototype,"areaDescription",2),e([classValidator.IsOptional()],u.prototype,"address1",2),e([classValidator.IsOptional()],u.prototype,"address2",2),e([classValidator.IsOptional()],u.prototype,"address3",2),e([classValidator.IsOptional()],u.prototype,"address4",2),e([classValidator.IsOptional()],u.prototype,"email",2),e([classValidator.IsOptional()],u.prototype,"enforcementArea",2);var o=class{static{n(this,"GenericContact");}manager;costCentre;csiGeneratedNumber;userId;firstName;surname;email;rarCode;status;gvtsMarker;examinerType;ehrEmployeeId;workTelephone;mobileTelephone;version;rteArea};e([classValidator.IsOptional()],o.prototype,"manager",2),e([classValidator.IsOptional()],o.prototype,"costCentre",2),e([classValidator.IsOptional()],o.prototype,"csiGeneratedNumber",2),e([classValidator.IsOptional()],o.prototype,"userId",2),e([classValidator.IsOptional()],o.prototype,"firstName",2),e([classValidator.IsOptional()],o.prototype,"surname",2),e([classValidator.IsOptional()],o.prototype,"email",2),e([I()],o.prototype,"rarCode",2),e([b()],o.prototype,"status",2),e([b()],o.prototype,"gvtsMarker",2),e([classValidator.IsOptional()],o.prototype,"examinerType",2),e([classValidator.IsOptional()],o.prototype,"ehrEmployeeId",2),e([classValidator.IsOptional()],o.prototype,"workTelephone",2),e([classValidator.IsOptional()],o.prototype,"mobileTelephone",2),e([b()],o.prototype,"version",2),e([classValidator.ValidateIf((r,l)=>l!=null),classValidator.ValidateNested(),classTransformer.Type(()=>u)],o.prototype,"rteArea",2);var R=class{static{n(this,"CommonDeletion");}description;deletionMarker};e([i({level:4},{groups:["createEncounter"]})],R.prototype,"description",2),e([i({level:4},{groups:["createEncounter"]})],R.prototype,"deletionMarker",2);var A=class extends R{static{n(this,"CommonData");}sequenceNumber};e([i({level:4},{groups:["createEncounter"]})],A.prototype,"sequenceNumber",2);var C=class extends A{static{n(this,"Laden");}code};e([i({level:4},{groups:["createEncounter"]})],C.prototype,"code",2);var a=class{static{n(this,"TaxForm");}id;dateSighted;location;dateInterviewed;interviewee;intervieweeDob;vehicleObservedState;vehicleLaden;usedOnBehalf;registeredKeeper;mruIssuingOfficer;status;dateCompleted;interviewNotes;clientGuid};e([i({level:4},{groups:["createEncounter"]})],a.prototype,"id",2),e([i({level:4},{groups:["createEncounter"]}),y({groups:["createEncounter"]})],a.prototype,"dateSighted",2),e([i({level:4},{groups:["createEncounter"]}),classValidator.MaxLength(140,{groups:["createEncounter"],message:"Location must be no more than 140 characters in length"})],a.prototype,"location",2),e([i({level:4},{groups:["createEncounter"]}),y({groups:["createEncounter"]})],a.prototype,"dateInterviewed",2),e([i({level:4},{groups:["createEncounter"]}),classValidator.MaxLength(100,{groups:["createEncounter"],message:"Interviewee must be no more than 100 characters in length"})],a.prototype,"interviewee",2),e([i({level:4},{groups:["createEncounter"]}),classValidator.Matches(/^\d{4}-\d{2}-\d{2}$/,{groups:["createEncounter"],message:"intervieweeDob must match format YYYY-MM-DD"})],a.prototype,"intervieweeDob",2),e([i({level:4},{groups:["createEncounter"]}),classValidator.MaxLength(1,{groups:["createEncounter"],message:"Vehicle Observed State must be no more than 1 characters in length"})],a.prototype,"vehicleObservedState",2),e([classValidator.ValidateNested(),classTransformer.Type(()=>C),i({level:4},{groups:["createEncounter"]})],a.prototype,"vehicleLaden",2),e([i({level:4},{groups:["createEncounter"]}),classValidator.MaxLength(160,{groups:["createEncounter"],message:"Used on behalf must be no more than 160 characters in length"})],a.prototype,"usedOnBehalf",2),e([i({level:4},{groups:["createEncounter"]}),classValidator.MaxLength(1,{groups:["createEncounter"],message:"Registered keeper must be no more than 1 characters in length"})],a.prototype,"registeredKeeper",2),e([classValidator.ValidateNested(),classTransformer.Type(()=>o),i({level:4},{groups:["createEncounter"]})],a.prototype,"mruIssuingOfficer",2),e([i({level:4},{groups:["createEncounter"]}),classValidator.MaxLength(1,{groups:["createEncounter"],message:"Status must be no more than 1 characters in length"})],a.prototype,"status",2),e([i({level:4},{groups:["createEncounter"]}),y({groups:["createEncounter"]})],a.prototype,"dateCompleted",2),e([i({level:4},{groups:["createEncounter"]}),classValidator.MaxLength(500,{groups:["createEncounter"],message:"Interview notes must be no more than 500 characters in length"})],a.prototype,"interviewNotes",2),e([i({level:4},{groups:["createEncounter"]}),classValidator.MaxLength(36,{groups:["createEncounter"],message:"Client GUID must be no more than 36 characters in length"})],a.prototype,"clientGuid",2);exports.TaxForm=a;