<?php

namespace App\Console\Commands;

use App\Services\BlingOAuthAutomation;
use Illuminate\Console\Command;

class TestBlingOAuth extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'test:bling-oauth';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Testa apenas a automação OAuth do Bling (sem salvar no banco)';

    /**
     * Execute the console command.
     */
    public function handle()
    {
        $this->info('🔍 Testando automação OAuth do Bling...');
        $this->newLine();

        try {
            $automation = new BlingOAuthAutomation();
            
            $this->info('📋 Executando fluxo OAuth automático...');
            $tokens = $automation->getTokens();

            $this->info('✅ Tokens obtidos com sucesso!');
            $this->newLine();
            $this->line('<fg=cyan>Access Token:</> ' . substr($tokens['access_token'], 0, 30) . '...');
            $this->line('<fg=cyan>Refresh Token:</> ' . substr($tokens['refresh_token'], 0, 30) . '...');
            $this->line('<fg=cyan>Expira em:</> ' . $tokens['expires_in'] . ' segundos');
            $this->newLine();
            $this->info('🎉 Automação OAuth funcionando corretamente!');
            $this->info('💡 Use "php artisan bling:import-token" para importar de arquivo JSON');
            
            return self::SUCCESS;

        } catch (\Exception $e) {
            $this->error('❌ Erro na automação OAuth:');
            $this->error($e->getMessage());
            $this->newLine();
            $this->line('<fg=yellow>Verifique os logs em storage/logs/laravel.log</>');
            return self::FAILURE;
        }
    }
}
