import type { FactureType, PeriodeListe } from '../types';

/**
 * Paramètres de la route `factures.export` — logique pure, sans React (testée
 * dans `export-params.test.ts`). Ce sont ceux que lisent, côté serveur,
 * `PeriodeListe::depuisRequete()` et `FiltresListe::depuisRequete()` : le
 * fichier contient donc la vue affichée, ni plus ni moins.
 */

export type FormatExport = 'pdf' | 'xlsx';

/** Ce que l'écran montre : la période (serveur) et les filtres (navigateur). */
export interface VueExport {
    periode: PeriodeListe;
    statut: 'toutes' | 'brouillon' | 'non_payee' | 'en_retard' | 'payee' | 'annulee';
    type: 'tout' | FactureType;
    recherche: string;
}

export function paramsExport(format: FormatExport, vue: VueExport): Record<string, string | number> {
    const { periode } = vue;
    const params: Record<string, string | number> = { format };

    if (periode.mode === 'mois') params.mois = periode.du.slice(0, 7);
    else if (periode.mode === 'annee') params.annee = periode.annee;
    else {
        params.du = periode.du;
        params.au = periode.au;
    }

    // Les valeurs par défaut ne s'écrivent pas : l'adresse reste courte.
    if (vue.statut !== 'toutes') params.statut = vue.statut;
    if (vue.type !== 'tout') params.type = vue.type;
    const q = vue.recherche.trim();
    if (q !== '') params.q = q;

    return params;
}
