/**
 * Équivalent de `python manage.py seed_content`.
 * Insère du contenu d'exemple (catégories, page À propos, FAQ, articles,
 * événements), en FR/EN. Idempotent : peut être relancé sans dupliquer
 * (identifié par slug/titre/question, comme la commande Django d'origine).
 *
 * Ce contenu est un MODÈLE générique à adapter à la réalité de l'IGF
 * Burundi avant publication (dates d'événements, faits précis, etc.).
 */
require("dotenv").config();
const { sequelize, Category, Page, Article, Event, FAQ } = require("../src/models");
const { uniqueSlug } = require("../src/utils/slugify");

const ABOUT_BODY_FR = `L'IGF Burundi (Internet Governance Forum Burundi) est la déclinaison
nationale du Forum sur la Gouvernance de l'Internet, une initiative
mondiale portée par les Nations Unies. Il réunit dans un même espace de
dialogue les représentants du gouvernement, du secteur privé, de la
société civile, du monde académique et de la communauté technique
autour des enjeux liés à Internet au Burundi.

Notre mission est de favoriser un Internet ouvert, sûr et accessible à
tous les Burundais, en encourageant un dialogue multi-acteurs sur des
sujets tels que l'accès à Internet, la cybersécurité, la protection des
données, la liberté d'expression en ligne, et l'inclusion numérique des
jeunes et des femmes.

## Nos objectifs

- Sensibiliser le public burundais aux enjeux de la gouvernance de l'Internet ;
- Favoriser un dialogue inclusif entre gouvernement, secteur privé, société civile et communauté technique ;
- Renforcer les capacités locales sur les questions numériques ;
- Représenter les intérêts du Burundi dans les discussions régionales et mondiales sur la gouvernance de l'Internet ;
- Promouvoir un accès à Internet plus large, plus sûr et plus abordable pour tous les Burundais.

## Notre structure

L'IGF Burundi est animé par un comité multi-acteurs bénévole, composé
de représentants des différents secteurs concernés par la gouvernance
de l'Internet au Burundi.`;

const ABOUT_BODY_EN = `IGF Burundi (Internet Governance Forum Burundi) is the national chapter
of the Internet Governance Forum, a global initiative led by the United
Nations. It brings together government representatives, the private
sector, civil society, academia, and the technical community in a
shared space for dialogue on Internet-related issues in Burundi.

Our mission is to foster an open, safe, and accessible Internet for all
Burundians, by encouraging multi-stakeholder dialogue on topics such as
Internet access, cybersecurity, data protection, freedom of expression
online, and digital inclusion for youth and women.

## Our objectives

- Raise public awareness in Burundi about Internet governance issues;
- Foster inclusive dialogue between government, private sector, civil society, and the technical community;
- Strengthen local capacity on digital issues;
- Represent Burundi's interests in regional and global discussions on Internet governance;
- Promote wider, safer, and more affordable Internet access for all Burundians.

## Our structure

IGF Burundi is run by a volunteer multi-stakeholder committee, made up
of representatives from the various sectors involved in Internet
governance in Burundi.`;

const CATEGORIES = [
  ["Gouvernance de l'Internet", "Internet Governance"],
  ["Cybersécurité", "Cybersecurity"],
  ["Jeunesse et numérique", "Youth and Digital"],
  ["Inclusion numérique", "Digital Inclusion"],
  ["Droits numériques", "Digital Rights"],
];

