import { BaseEntity } from '@edr/api-common'; import { Column, Entity, Index, JoinColumn, ManyToOne } from 'typeorm'; import { Booking } from './booking.entity'; export const REVIEW_NOTE_TYPES = [ 'CHANGES_REQUESTED', 'REJECTION', 'STAFF_NOTE', /** * The customer asked GL Ethiopia to correct the draft customs declaration * (price/files). One row per round — the draft/change-request loop can repeat. */ 'DRAFT_DECL_CHANGE_REQUEST', /** * GL asked the customer for additional clearance document(s). Shown as a * thread on both the GL clearance page and the customer's portal — the * customer answers by uploading an ad-hoc document. */ 'ADDITIONAL_DOC_REQUEST', ] as const; export type ReviewNoteType = (typeof REVIEW_NOTE_TYPES)[number]; @Entity({ schema: 'freight', name: 'booking_review_note' }) @Index(['bookingId']) export class BookingReviewNote extends BaseEntity { @Column({ name: 'booking_id', type: 'uuid' }) bookingId!: string; @ManyToOne(() => Booking, (b) => b.reviewNotes, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'booking_id' }) booking?: Booking; @Column({ name: 'author_id', type: 'uuid', nullable: true }) authorId?: string | null; @Column({ name: 'note', type: 'text' }) note!: string; @Column({ name: 'type', type: 'varchar', length: 30 }) type!: ReviewNoteType; }