import * as moment from 'moment'; import { TicketState } from '../enums/ticket-state'; import { TicketStateOutput } from '../interfaces/ticket/ticket-state.output'; import { TicketDto } from '../interfaces/ticket/ticket.dto'; import { isValidWithErrors } from './validate'; export function getTicketState(ticket: TicketDto): TicketStateOutput { const now = moment(); const validity = isValidWithErrors(ticket); if (now.isBefore(ticket.dateFrom)) { return { state: TicketState.COMING_SOON, errors: validity.errors }; } if (ticket.dateUntil && now.isAfter(ticket.dateUntil)) { return { state: TicketState.COMPLETED, errors: validity.errors }; } if (!validity.isValid) { return { state: TicketState.INVALID, errors: validity.errors }; } const hasValidLastValidation = ticket.lastValidValidation && moment(ticket.lastValidValidation.validUntil).isAfter(now); if (hasValidLastValidation) { return { state: TicketState.UNDER_VALIDATION }; } return { state: TicketState.UNCOMPOSTED }; }