const FAQ_ITEMS = [
  ["Qu'est-ce que l'IGF Burundi ?", "L'IGF Burundi est la déclinaison nationale du Forum sur la Gouvernance de l'Internet (Internet Governance Forum), une initiative des Nations Unies qui réunit les différents acteurs concernés par Internet — gouvernement, secteur privé, société civile, monde académique et communauté technique — autour d'un dialogue ouvert sur les enjeux numériques au Burundi.", "What is IGF Burundi?", "IGF Burundi is the national chapter of the Internet Governance Forum, a United Nations initiative that brings together the different stakeholders involved with the Internet — government, private sector, civil society, academia, and the technical community — for open dialogue on digital issues in Burundi."],
  ["Qui peut participer aux activités de l'IGF Burundi ?", "Toute personne intéressée par les enjeux liés à Internet au Burundi peut participer : institutions publiques, entreprises technologiques, organisations de la société civile, chercheurs, étudiants, journalistes et citoyens. Le forum est ouvert à tous, dans une logique multi-acteurs.", "Who can take part in IGF Burundi's activities?", "Anyone interested in Internet-related issues in Burundi can take part: public institutions, tech companies, civil society organizations, researchers, students, journalists, and citizens. The forum is open to all, in a multi-stakeholder spirit."],
  ["Comment puis-je participer au forum annuel ?", "Les inscriptions au forum annuel sont annoncées à l'avance sur ce site, dans la rubrique Événements, ainsi que sur nos réseaux sociaux. Vous pouvez également nous contacter via le formulaire de contact pour être informé des prochaines éditions.", "How can I take part in the annual forum?", "Registration for the annual forum is announced in advance on this site, in the Events section, as well as on our social media. You can also reach us via the contact form to be informed about upcoming editions."],
  ["L'IGF Burundi est-il lié au gouvernement burundais ?", "L'IGF Burundi fonctionne selon un modèle multi-acteurs : le gouvernement est l'un des participants au dialogue, aux côtés du secteur privé, de la société civile, du monde académique et de la communauté technique, mais aucun acteur ne dirige seul le processus.", "Is IGF Burundi affiliated with the Burundian government?", "IGF Burundi operates on a multi-stakeholder model: the government is one participant in the dialogue, alongside the private sector, civil society, academia, and the technical community, but no single actor leads the process alone."],
  ["Comment puis-je proposer un sujet de discussion ou intervenir lors d'un événement ?", "Vous pouvez nous soumettre votre proposition via le formulaire de contact, en précisant le sujet, le format souhaité (panel, atelier, présentation) et vos coordonnées. Notre équipe vous répondra dans un délai de moins de 24 heures.", "How can I propose a discussion topic or speak at an event?", "You can submit your proposal via the contact form, specifying the topic, the desired format (panel, workshop, presentation), and your contact details. Our team will respond within less than 24 hours."],
  ["Où puis-je trouver les rapports et documents des éditions précédentes ?", "Les rapports, comptes-rendus et documents de référence sont disponibles dans la rubrique Ressources du site, une fois publiés par notre équipe.", "Where can I find reports and documents from previous editions?", "Reports, summaries, and reference documents are available in the Resources section of the site, once published by our team."],
];

const ARTICLES = [
  ["L'IGF Burundi lance ses activités pour l'année", "Le comité multi-acteurs de l'IGF Burundi annonce le lancement de ses activités, avec un accent particulier sur l'inclusion numérique et la cybersécurité.", "Le comité de l'IGF Burundi a le plaisir d'annoncer le lancement officiel de ses activités pour cette année. Au programme : des ateliers thématiques, des consultations multi-acteurs et la préparation du forum national annuel.\n\nCette année, une attention particulière sera portée à deux axes prioritaires : l'inclusion numérique des jeunes et des femmes en milieu rural, et le renforcement des capacités en cybersécurité pour les petites entreprises burundaises.\n\nNous invitons toutes les parties prenantes intéressées à nous rejoindre dans cette démarche.", "IGF Burundi launches this year's activities", "The IGF Burundi multi-stakeholder committee announces the launch of its activities, with a particular focus on digital inclusion and cybersecurity.", "The IGF Burundi committee is pleased to announce the official launch of its activities for this year. On the agenda: thematic workshops, multi-stakeholder consultations, and preparation for the annual national forum.\n\nThis year, particular attention will be given to two priority areas: digital inclusion for youth and women in rural areas, and building cybersecurity capacity for small Burundian businesses.\n\nWe invite all interested stakeholders to join us in this effort."],
  ["Pourquoi la gouvernance de l'Internet concerne chaque Burundais", "Accès à Internet, protection des données, liberté d'expression en ligne : un tour d'horizon des enjeux qui touchent directement la vie numérique des citoyens.", "Quand on parle de « gouvernance de l'Internet », on pense souvent à des discussions techniques réservées à des experts. En réalité, ces décisions touchent directement la vie quotidienne de chaque Burundais connecté.\n\nL'IGF Burundi existe précisément pour rendre ces discussions plus accessibles et plus inclusives, en donnant une place à la voix des citoyens aux côtés de celle des experts et des décideurs.", "Why Internet governance matters to every Burundian", "Internet access, data protection, freedom of expression online: an overview of the issues that directly affect citizens' digital lives.", "When people hear \"Internet governance,\" they often think of technical discussions reserved for experts. In reality, these decisions directly affect the daily life of every connected Burundian.\n\nIGF Burundi exists precisely to make these discussions more accessible and more inclusive, giving citizens a voice alongside experts and decision-makers."],
  ["Appel à candidatures : rejoignez le comité multi-acteurs", "L'IGF Burundi recherche des volontaires motivés issus de différents secteurs pour renforcer son comité d'organisation.", "Vous êtes passionné par les enjeux numériques et souhaitez contribuer activement à la gouvernance de l'Internet au Burundi ? L'IGF Burundi lance un appel à candidatures pour élargir son comité multi-acteurs.\n\nLes candidatures peuvent être soumises via notre formulaire de contact.", "Call for applications: join our multi-stakeholder committee", "IGF Burundi is looking for motivated volunteers from different sectors to strengthen its organizing committee.", "Are you passionate about digital issues and want to actively contribute to Internet governance in Burundi? IGF Burundi is launching a call for applications to expand its multi-stakeholder committee.\n\nApplications can be submitted via our contact form."],
];

