<?php

namespace App\Command;

use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;

#[AsCommand(
    name: 'app:api:test',
    description: 'Affiche des informations sur comment tester l\'API',
)]
class ApiTestCommand extends Command
{
    protected function execute(InputInterface $input, OutputInterface $output): int
    {
        $io = new SymfonyStyle($input, $output);

        $io->title('🚀 Test de l\'API avec authentification par clé');

        $io->section('1️⃣ Créer une clé API');
        $io->text('Commande:');
        $io->block('php bin/console app:api-key:create {pseudo} {nom_clé}', null, 'fg=black;bg=cyan', ' ');
        $io->text('Exemple:');
        $io->block('php bin/console app:api-key:create john "Mon API"', null, 'fg=black;bg=cyan', ' ');

        $io->section('2️⃣ Vérifier l\'état de l\'API (sans authentification)');
        $io->text('Commande cURL:');
        $io->block('curl http://localhost:8000/api/health', null, 'fg=black;bg=cyan', ' ');

        $io->section('3️⃣ Récupérer le profil (avec authentification)');
        $io->text('Remplacer TOKEN par le token généré à l\'étape 1');
        $io->block('curl -X GET http://localhost:8000/api/profile -H "Authorization: Bearer TOKEN"', null, 'fg=black;bg=cyan', ' ');

        $io->section('4️⃣ Autres endpoints');
        $endpoints = [
            'GET /api/api-keys' => 'Lister toutes vos clés API',
            'POST /api/api-keys' => 'Créer une nouvelle clé (JSON body avec "name")',
            'DELETE /api/api-keys/{id}' => 'Supprimer une clé',
            'PATCH /api/api-keys/{id}/deactivate' => 'Désactiver une clé',
        ];

        foreach ($endpoints as $route => $description) {
            $io->text("<info>$route</info> - $description");
        }

        $io->section('📚 Documentation');
        $io->text('Pour plus de détails, consultez:');
        $io->listing([
            'API_DOCUMENTATION.md - Documentation complète',
            'GUIDE_API_RAPIDE.md - Guide de démarrage',
        ]);

        $io->success('Prêt à utiliser votre API! 🎉');

        return Command::SUCCESS;
    }
}

