const { SlashCommandBuilder, EmbedBuilder, ActionRowBuilder, StringSelectMenuBuilder, ButtonBuilder, ButtonStyle } = require('discord.js');
const fs = require('fs');
const path = require('path');
const config = require('../config.js');

function loadCompelet() {
  delete require.cache[require.resolve('../compelet.js')];
  return require('../compelet.js');
}

module.exports = {
  data: new SlashCommandBuilder()
    .setName('partners')
    .setDescription('عرض وإدارة الشراكات للسيرفر'),

  async execute(interaction) {
    const guildId = interaction.guild.id;
    const serverConfig = config[guildId];

    if (!serverConfig?.adminPartnerID || !interaction.member.roles.cache.has(serverConfig.adminPartnerID)) {
      return interaction.reply({ content: '🚫 هذا الأمر مخصص فقط لستاف البارتنرز.', ephemeral: true });
    }

    let compelet = loadCompelet();
    if (!compelet) compelet = { partners: {}, blacklist: {} };
    const partners = compelet.partners;

    if (!Object.keys(partners).length) {
      return interaction.reply({ content: '⚠ لا يوجد بارتنرز حتى الآن.', ephemeral: true });
    }

// ===== Embed النص فوق القائمة =====
const embed = new EmbedBuilder()
  .setTitle('🤝 قائمة الشراكات المعتمدة')
  .setDescription(
    '📌 **اختر السيرفر من القائمة أدناه** لعرض تفاصيل الشراكة بشكل كامل.\n\n' +
    '📂 **تشمل المعلومات:**\n' +
    '• اسم السيرفر\n' +
    '• اسم الشخص المسؤول عن الشراكة\n' +
    '• اسم تذكرة الشراكة'
  )
  .setColor('#1E90FF')
  .setFooter({ text: 'Partner Staff Access Only' })
  .setTimestamp();

    // ===== قائمة السيرفرات =====
    const buildSelectMenu = () => new ActionRowBuilder().addComponents(
      new StringSelectMenuBuilder()
        .setCustomId('selectPartner')
        .setPlaceholder('اختر سيرفر لعرض تفاصيله')
        .addOptions(
          Object.entries(partners).map(([id, data]) => ({
            label: (data.name || 'بدون اسم').slice(0, 25),
            description: `By: ${data.addedBy || 'Unknown'} | Ticket Name: ${data.ticket || 'Unknown'}`,
            value: id
          }))
        )
    );

    await interaction.reply({ embeds: [embed], components: [buildSelectMenu()], ephemeral: true });

    const collector = interaction.channel.createMessageComponentCollector({ time: 120000 });

    collector.on('collect', async i => {
      if (!i.member.roles.cache.has(serverConfig.adminPartnerID)) {
        return i.reply({ content: '🚫 أنت غير مخول للوصول لهذه الخيارات.', ephemeral: true });
      }

      if (i.customId === 'selectPartner') {
        const serverID = i.values[0];
        const info = partners[serverID];

        const detailEmbed = new EmbedBuilder()
          .setTitle(`🤝 بارتنر: ${info.name}`)
          .setDescription(`تفاصيل البارتنر الخاص بسيرفر **${info.name || 'غير معروف'}**`)
          .setColor('#0099ff')
          .addFields(
            { name: '🧾 ID السيرفر', value: serverID, inline: true },
            { name: '👤 أضيف بواسطة', value: info.addedBy || 'غير معروف', inline: true },
            { name: 'اسم التذكرة', value: info.ticket || 'غير معروف', inline: true },
            { name: '📝 الوصف', value: info.desc?.slice(0, 1024) || 'لا يوجد وصف', inline: false },
            { name: '🔗 رابط الدعوة', value: info.invite || 'لا يوجد', inline: false },
            { name: '📅 تاريخ الإضافة', value: info.date || 'غير محدد', inline: true },
            { name: '⚠ حالة السيرفر', value: info.blacklisted ? '🚫 محظور' : '✅ نشط', inline: true }
          )
          .setFooter({ text: 'حقوق الوصول: ستاف البارتنرز فقط' })
          .setTimestamp();

        const row = new ActionRowBuilder()
          .addComponents(
            new ButtonBuilder()
              .setCustomId(`remove-${serverID}`)
              .setLabel('🗑 حذف البارتنر')
              .setStyle(ButtonStyle.Danger),
            new ButtonBuilder()
              .setCustomId('back')
              .setLabel('🔙 رجوع')
              .setStyle(ButtonStyle.Secondary)
          );

        return i.update({ embeds: [detailEmbed], components: [row] });
      }

      if (i.customId === 'back') {
        return i.update({ embeds: [embed], components: [buildSelectMenu()] });
      }

      if (i.customId.startsWith('remove-')) {
        const serverID = i.customId.split('-')[1];
        if (partners[serverID]) {
          delete partners[serverID];

          fs.writeFileSync(
            path.join(__dirname, '../compelet.js'),
            `module.exports = ${JSON.stringify(compelet, null, 2)};`,
            'utf8'
          );

          compelet = loadCompelet();

          return i.update({ content: `✅ تم حذف السيرفر (${serverID}) من البارتنرز.`, embeds: [], components: [] });
        }
      }
    });
  }
};
