import type Invoice from '#models/invoice'
import { BaseTransformer } from '@adonisjs/core/transformers'

export default class InvoiceTransformer extends BaseTransformer<Invoice> {
  toObject() {
    const i = this.resource
    return {
      id: i.id,
      organizationId: i.organizationId,
      clientId: i.clientId,
      // Le SPA affiche `clientName` dans la liste — c'est lu depuis la
      // relation préchargée, sinon vide. La V1 MSW dénormalisait ce champ
      // dans la table invoice, on préfère le préchargement côté API.
      clientName: i.client?.name ?? '',
      numero: i.numero,
      amountTtcCents: i.amountTtcCents,
      issueDate: i.issueDate.toISO()!,
      dueDate: i.dueDate.toISO()!,
      status: i.status,
      planId: i.planId,
      planName: i.plan?.name ?? null,
      pdfStorageKey: i.pdfStorageKey,
      notes: i.notes,
      rubisEarned: i.rubisEarned,
      paidAt: i.paidAt?.toISO() ?? null,
      createdAt: i.createdAt.toISO()!,
      updatedAt: i.updatedAt?.toISO() ?? i.createdAt.toISO()!,
    }
  }
}
