import { BaseSchema } from '@adonisjs/lucid/schema'

/**
 * Backfill des templates de remerciement sur les plans pré-fournis qui
 * existaient AVANT l'ajout des colonnes `thanks_subject` / `thanks_body`.
 *
 * `provisionDefaultPlans` est idempotent sur slug — il skip si le plan
 * existe déjà — donc les orgs créées avant la migration `1778260000000_*`
 * gardaient ces colonnes à NULL et l'éditeur de plan affichait du vide
 * (le mailer tombait sur le fallback hardcodé, donc fonctionnellement OK,
 * mais pas la promesse « éditable par plan »).
 *
 * On UPDATE seulement les rows avec thanks_subject IS NULL pour ne pas
 * écraser les éventuelles éditions utilisateur. Les valeurs miroirent
 * exactement DEFAULT_PLANS dans `app/services/default_plans.ts`.
 */

const DEFAULTS: Array<{ slug: string; subject: string; body: string }> = [
  {
    slug: 'standard-30j',
    subject: 'Merci ! Bien reçu pour la facture {{numero}}',
    body:
      "Bonjour {{client.name}},\n\nNous confirmons la bonne réception du règlement de la facture {{numero}} d'un montant de {{amount}}. Merci pour ce paiement et au plaisir de continuer à travailler ensemble.\n\n{{signature}}",
  },
  {
    slug: 'rapide-15j',
    subject: 'Paiement bien reçu — facture {{numero}}',
    body:
      'Bonjour {{client.name}},\n\nMerci, nous avons bien reçu le règlement de la facture {{numero}} ({{amount}}). Bonne continuation.\n\n{{signature}}',
  },
  {
    slug: 'patient-60j',
    subject: 'Merci — règlement bien reçu pour {{numero}}',
    body:
      "Bonjour {{client.name}},\n\nNous accusons bonne réception du paiement de la facture {{numero}} ({{amount}}). Merci de votre confiance, à très bientôt.\n\n{{signature}}",
  },
  {
    slug: 'ferme-7j',
    subject: 'Règlement reçu — facture {{numero}}',
    body:
      'Bonjour {{client.name}},\n\nNous confirmons la bonne réception du paiement de la facture {{numero}} ({{amount}}). Merci.\n\n{{signature}}',
  },
]

export default class extends BaseSchema {
  async up() {
    for (const tpl of DEFAULTS) {
      await this.db
        .from('plans')
        .where('slug', tpl.slug)
        .whereNull('thanks_subject')
        .update({ thanks_subject: tpl.subject, thanks_body: tpl.body })
    }
  }

  async down() {
    // No-op : on ne sait pas distinguer nos backfills d'éventuelles éditions
    // utilisateur identiques. Les colonnes elles-mêmes sont droppées par la
    // migration 1778260000000_add_thanks_template_to_plans_table down().
  }
}
