<?php

namespace App\Console\Commands;

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

class TestVetorApi extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'test:vetor {--produto=dipirona : Termo para buscar produtos}';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Testa a API do Vetor ERP (busca produtos com Authorization fixa)';

    /**
     * Execute the console command.
     */
    public function handle(VetorClient $vetor)
    {
        $this->info('🔍 Testando API do Vetor ERP...');
        $this->newLine();

        $termoBusca = $this->option('produto');

        try {
            $this->info('📋 Buscando produtos com filtro: ' . $termoBusca);
            
            $filters = [
                '$filter' => "contains(descricao, '{$termoBusca}') and cdFilial eq 6 and qtdEstoque gt 0",
                '$top' => 5,
            ];

            $produtos = $vetor->getProducts($filters);

            if (empty($produtos)) {
                $this->warn('⚠️  Nenhum produto encontrado com os filtros especificados.');
                return self::SUCCESS;
            }

            $this->info('✅ API do Vetor funcionando! ' . count($produtos) . ' produtos encontrados.');
            $this->newLine();

            // Exibir produtos
            foreach ($produtos as $produto) {
                $this->line('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
                $this->line('<fg=cyan>Código:</> ' . ($produto['cdProduto'] ?? 'N/A'));
                $this->line('<fg=cyan>EAN:</> ' . ($produto['codigoBarras'] ?? 'N/A'));
                $this->line('<fg=cyan>Descrição:</> ' . ($produto['descricao'] ?? 'N/A'));
                $this->line('<fg=cyan>Filial:</> ' . ($produto['cdFilial'] ?? 'N/A'));
                $this->line('<fg=cyan>Estoque:</> ' . ($produto['qtdEstoque'] ?? 0));
                $this->line('<fg=cyan>Preço:</> R$ ' . number_format($produto['vlVenda'] ?? 0, 2, ',', '.'));
                $this->newLine();
            }

            $this->info('🎉 Teste do Vetor concluído com sucesso!');
            return self::SUCCESS;

        } catch (\Exception $e) {
            $this->error('❌ Erro ao testar API do Vetor:');
            $this->error($e->getMessage());
            $this->newLine();
            $this->line('<fg=yellow>Trace:</>');
            $this->line($e->getTraceAsString());
            return self::FAILURE;
        }
    }
}
