import { CertificationLevelEnum } from '../../enums/certification-level.enum'; import { IsPhotoRequiredEnum } from '../../enums/is-photo-required.enum'; import { Rule } from '../../interfaces/rule'; import { TicketDto } from '../../interfaces/ticket/ticket.dto'; export class IsPhotoRequired implements Rule { name = 'IsPhotoRequired'; validate(ticket: TicketDto): boolean { if (!ticket?.isPhotoRequired || ticket.isPhotoRequired === IsPhotoRequiredEnum.NO) { return true; } if (ticket?.lastValidValidation) { return true; } const { passengers } = ticket; if (!passengers || !Array.isArray(passengers) || passengers.length < 1) { return false; } if (ticket.isPhotoRequired === IsPhotoRequiredEnum.VALIDATE) { return !!( passengers[0].profilePhotoCertification && (passengers[0].profilePhotoCertification === CertificationLevelEnum.EXISTS || passengers[0].profilePhotoCertification === CertificationLevelEnum.CERTIFIED) ); } // IsPhotoRequiredEnum.CERTIFIED return !!( passengers[0].profilePhotoCertification && passengers[0].profilePhotoCertification === CertificationLevelEnum.CERTIFIED ); } }