import * as moment from 'moment'; import { ValidationState } from '../../enums/validation-state'; import { Rule } from '../../interfaces/rule'; import { TicketDto } from '../../interfaces/ticket/ticket.dto'; export class ValidationDelay implements Rule { name = 'ValidationDelay'; validate(ticket: TicketDto): boolean { if (ticket.lastValidation && [ValidationState.FUTURE].includes(ticket.lastValidation.state)) { return false; } if (!ticket.nbValidations) { return true; } if (ticket.lastValidValidation && ticket.antiPassback) { const delayFromLastValidation = moment().diff(ticket.lastValidValidation?.validFrom); if (delayFromLastValidation <= ticket.antiPassback * 1000) { return false; } } return true; } }