@dvsa/smc-encounter-schema
Version:
Schemas required for Encounter submission as well as custom validators ## Developing ### Pre-requisites
1 lines • 7.39 kB
JavaScript
;var classTransformer=require('class-transformer'),classValidator=require('class-validator');var D=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var s=(n,e)=>D(n,"name",{value:e,configurable:true});var r=(n,e,t,i)=>{for(var u=i>1?void 0:i?Y(e,t):e,c=n.length-1,N;c>=0;c--)(N=n[c])&&(u=(i?N(e,t,u):N(u))||u);return i&&u&&D(e,t,u),u};var d=class{validate(e,t){return e==null?true:/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(e)}defaultMessage(e){return `${e.property} must match format YYYY-MM-DD HH:mm:ss`}};s(d,"UKDateFormatValidator"),d=r([classValidator.ValidatorConstraint({name:"ValidateUKDateFormat",async:false})],d);function I(n){return (e,t)=>{classValidator.registerDecorator({name:"ValidateUKDateFormat",target:e.constructor,propertyName:t,options:n,validator:d});}}s(I,"ValidateUKDateFormat");function U(n){return (e,t)=>{classValidator.registerDecorator({name:"isNullableNumber",target:e.constructor,propertyName:t,options:n,validator:{validate(i,u){return i===null||typeof i=="number"},defaultMessage(i){return `${i.property} must be a number or null`}}});}}s(U,"IsNullableNumber");function V(n){return (e,t)=>{classValidator.registerDecorator({name:"isNullableString",target:e.constructor,propertyName:t,options:n,validator:{validate(i,u){return i===null||typeof i=="string"},defaultMessage(i){return `${i.property} must be a string or null`}}});}}s(V,"IsNullableString");var y=class n{static{s(this,"CurrentEncounterLevel");}static instance;level;officerType;requestType;constructor(){this.level=1,this.officerType="ANY",this.requestType="C";}static getInstance(){return n.instance||(n.instance=new n),n.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 E=class{validate(e,t){let i=t.constraints[0],u=y.getInstance(),c=u.getEncounterType(),N=u.getExaminerOfficerType();return i.level===0||i.exceptions?.includes(c)||i.level!==void 0&&i.level>c||i.roles?.length&&!i.roles.includes(N)&&!i.roles.includes("ANY")?true:e==null?false:typeof e=="string"?i.allowEmpty?true:e.trim().length>0:Array.isArray(e)?e.length===0?false:e.every((M,X)=>M==null?false:Object.entries(M).every(([G,x])=>typeof x=="string"?x.trim().length>0:x!=null)):true}};s(E,"MandatoryFieldConstraint"),E=r([classValidator.ValidatorConstraint({name:"MandatoryField",async:false})],E);function _(n,e){return (t,i)=>{classValidator.registerDecorator({name:"MandatoryField",target:t.constructor,propertyName:i,constraints:[n],options:e,validator:E});}}s(_,"MandatoryField");function L(){return classTransformer.Transform(({value:n})=>typeof n=="string"?n.toUpperCase():n)}s(L,"ToUpperCase");var T=class{static{s(this,"CommonPostAddress");}postTown;postcode};r([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"]}),L(),_({level:4},{groups:["createEncounter"]})],T.prototype,"postTown",2),r([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"]}),L()],T.prototype,"postcode",2);var a=class extends T{static{s(this,"RteArea");}code;areaDescription;address1;address2;address3;address4;email;enforcementArea};r([classValidator.IsOptional()],a.prototype,"code",2),r([classValidator.IsOptional()],a.prototype,"areaDescription",2),r([classValidator.IsOptional()],a.prototype,"address1",2),r([classValidator.IsOptional()],a.prototype,"address2",2),r([classValidator.IsOptional()],a.prototype,"address3",2),r([classValidator.IsOptional()],a.prototype,"address4",2),r([classValidator.IsOptional()],a.prototype,"email",2),r([classValidator.IsOptional()],a.prototype,"enforcementArea",2);var o=class{static{s(this,"GenericContact");}manager;costCentre;csiGeneratedNumber;userId;firstName;surname;email;rarCode;status;gvtsMarker;examinerType;ehrEmployeeId;workTelephone;mobileTelephone;version;rteArea};r([classValidator.IsOptional()],o.prototype,"manager",2),r([classValidator.IsOptional()],o.prototype,"costCentre",2),r([classValidator.IsOptional()],o.prototype,"csiGeneratedNumber",2),r([classValidator.IsOptional()],o.prototype,"userId",2),r([classValidator.IsOptional()],o.prototype,"firstName",2),r([classValidator.IsOptional()],o.prototype,"surname",2),r([classValidator.IsOptional()],o.prototype,"email",2),r([U()],o.prototype,"rarCode",2),r([V()],o.prototype,"status",2),r([V()],o.prototype,"gvtsMarker",2),r([classValidator.IsOptional()],o.prototype,"examinerType",2),r([classValidator.IsOptional()],o.prototype,"ehrEmployeeId",2),r([classValidator.IsOptional()],o.prototype,"workTelephone",2),r([classValidator.IsOptional()],o.prototype,"mobileTelephone",2),r([V()],o.prototype,"version",2),r([classValidator.ValidateIf((e,t)=>t!=null),classValidator.ValidateNested(),classTransformer.Type(()=>a)],o.prototype,"rteArea",2);var m=class{static{s(this,"PaymentReversalReason");}code;description;sequenceNum;deletionMarker;usageInd};r([classValidator.IsOptional()],m.prototype,"code",2),r([classValidator.IsOptional()],m.prototype,"description",2),r([classValidator.IsOptional()],m.prototype,"sequenceNum",2),r([classValidator.IsOptional()],m.prototype,"deletionMarker",2),r([classValidator.IsOptional()],m.prototype,"usageInd",2);var g=class{static{s(this,"PaymentStatus");}code;description;sequenceNum;deletionMarker;cashFlag;callCentreFlag;chequeFlag};r([classValidator.IsOptional()],g.prototype,"description",2),r([classValidator.IsOptional()],g.prototype,"sequenceNum",2),r([classValidator.IsOptional()],g.prototype,"deletionMarker",2),r([classValidator.IsOptional()],g.prototype,"cashFlag",2),r([classValidator.IsOptional()],g.prototype,"callCentreFlag",2),r([classValidator.IsOptional()],g.prototype,"chequeFlag",2);var l=class{static{s(this,"ActualPayment");}paymentDate;inputDate;amount;paymentMethod;sortCode;chequeNumber;reversalDate;recorder;reverser;pvrCode;clientGuid;callCentreReference;paymentStatus};r([I({groups:["createEncounter"]})],l.prototype,"paymentDate",2),r([I({groups:["createEncounter"]})],l.prototype,"inputDate",2),r([classValidator.IsOptional()],l.prototype,"sortCode",2),r([classValidator.IsOptional()],l.prototype,"chequeNumber",2),r([classValidator.IsOptional(),I({groups:["createEncounter"]})],l.prototype,"reversalDate",2),r([classValidator.ValidateIf((e,t)=>t!=null),classValidator.ValidateNested(),classTransformer.Type(()=>o)],l.prototype,"recorder",2),r([classValidator.ValidateIf((e,t)=>t!=null),classValidator.ValidateNested(),classTransformer.Type(()=>o)],l.prototype,"reverser",2),r([classValidator.ValidateIf((e,t)=>t!=null),classValidator.ValidateNested(),classTransformer.Type(()=>m)],l.prototype,"pvrCode",2),r([classValidator.IsOptional()],l.prototype,"clientGuid",2),r([classValidator.IsOptional()],l.prototype,"callCentreReference",2),r([classValidator.ValidateIf((e,t)=>t!=null),classValidator.ValidateNested(),classTransformer.Type(()=>g)],l.prototype,"paymentStatus",2);exports.ActualPayment=l;