<?php
namespace Modules\Ecommerce\Controllers;

use Gestoreasy\Core\Http\Request;
use Gestoreasy\Core\Http\Response;
use Gestoreasy\Core\View\View;
use Gestoreasy\Core\Tenant\ConnectionManager;
use Gestoreasy\Core\Tenant\TenantContext;

class EcommerceViewsController {
    private function getTenantId(): string {
        return TenantContext::getTenantId();
    }

    public function viewIndex(Request $req): Response {
        $pdo = ConnectionManager::forTenant();
        $tenantId = $this->getTenantId();
        
        // Buscar estatísticas
        $stmt = $pdo->prepare('SELECT COUNT(*) as total FROM ecommerce_produtos WHERE tenant_id = ? AND visible = TRUE');
        $stmt->execute([$tenantId]);
        $produtosVisiveis = (int)$stmt->fetch()['total'];
        
        $stmt = $pdo->prepare('SELECT COUNT(*) as total FROM ecommerce_pedidos WHERE tenant_id = ?');
        $stmt->execute([$tenantId]);
        $totalPedidos = (int)$stmt->fetch()['total'];
        
        $stmt = $pdo->prepare('SELECT COUNT(*) as total FROM ecommerce_pedidos WHERE tenant_id = ? AND status = "pendente"');
        $stmt->execute([$tenantId]);
        $pedidosPendentes = (int)$stmt->fetch()['total'];
        
        return View::render('ecommerce/admin/index', [
            'title' => 'E-commerce',
            'stats' => [
                'produtos_visiveis' => $produtosVisiveis,
                'total_pedidos' => $totalPedidos,
                'pedidos_pendentes' => $pedidosPendentes
            ]
        ]);
    }

    public function viewConfig(Request $req): Response {
        return View::render('ecommerce/admin/config', [
            'title' => 'Configurações do E-commerce'
        ]);
    }

    public function viewTemplates(Request $req): Response {
        return View::render('ecommerce/admin/templates', [
            'title' => 'Templates do E-commerce'
        ]);
    }

    public function viewDominios(Request $req): Response {
        return View::render('ecommerce/admin/dominios', [
            'title' => 'Domínios e Subdomínios'
        ]);
    }

    public function viewPagamentos(Request $req): Response {
        return View::render('ecommerce/admin/pagamentos', [
            'title' => 'Configurações de Pagamento'
        ]);
    }

    public function viewPedidos(Request $req): Response {
        return View::render('ecommerce/admin/pedidos', [
            'title' => 'Pedidos do E-commerce'
        ]);
    }

    public function viewPedido(Request $req): Response {
        $pdo = ConnectionManager::forTenant();
        $tenantId = $this->getTenantId();
        $id = $req->get('params')[0] ?? null;

        if (!$id) {
            return new Response(422, 'ID inválido');
        }

        $stmt = $pdo->prepare('SELECT * FROM ecommerce_pedidos WHERE id = ? AND tenant_id = ? LIMIT 1');
        $stmt->execute([$id, $tenantId]);
        $pedido = $stmt->fetch();

        if (!$pedido) {
            return new Response(404, 'Pedido não encontrado');
        }

        $stmt = $pdo->prepare('SELECT * FROM ecommerce_pedido_itens WHERE pedido_id = ?');
        $stmt->execute([$id]);
        $itens = $stmt->fetchAll();

        return View::render('ecommerce/admin/pedido_show', [
            'title' => 'Pedido #' . ($pedido['numero_pedido'] ?? $id),
            'pedido' => $pedido,
            'itens' => $itens
        ]);
    }
}

