UNPKG

@dvsa/smc-encounter-schema

Version:

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

1 lines 5.65 kB
'use strict';var classTransformer=require('class-transformer'),classValidator=require('class-validator');var N=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var i=(t,r)=>N(t,"name",{value:r,configurable:true});var e=(t,r,u,o)=>{for(var a=o>1?void 0:o?U(r,u):r,E=t.length-1,p;E>=0;E--)(p=t[E])&&(a=(o?p(r,u,a):p(a))||a);return o&&a&&N(r,u,a),a};var R=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(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 m=class{validate(r,u){let o=u.constraints[0],a=R.getInstance(),E=a.getEncounterType(),p=a.getExaminerOfficerType();return o.level===0||o.exceptions?.includes(E)||o.level!==void 0&&o.level>E||o.roles?.length&&!o.roles.includes(p)&&!o.roles.includes("ANY")?true:r==null?false:typeof r=="string"?o.allowEmpty?true:r.trim().length>0:Array.isArray(r)?r.length===0?false:r.every((l,g)=>l==null?false:Object.entries(l).every(([q,A])=>typeof A=="string"?A.trim().length>0:A!=null)):true}};i(m,"MandatoryFieldConstraint"),m=e([classValidator.ValidatorConstraint({name:"MandatoryField",async:false})],m);function s(t,r){return (u,o)=>{classValidator.registerDecorator({name:"MandatoryField",target:u.constructor,propertyName:o,constraints:[t],options:r,validator:m});}}i(s,"MandatoryField");function h(t){return r=>{classValidator.registerDecorator({name:"ValidatePnoGeneratedNumber",target:r,propertyName:void 0,options:t,validator:{validate(u,o){let a=o.object;if(!a)return false;let E=a.pnoGeneratedNumber,l=a.noticeRefSource?.toUpperCase?.()==="GEN";return !(E==null||l&&!/^[A-Za-z0-9]+$/.test(E)||l&&!I(E))},defaultMessage(u){return "pnoGeneratedNumber is invalid or does not match the check digit."}}});}}i(h,"ValidatePnoGeneratedNumber");function I(t){if(!t||t.length<2)return false;let u=t.charAt(t.length-1).charCodeAt(0)-48,a=t.slice(0,-1).toUpperCase().split(""),E=0;for(let g=0;g<a.length;g++)E+=a[g].charCodeAt(0)*(g+1);let l=48+E%10;return u===l-48}i(I,"calculateCheckDigit");var f=class{validate(r,u){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`}};i(f,"UKDateFormatValidator"),f=e([classValidator.ValidatorConstraint({name:"ValidateUKDateFormat",async:false})],f);function O(t){return (r,u)=>{classValidator.registerDecorator({name:"ValidateUKDateFormat",target:r.constructor,propertyName:u,options:t,validator:f});}}i(O,"ValidateUKDateFormat");var d=class{static{i(this,"CommonDeletion");}description;deletionMarker};e([s({level:4},{groups:["createEncounter"]})],d.prototype,"description",2),e([s({level:4},{groups:["createEncounter"]})],d.prototype,"deletionMarker",2);var C=class extends d{static{i(this,"CommonData");}sequenceNumber};e([s({level:4},{groups:["createEncounter"]})],C.prototype,"sequenceNumber",2);var c=class extends C{static{i(this,"PenaltyNoticeStatus");}code;usageInd};e([s({level:4},{groups:["createEncounter"]})],c.prototype,"code",2),e([s({level:4},{groups:["createEncounter"]})],c.prototype,"usageInd",2);exports.PenaltyNotice=class n{venGeneratedNumber;noticeRefSource;referenceNumber;driverForename;driverSurname;driverLicenceNumber;drivingLicenseStatus;driverType;amount;points;paymentDueDate;referredDate;penaltyNoticeStatus;lastUpdatedDate;lastUpdatedBy;pnoGeneratedNumber;odrGeneratedNumber};i(exports.PenaltyNotice,"PenaltyNotice"),e([classValidator.IsOptional()],exports.PenaltyNotice.prototype,"venGeneratedNumber",2),e([s({level:4},{groups:["createEncounter"]})],exports.PenaltyNotice.prototype,"noticeRefSource",2),e([s({level:4},{groups:["createEncounter"]})],exports.PenaltyNotice.prototype,"referenceNumber",2),e([s({level:4},{groups:["createEncounter"]})],exports.PenaltyNotice.prototype,"driverForename",2),e([s({level:4},{groups:["createEncounter"]})],exports.PenaltyNotice.prototype,"driverSurname",2),e([s({level:4,allowEmpty:true},{groups:["createEncounter"]})],exports.PenaltyNotice.prototype,"driverLicenceNumber",2),e([s({level:4},{groups:["createEncounter"]})],exports.PenaltyNotice.prototype,"drivingLicenseStatus",2),e([s({level:4},{groups:["createEncounter"]})],exports.PenaltyNotice.prototype,"driverType",2),e([s({level:4},{groups:["createEncounter"]})],exports.PenaltyNotice.prototype,"amount",2),e([s({level:4},{groups:["createEncounter"]})],exports.PenaltyNotice.prototype,"points",2),e([O({groups:["createEncounter"]}),s({level:4},{groups:["createEncounter"]})],exports.PenaltyNotice.prototype,"paymentDueDate",2),e([O({groups:["createEncounter"]}),s({level:4},{groups:["createEncounter"]})],exports.PenaltyNotice.prototype,"referredDate",2),e([classValidator.ValidateNested(),classTransformer.Type(()=>c),s({level:4},{groups:["createEncounter"]})],exports.PenaltyNotice.prototype,"penaltyNoticeStatus",2),e([O({groups:["createEncounter"]}),s({level:4},{groups:["createEncounter"]})],exports.PenaltyNotice.prototype,"lastUpdatedDate",2),e([classValidator.IsOptional()],exports.PenaltyNotice.prototype,"lastUpdatedBy",2),e([classValidator.IsOptional()],exports.PenaltyNotice.prototype,"pnoGeneratedNumber",2),e([classValidator.IsOptional()],exports.PenaltyNotice.prototype,"odrGeneratedNumber",2),exports.PenaltyNotice=e([h({groups:["createEncounter"]})],exports.PenaltyNotice);