const EVENTS = [
  ["Forum national IGF Burundi", "Le rendez-vous annuel de la gouvernance de l'Internet au Burundi. Une journée de panels, d'ateliers et de discussions ouvertes réunissant gouvernement, secteur privé, société civile, monde académique et communauté technique.", "Bujumbura, Burundi", "IGF Burundi National Forum", "The annual gathering on Internet governance in Burundi. A day of panels, workshops, and open discussions bringing together government, private sector, civil society, academia, and the technical community.", "Bujumbura, Burundi"],
  ["Atelier : Cybersécurité pour les petites entreprises", "Un atelier pratique destiné aux petites et moyennes entreprises burundaises souhaitant renforcer la sécurité de leurs outils numériques.", "Bujumbura, Burundi", "Workshop: Cybersecurity for small businesses", "A hands-on workshop for small and medium Burundian businesses looking to strengthen the security of their digital tools.", "Bujumbura, Burundi"],
];

async function seedCategories() {
  for (const [name_fr, name_en] of CATEGORIES) {
    const [obj, created] = await Category.findOrCreate({
      where: { name_fr },
      defaults: { name_en, slug: await uniqueSlug(Category, name_fr) },
    });
    if (created) console.log(`  + Catégorie créée : ${name_fr}`);
  }
}

async function seedAboutPage() {
  const [, created] = await Page.findOrCreate({
    where: { slug: "a-propos" },
    defaults: {
      title_fr: "À propos de l'IGF Burundi",
      title_en: "About IGF Burundi",
      body_fr: ABOUT_BODY_FR,
      body_en: ABOUT_BODY_EN,
      is_published: true,
      order: 1,
    },
  });
  console.log(created ? "  + Page 'a-propos' créée" : "  · Page 'a-propos' déjà existante, non modifiée");
}

async function seedFAQ() {
  for (const [question_fr, answer_fr, question_en, answer_en] of FAQ_ITEMS) {
    const [, created] = await FAQ.findOrCreate({
      where: { question_fr },
      defaults: { answer_fr, question_en, answer_en },
    });
    if (created) console.log(`  + FAQ créée : ${question_fr}`);
  }
}

async function seedArticles() {
  for (const [title_fr, excerpt_fr, body_fr, title_en, excerpt_en, body_en] of ARTICLES) {
    const [, created] = await Article.findOrCreate({
      where: { title_fr },
      defaults: {
        excerpt_fr, body_fr, title_en, excerpt_en, body_en,
        is_published: true, published_at: new Date(),
        slug: await uniqueSlug(Article, title_fr),
      },
    });
    if (created) console.log(`  + Article créé : ${title_fr}`);
  }
}

async function seedEvents() {
  for (const [title_fr, desc_fr, loc_fr, title_en, desc_en, loc_en] of EVENTS) {
    const startDate = new Date();
    startDate.setDate(startDate.getDate() + 30);
    const [, created] = await Event.findOrCreate({
      where: { title_fr },
      defaults: {
        description_fr: desc_fr, location_fr: loc_fr,
        title_en, description_en: desc_en, location_en: loc_en,
        is_published: true, start_date: startDate,
        slug: await uniqueSlug(Event, title_fr),
      },
    });
    if (created) console.log(`  + Événement créé : ${title_fr} (date provisoire — à corriger dans l'admin)`);
  }
}

async function main() {
  await sequelize.authenticate();
  await seedCategories();
  await seedAboutPage();
  await seedFAQ();
  await seedArticles();
  await seedEvents();
  console.log("Contenu d'exemple inséré avec succès.");
  process.exit(0);
}

main().catch((err) => {
  console.error("Échec du seed :", err);
  process.exit(1);
});
