<?php

namespace PrestaShop\Module\PolarisPrestaConnector\Command;

use PrestaShop\Module\PolarisPrestaConnector\SyncConfiguration;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;

/**
 * Commande Symfony console pour afficher les paramètres de connexion au backoffice.
 *
 * Usage :
 *   php bin/console prestaconnector:dump-login
 *
 */
class SyncTools extends Command
{
    public const FAILURE = 1;
    public const SUCCESS = 0;
        
    public function __construct(private readonly \PolarisPrestaConnector $module)
    {
        parent::__construct();
    }

    /**
     * Ajoute un paramètre pour obtenir la sortie de la configuration de connexion au backoffice, pour debug.
     */
    protected function configure(): void
    {
        $this->setName(strtolower($this->module->getBridge()->getId()) . 'prestaconnector:tools');
        $this->setDescription('Obtient l\'accès aux outils de debug');
        $this
            ->addOption(
                'dump-login',
                null,
                InputOption::VALUE_NONE,
                'Affiche la configuration de connexion au backoffice (login, token, url) pour debug.'
            );
    }

    /**
     * Exécution de la commande : affiche la configuration de connexion au backoffice si l'option --dump-login est utilisée, sinon affiche un message d'aide.   
     */
    protected function execute(InputInterface $input, OutputInterface $output) : int
    {
        $io = new SymfonyStyle($input, $output);
        $io->title('PolarisPrestaConnector — Tools');

        if ($input->getOption('dump-login')) 
        {            
            $cfgLogin = $this->module->getCfg()->get(SyncConfiguration::CFG_LOGIN);

            // Affichage du JSON de manière lisible        
            $io->success('Configuration de connexion au backoffice :');
            $io->writeln(json_encode($cfgLogin, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES));
        
            return self::SUCCESS;        
        }
        else
        {
            $io->warning('Aucune option spécifiée. Utilisez --dump-login pour afficher la configuration de connexion au backoffice.');
            return self::FAILURE;
        }
    }
}

