// telegram/handlers/circuitHandler.js
const shared_consts = require('../../tools/shared_nodejs');
const tools = require('../../tools/general');
const { User } = require('../../models/user');

const InlineConferma = { RISPOSTA_SI: 'SI_', RISPOSTA_NO: 'NO_' };

async function handleCircuit({ bot, cl, idapp, msg, data, user, userDest, username_action }) {
  let notifyText = '';

  // Aggiunta al circuito
  if (data.action === InlineConferma.RISPOSTA_SI + shared_consts.CallFunz.ADDUSERTOCIRCUIT) {
    const cmd = shared_consts.CIRCUITCMD.ADDUSERTOCIRCUIT;
    const req = tools.getReqByPar(idapp, username_action);

    // se viene da gruppo usa ifCircuitAlreadyInGroup, altrimenti ifAlreadyInCircuit (come nel tuo codice)
    const already = data.groupname
      ? await User.ifCircuitAlreadyInGroup(idapp, data.groupname, data.circuitId)
      : await User.ifAlreadyInCircuit(idapp, data.username, data.circuitId);

    if (!already) {
      await User.setCircuitCmd(idapp, data.username, data.circuitId, cmd, 1, username_action, { groupname: data.groupname });
      await cl.sendMsg(msg.chat.id, `✅ ${data.username} aggiunto al circuito ${data.circuitId}`);
      notifyText = 'Circuito OK';
    } else {
      await cl.sendMsg(msg.chat.id, `ℹ️ ${data.username} è già nel circuito ${data.circuitId}`);
      notifyText = 'Già presente';
    }
    return notifyText;
  }

  // Rimozione dal circuito
  if (data.action === InlineConferma.RISPOSTA_SI + shared_consts.CallFunz.REMUSERFROMCIRCUIT) {
    const cmd = shared_consts.CIRCUITCMD.REMOVEUSERFROMCIRCUIT;
    await User.setCircuitCmd(idapp, data.username, data.circuitId, cmd, 0, username_action, { groupname: data.groupname });
    await cl.sendMsg(msg.chat.id, `🗑️ ${data.username} rimosso dal circuito ${data.circuitId}`);
    notifyText = 'Rimosso';
    return notifyText;
  }

  // NO / annulla
  if (
    data.action === InlineConferma.RISPOSTA_NO + shared_consts.CallFunz.ADDUSERTOCIRCUIT ||
    data.action === InlineConferma.RISPOSTA_NO + shared_consts.CallFunz.REMUSERFROMCIRCUIT
  ) {
    await cl.sendMsg(msg.chat.id, '❌ Operazione circuito annullata.');
    notifyText = 'Annullata';
    return notifyText;
  }

  return 'OK';
}

module.exports = { handleCircuit };
