UNPKG

@dvsa/smc-encounter-schema

Version:

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

1 lines 6.46 kB
'use strict';var classTransformer=require('class-transformer'),classValidator=require('class-validator'),luxon=require('luxon');var _=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var n=(e,t)=>_(e,"name",{value:t,configurable:true});var r=(e,t,i,s)=>{for(var u=s>1?void 0:s?D(t,i):t,c=e.length-1,y;c>=0;c--)(y=e[c])&&(u=(s?y(t,i,u):y(u))||u);return s&&u&&_(t,i,u),u};var C=class e{static{n(this,"CurrentEncounterLevel");}static instance;level;officerType;requestType;constructor(){this.level=1,this.officerType="ANY",this.requestType="C";}static getInstance(){return e.instance||(e.instance=new e),e.instance}getEncounterType(){return this.level}setEncounterType(t){this.level=t;}getExaminerOfficerType(){return this.officerType}setExaminerOfficerType(t){this.officerType=t;}getRequestType(){return this.requestType}setRequestType(t){this.requestType=t;}isDeletedEncounter(){return this.requestType==="D"}};var g=class{validate(t,i){let s=i.constraints[0],u=C.getInstance(),c=u.getEncounterType(),y=u.getExaminerOfficerType();return s.level===0||s.exceptions?.includes(c)||s.level!==void 0&&s.level>c||s.roles?.length&&!s.roles.includes(y)&&!s.roles.includes("ANY")?true:t==null?false:typeof t=="string"?s.allowEmpty?true:t.trim().length>0:Array.isArray(t)?t.length===0?false:t.every((O,G)=>O==null?false:Object.entries(O).every(([K,A])=>typeof A=="string"?A.trim().length>0:A!=null)):true}};n(g,"MandatoryFieldConstraint"),g=r([classValidator.ValidatorConstraint({name:"MandatoryField",async:false})],g);function p(e,t){return (i,s)=>{classValidator.registerDecorator({name:"MandatoryField",target:i.constructor,propertyName:s,constraints:[e],options:t,validator:g});}}n(p,"MandatoryField");function v(){return classTransformer.Transform(({value:e})=>{if(typeof e!="string")return e;let t=luxon.DateTime.fromFormat(e,"dd/MM/yyyy HH:mm:ss",{zone:"Europe/London"});return t.isValid?t.toFormat("yyyy-MM-dd HH:mm:ss"):e})}n(v,"TransformUKDateTime");var f=class{static{n(this,"CommonDeletion");}description;deletionMarker};r([p({level:4},{groups:["createEncounter"]})],f.prototype,"description",2),r([p({level:4},{groups:["createEncounter"]})],f.prototype,"deletionMarker",2);var N=class extends f{static{n(this,"CommonData");}sequenceNumber};r([p({level:4},{groups:["createEncounter"]})],N.prototype,"sequenceNumber",2);var o=class extends N{static{n(this,"CommonOffence");}code;version;ukMarker;name;ostCode;ofgCode;fkOgpCode;fkOgpVersion;effectiveFromDate;effectiveToDate;otyCode;osbCode;hazchemRisk;hazchemReason;descriptionWelsh};r([p({level:4},{groups:["createEncounter"]})],o.prototype,"code",2),r([p({level:4},{groups:["createEncounter"]})],o.prototype,"version",2),r([p({level:4},{groups:["createEncounter"]})],o.prototype,"ukMarker",2),r([p({level:4},{groups:["createEncounter"]})],o.prototype,"name",2),r([p({level:4},{groups:["createEncounter"]})],o.prototype,"ostCode",2),r([classValidator.IsOptional()],o.prototype,"ofgCode",2),r([classValidator.IsOptional()],o.prototype,"fkOgpCode",2),r([classValidator.IsOptional()],o.prototype,"fkOgpVersion",2),r([p({level:4},{groups:["createEncounter"]}),v()],o.prototype,"effectiveFromDate",2),r([classValidator.IsOptional(),v()],o.prototype,"effectiveToDate",2),r([p({level:4},{groups:["createEncounter"]})],o.prototype,"otyCode",2),r([classValidator.IsOptional()],o.prototype,"osbCode",2),r([classValidator.IsOptional()],o.prototype,"hazchemRisk",2),r([classValidator.IsOptional()],o.prototype,"hazchemReason",2),r([classValidator.IsOptional()],o.prototype,"descriptionWelsh",2);var R=class extends o{static{n(this,"Offence");}endorsableFlag};r([classValidator.IsOptional()],R.prototype,"endorsableFlag",2);var E=class{static{n(this,"CommonOffenceDetail");}generatedNumber;code;deletionMarker};r([classValidator.IsOptional()],E.prototype,"generatedNumber",2),r([classValidator.IsOptional()],E.prototype,"code",2),r([classValidator.IsOptional()],E.prototype,"deletionMarker",2);var x=class extends E{static{n(this,"OffenceSanctionText");}text};r([classValidator.IsOptional()],x.prototype,"text",2);var T=class{validate(t,i){return t==null?true:/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(t)}defaultMessage(t){return `${t.property} must match format YYYY-MM-DD HH:mm:ss`}};n(T,"UKDateFormatValidator"),T=r([classValidator.ValidatorConstraint({name:"ValidateUKDateFormat",async:false})],T);function V(e){return (t,i)=>{classValidator.registerDecorator({name:"ValidateUKDateFormat",target:t.constructor,propertyName:i,options:e,validator:T});}}n(V,"ValidateUKDateFormat");var m=class extends E{static{n(this,"OffenceSeverityBand");}effectiveToDate;effectiveFromDate;penaltyPoints;penaltyAmount;depositAmount};r([classValidator.IsOptional(),V({groups:["createEncounter"]})],m.prototype,"effectiveToDate",2),r([classValidator.IsOptional(),V({groups:["createEncounter"]})],m.prototype,"effectiveFromDate",2),r([classValidator.IsOptional()],m.prototype,"penaltyPoints",2),r([classValidator.IsOptional()],m.prototype,"penaltyAmount",2),r([classValidator.IsOptional()],m.prototype,"depositAmount",2);var l=class{static{n(this,"ActualOffences");}generatedNumber;refrdForInvestig;offenceDate;odrGeneratedNumber;offence;offenceSanctionText;offenceSeverityBand;driverType;exemptFromProhibition;noticeReference;noticeRowCount;otherOperator;vrm;additionalText};r([classValidator.IsOptional()],l.prototype,"generatedNumber",2),r([classValidator.IsOptional()],l.prototype,"refrdForInvestig",2),r([classValidator.IsOptional()],l.prototype,"offenceDate",2),r([classValidator.IsOptional()],l.prototype,"odrGeneratedNumber",2),r([classValidator.ValidateIf((t,i)=>i!=null),classValidator.ValidateNested(),classTransformer.Type(()=>R)],l.prototype,"offence",2),r([classValidator.ValidateIf((t,i)=>i!=null),classValidator.ValidateNested(),classTransformer.Type(()=>x)],l.prototype,"offenceSanctionText",2),r([classValidator.ValidateIf((t,i)=>i!=null),classValidator.ValidateNested(),classTransformer.Type(()=>m)],l.prototype,"offenceSeverityBand",2),r([classValidator.IsOptional()],l.prototype,"driverType",2),r([classValidator.IsOptional()],l.prototype,"exemptFromProhibition",2),r([classValidator.IsOptional()],l.prototype,"noticeReference",2),r([classValidator.IsOptional()],l.prototype,"noticeRowCount",2),r([classValidator.IsOptional()],l.prototype,"otherOperator",2),r([classValidator.IsOptional()],l.prototype,"vrm",2),r([classValidator.IsOptional()],l.prototype,"additionalText",2);exports.ActualOffences=l;