UNPKG

@dvsa/smc-encounter-schema

Version:

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

1 lines 1.75 kB
'use strict';var classValidator=require('class-validator');var g=Object.defineProperty;var r=(e,t)=>g(e,"name",{value:t,configurable:true});var o=class e{static{r(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"}};function _(e){return t=>{classValidator.registerDecorator({name:"ValidateIncompleteEncDeleteFixedPenalty",target:t,propertyName:void 0,options:e,validator:{validate(a,s){let c=s.object;if(!c||!o.getInstance().isDeletedEncounter())return true;let y=c.drivers||[],p=x(c);function m(i){return y.some(n=>n.driverType===i&&n.actualPayments&&n.actualPayments.length>0)}r(m,"driverHasActualPayment");function d(i){return p.some(n=>n.penaltyNotice&&n.penaltyNotice.penaltyNoticeStatus?.code==="P"&&n.penaltyNotice.driverType===i)}r(d,"driverHasPenaltyNoticePaid");function E(i){return p.some(n=>n.penaltyNotice&&n.penaltyNotice.driverType===i)}r(E,"driverHasFixedPenalty");let l="A",u="O",f=m(l),T=m(u),N=d(l),v=d(u),P=E(l),A=E(u);return !(f&&N&&P||T&&v&&A)},defaultMessage(a){return "Cannot delete encounter with paid fixed penalty"}}});}}r(_,"ValidateIncompleteEncDeleteFixedPenalty");function x(e){let t=e.motor?.notices||[],a=e.trailer1?.notices||[],s=e.trailer2?.notices||[];return [...t,...a,...s]}r(x,"getAllNotices");exports.ValidateIncompleteEncDeleteFixedPenalty=_;