UNPKG

@dvsa/smc-encounter-schema

Version:

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

1 lines 4.35 kB
'use strict';var classTransformer=require('class-transformer'),classValidator=require('class-validator'),luxon=require('luxon');var O=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var o=(t,e)=>O(t,"name",{value:e,configurable:true});var r=(t,e,i,n)=>{for(var l=n>1?void 0:n?V(e,i):e,m=t.length-1,E;m>=0;m--)(E=t[m])&&(l=(n?E(e,i,l):E(l))||l);return n&&l&&O(e,i,l),l};var d=class t{static{o(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 p=class{validate(e,i){let n=i.constraints[0],l=d.getInstance(),m=l.getEncounterType(),E=l.getExaminerOfficerType();return n.level===0||n.exceptions?.includes(m)||n.level!==void 0&&n.level>m||n.roles?.length&&!n.roles.includes(E)&&!n.roles.includes("ANY")?true:e==null?false:typeof e=="string"?n.allowEmpty?true:e.trim().length>0:Array.isArray(e)?e.length===0?false:e.every((y,Y)=>y==null?false:Object.entries(y).every(([q,g])=>typeof g=="string"?g.trim().length>0:g!=null)):true}};o(p,"MandatoryFieldConstraint"),p=r([classValidator.ValidatorConstraint({name:"MandatoryField",async:false})],p);function u(t,e){return (i,n)=>{classValidator.registerDecorator({name:"MandatoryField",target:i.constructor,propertyName:n,constraints:[t],options:e,validator:p});}}o(u,"MandatoryField");var f=class{validate(e,i){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`}};o(f,"UKDateFormatValidator"),f=r([classValidator.ValidatorConstraint({name:"ValidateUKDateFormat",async:false})],f);function N(t){return (e,i)=>{classValidator.registerDecorator({name:"ValidateUKDateFormat",target:e.constructor,propertyName:i,options:t,validator:f});}}o(N,"ValidateUKDateFormat");function R(){return classTransformer.Transform(({value:t})=>{if(typeof t!="string")return t;let e=luxon.DateTime.fromFormat(t,"dd/MM/yyyy HH:mm:ss",{zone:"Europe/London"});return e.isValid?e.toFormat("yyyy-MM-dd HH:mm:ss"):t})}o(R,"TransformUKDateTime");function L(t,e=[]){return i=>{classValidator.registerDecorator({name:"CloseProhibitionsAuditValidator",target:i,propertyName:void 0,options:t,validator:{validate(n,l){return l.object?.eventFullDescription?.trim().toUpperCase()==="CMP"},defaultMessage(n){return '"eventFullDescription" must be "CMP".'}}});}}o(L,"CloseProhibitionsAuditValidator");var s=class{eventCode;eventShortDescription;eventFullDescription;deletionMarker;fpNoticeIndicator;noticeIndicator};o(s,"AuditEventBase"),r([classValidator.IsOptional()],s.prototype,"eventCode",2),r([classValidator.IsOptional()],s.prototype,"eventShortDescription",2),r([classValidator.IsOptional()],s.prototype,"eventFullDescription",2),r([classValidator.IsOptional()],s.prototype,"deletionMarker",2),r([classValidator.IsOptional()],s.prototype,"fpNoticeIndicator",2),r([classValidator.IsOptional()],s.prototype,"noticeIndicator",2),s=r([L({groups:["closeProhibition"]})],s);var a=class{static{o(this,"AuditBase");}generatedNumber;venGeneratedNumber;aevEventCode;eventTimestamp;serverTimestamp;responsibleFirstName;responsibleSurname;responsibleUserId;eventUnit;comments;newAuditIndicator};r([classValidator.ValidateIf((e,i)=>i!=null),classValidator.ValidateNested(),classTransformer.Type(()=>s)],a.prototype,"aevEventCode",2),r([R(),N({groups:["createEncounter"]}),u({level:4},{groups:["createEncounter"]})],a.prototype,"eventTimestamp",2),r([classValidator.IsOptional()],a.prototype,"serverTimestamp",2),r([u({level:4},{groups:["createEncounter"]})],a.prototype,"responsibleFirstName",2),r([u({level:4},{groups:["createEncounter"]})],a.prototype,"responsibleSurname",2),r([u({level:4},{groups:["createEncounter"]})],a.prototype,"responsibleUserId",2),r([u({level:4},{groups:["createEncounter"]})],a.prototype,"eventUnit",2),r([classValidator.IsOptional()],a.prototype,"comments",2),r([classValidator.IsOptional()],a.prototype,"newAuditIndicator",2);exports.AuditBase=a;