const fs = require('fs');
const path = require('path');
const inquirer = require('inquirer');

const contentPath = path.join(__dirname, 'content.json');

if (!fs.existsSync(contentPath)) {
  console.error('❌ Δεν βρέθηκε content.json στον φάκελο.');
  process.exit(1);
}

let raw = fs.readFileSync(contentPath, 'utf-8');
let json = JSON.parse(raw);

const elements = json?.question?.task?.elements;
if (!Array.isArray(elements)) {
  console.error('⚠️ Δεν βρέθηκαν στοιχεία στο content.json');
  process.exit(1);
}

async function process() {
  let modified = false;

  for (let i = 0; i < elements.length; i++) {
    const el = elements[i];

    // === TEXT (.h5p-question-introduction) ===
    const textHtml = el?.type?.params?.text;
    const matchText = textHtml?.match(/<p>(.*?)<\/p>/i);
    if (matchText && matchText[1]) {
      const cleanText = matchText[1].trim();

      console.log(`\n🔍 Βρέθηκε .h5p-question-introduction: "${cleanText}"`);

      const { replaceText } = await inquirer.prompt([
        {
          type: 'confirm',
          name: 'replaceText',
          message: 'Θέλεις να αντικαταστήσεις αυτό το κείμενο;',
          default: false
        }
      ]);

      if (replaceText) {
        const { newText } = await inquirer.prompt([
          {
            type: 'input',
            name: 'newText',
            message: 'Νέο κείμενο:',
            validate: input => input.trim() !== '' || 'Δεν μπορεί να είναι κενό.'
          }
        ]);

        elements[i].type.params.text = `<p>${newText.trim()}</p>`;
        modified = true;
      }
    }

    // === LABEL (.h5p-dragquestion-introduction) ===
    const labelHtml = el?.type?.params?.label;
    const matchLabel = labelHtml?.match(/<p>(.*?)<\/p>/i);
    if (matchLabel && matchLabel[1]) {
      const cleanLabel = matchLabel[1].trim();

      console.log(`\n🔍 Βρέθηκε .h5p-dragquestion-introduction: "${cleanLabel}"`);

      const { replaceLabel } = await inquirer.prompt([
        {
          type: 'confirm',
          name: 'replaceLabel',
          message: 'Θέλεις να αντικαταστήσεις αυτό το label;',
          default: false
        }
      ]);

      if (replaceLabel) {
        const { newLabel } = await inquirer.prompt([
          {
            type: 'input',
            name: 'newLabel',
            message: 'Νέο label:',
            validate: input => input.trim() !== '' || 'Δεν μπορεί να είναι κενό.'
          }
        ]);

        elements[i].type.params.label = `<p>${newLabel.trim()}</p>`;
        modified = true;
      }
    }

    // === INTRODUCTION (.h5p-content .using-mouse ...) ===
    const introHtml = el?.type?.params?.introduction;
    const matchIntro = introHtml?.match(/<p>(.*?)<\/p>/i);
    if (matchIntro && matchIntro[1]) {
      const cleanIntro = matchIntro[1].trim();

      console.log(`\n🔍 Βρέθηκε .h5p-content container (introduction): "${cleanIntro}"`);

      const { replaceIntro } = await inquirer.prompt([
        {
          type: 'confirm',
          name: 'replaceIntro',
          message: 'Θέλεις να αντικαταστήσεις αυτό το introduction;',
          default: false
        }
      ]);

      if (replaceIntro) {
        const { newIntro } = await inquirer.prompt([
          {
            type: 'input',
            name: 'newIntro',
            message: 'Νέο introduction:',
            validate: input => input.trim() !== '' || 'Δεν μπορεί να είναι κενό.'
          }
        ]);

        elements[i].type.params.introduction = `<p>${newIntro.trim()}</p>`;
        modified = true;
      }
    }
  }

  if (modified) {
    fs.writeFileSync(contentPath, JSON.stringify(json, null, 2), 'utf-8');
    console.log(`\n💾 Οι αλλαγές αποθηκεύτηκαν στο content.json`);
  } else {
    console.log('\n⚠️ Δεν έγιναν αλλαγές.');
  }
}

process();
