<?php
include 'db.php';
$pageTitle = 'Painel | Motion Fit';
include 'header.php';

function scalarQuerySafe(PDO $pdo, string $sql, int $fallback = 0): int
{
    try {
        $value = $pdo->query($sql)->fetchColumn();
        return (int) ($value ?? $fallback);
    } catch (Throwable $e) {
        return $fallback;
    }
}

function rowsQuerySafe(PDO $pdo, string $sql): array
{
    try {
        return $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
    } catch (Throwable $e) {
        return [];
    }
}

$totalFormularios = scalarQuerySafe($pdo, 'SELECT COUNT(*) FROM formularios');
$totalRespostasFormularios = scalarQuerySafe($pdo, 'SELECT COUNT(*) FROM formulario_respostas');
$totalPesquisas = scalarQuerySafe($pdo, 'SELECT COUNT(*) FROM pesquisas');
$totalRespostasPesquisas = scalarQuerySafe($pdo, 'SELECT COUNT(*) FROM pesquisa_respostas');
$naoLidas = scalarQuerySafe($pdo, 'SELECT COUNT(*) FROM formulario_respostas WHERE COALESCE(lida, 0) = 0');

$recentesFormularios = rowsQuerySafe(
    $pdo,
    'SELECT f.id, f.nome, COALESCE(NULLIF(TRIM(f.categoria), \'\'), "Sem categoria") AS categoria,
            COUNT(fr.id) AS total_respostas,
            SUM(CASE WHEN COALESCE(fr.lida, 0) = 0 THEN 1 ELSE 0 END) AS nao_lidas
     FROM formularios f
     LEFT JOIN formulario_respostas fr ON fr.formulario_id = f.id
     GROUP BY f.id, f.nome, f.categoria
     ORDER BY f.id DESC
     LIMIT 2'
);

$recentesPesquisas = rowsQuerySafe(
    $pdo,
    'SELECT p.id, p.nome, COUNT(pr.id) AS total_respostas
     FROM pesquisas p
     LEFT JOIN pesquisa_respostas pr ON pr.pesquisa_id = p.id
     GROUP BY p.id, p.nome
     ORDER BY p.id DESC
     LIMIT 2'
);

$cards = [
    ['label' => 'Formulários', 'valor' => $totalFormularios, 'info' => 'Estruturas criadas'],
    ['label' => 'Respostas de formulários', 'valor' => $totalRespostasFormularios, 'info' => 'Envios recebidos'],
    ['label' => 'Pesquisas', 'valor' => $totalPesquisas, 'info' => 'Pesquisas cadastradas'],
    ['label' => 'Respostas de pesquisas', 'valor' => $totalRespostasPesquisas, 'info' => 'Resultados recebidos'],
];
?>

<section class="mb-8 grid gap-6 lg:grid-cols-[1.6fr,1fr]">
    <div class="rounded-3xl bg-gradient-to-r from-blue-700 via-blue-600 to-sky-500 p-8 text-white shadow-lg">
        <div class="mb-4 inline-flex rounded-full bg-white/15 px-3 py-1 text-xs font-semibold uppercase tracking-wide text-blue-50">Painel administrativo</div>
        <h1 class="text-3xl font-bold leading-tight sm:text-4xl">Tudo importante em uma tela só.</h1>
        <p class="mt-3 max-w-2xl text-sm text-blue-50 sm:text-base">Menos caça ao tesouro, mais ação: acompanhe formulários, respostas e pesquisas sem ficar abrindo cinco páginas para descobrir o óbvio.</p>
        <div class="mt-6 flex flex-wrap gap-3">
            <a href="formularios.php" class="rounded-2xl bg-white px-5 py-3 text-sm font-semibold text-blue-700 shadow hover:bg-blue-50">Gerenciar formulários</a>
            <a href="pesquisas.php" class="rounded-2xl border border-white/30 px-5 py-3 text-sm font-semibold text-white hover:bg-white/10">Ver pesquisas</a>
        </div>
    </div>

    <div class="rounded-3xl border border-slate-200 bg-white p-6 shadow-sm">
        <h2 class="text-lg font-bold text-slate-900">Pendências</h2>
        <div class="mt-4 rounded-2xl bg-slate-50 p-4">
            <div class="text-sm font-medium text-slate-500">Respostas ainda não lidas</div>
            <div class="mt-2 text-4xl font-bold text-slate-900"><?= $naoLidas ?></div>
            <div class="mt-2 text-xs text-slate-500">Essas respostas ainda não foram abertas no painel.</div>
        </div>
        <div class="mt-4 rounded-2xl border border-slate-200 p-4 text-sm text-slate-600">
            Abra um formulário para zerar a fila de leitura daquele item. Sem magia, só atualização de status mesmo.
        </div>
    </div>
</section>

<section class="mb-8 grid gap-4 md:grid-cols-2 xl:grid-cols-4">
    <?php foreach ($cards as $card): ?>
        <div class="rounded-3xl border border-slate-200 bg-white p-6 shadow-sm">
            <div class="text-sm font-medium text-slate-500"><?= htmlspecialchars($card['label'], ENT_QUOTES, 'UTF-8') ?></div>
            <div class="mt-2 text-4xl font-bold text-slate-900"><?= (int) $card['valor'] ?></div>
            <div class="mt-2 text-sm text-slate-500"><?= htmlspecialchars($card['info'], ENT_QUOTES, 'UTF-8') ?></div>
        </div>
    <?php endforeach; ?>
</section>

<section class="mb-8 grid gap-4 md:grid-cols-2">
    <div class="rounded-3xl border border-slate-200 bg-white p-6 shadow-sm">
        <div class="text-sm font-medium text-slate-500">Atalhos úteis</div>
        <div class="mt-4 grid gap-3 sm:grid-cols-2">
            <a href="formularios.php" class="rounded-2xl border border-slate-200 p-4 transition hover:border-blue-300 hover:bg-blue-50">
                <div class="font-semibold text-slate-900">Formulários</div>
                <div class="mt-1 text-sm text-slate-500">Criar, duplicar e acompanhar respostas.</div>
            </a>
            <a href="pesquisas.php" class="rounded-2xl border border-slate-200 p-4 transition hover:border-blue-300 hover:bg-blue-50">
                <div class="font-semibold text-slate-900">Pesquisas</div>
                <div class="mt-1 text-sm text-slate-500">Ver resultados e andamento.</div>
            </a>
        </div>
    </div>

    <div class="rounded-3xl border border-slate-200 bg-white p-6 shadow-sm">
        <div class="text-sm font-medium text-slate-500">Resumo rápido</div>
        <div class="mt-4 space-y-3 text-sm text-slate-600">
            <div class="rounded-2xl bg-slate-50 p-4">O painel agora separa total geral de pendência para evitar número repetido com roupa diferente.</div>
            <div class="rounded-2xl bg-slate-50 p-4">Nas listagens, respostas não lidas são calculadas sem inflar contagem por join torto.</div>
        </div>
    </div>
</section>

<section class="grid gap-6 lg:grid-cols-2">
    <div class="rounded-3xl border border-slate-200 bg-white p-6 shadow-sm">
        <div class="mb-4 flex items-center justify-between gap-4">
            <div>
                <h2 class="text-xl font-bold text-slate-900">Formulários recentes</h2>
                <p class="text-sm text-slate-500">Acesso direto ao que costuma precisar de manutenção.</p>
            </div>
            <a href="formularios.php" class="text-sm font-semibold text-blue-600 hover:text-blue-700">Ver todos</a>
        </div>

        <div class="space-y-3">
            <?php if (!$recentesFormularios): ?>
                <div class="rounded-2xl bg-slate-50 p-4 text-sm text-slate-500">Nenhum formulário encontrado.</div>
            <?php else: ?>
                <?php foreach ($recentesFormularios as $item): ?>
                    <div class="rounded-2xl border border-slate-200 p-4">
                        <div class="flex items-start justify-between gap-3">
                            <div>
                                <div class="font-semibold text-slate-900"><?= htmlspecialchars((string) $item['nome'], ENT_QUOTES, 'UTF-8') ?></div>
                                <div class="mt-1 text-sm text-slate-500"><?= htmlspecialchars((string) $item['categoria'], ENT_QUOTES, 'UTF-8') ?></div>
                            </div>
                            <?php if ((int) ($item['nao_lidas'] ?? 0) > 0): ?>
                                <span class="rounded-full bg-red-100 px-3 py-1 text-xs font-bold text-red-700"><?= (int) $item['nao_lidas'] ?> novas</span>
                            <?php endif; ?>
                        </div>
                        <div class="mt-3 text-sm text-slate-500"><?= (int) ($item['total_respostas'] ?? 0) ?> respostas registradas</div>
                        <div class="mt-4 flex flex-wrap gap-2">
                            <a href="formulario_Resposta.php?id=<?= (int) $item['id'] ?>" class="rounded-xl bg-blue-600 px-3 py-2 text-sm font-medium text-white hover:bg-blue-700">Ver respostas</a>
                            <a href="formulario_edit.php?id=<?= (int) $item['id'] ?>" class="rounded-xl border border-slate-300 px-3 py-2 text-sm font-medium text-slate-700 hover:bg-slate-50">Editar</a>
                        </div>
                    </div>
                <?php endforeach; ?>
            <?php endif; ?>
        </div>
    </div>

    <div class="rounded-3xl border border-slate-200 bg-white p-6 shadow-sm">
        <div class="mb-4 flex items-center justify-between gap-4">
            <div>
                <h2 class="text-xl font-bold text-slate-900">Pesquisas recentes</h2>
                <p class="text-sm text-slate-500">O que entrou por último na área de pesquisas.</p>
            </div>
            <a href="pesquisas.php" class="text-sm font-semibold text-blue-600 hover:text-blue-700">Ver todas</a>
        </div>

        <div class="space-y-3">
            <?php if (!$recentesPesquisas): ?>
                <div class="rounded-2xl bg-slate-50 p-4 text-sm text-slate-500">Nenhuma pesquisa encontrada.</div>
            <?php else: ?>
                <?php foreach ($recentesPesquisas as $item): ?>
                    <div class="rounded-2xl border border-slate-200 p-4">
                        <div class="font-semibold text-slate-900"><?= htmlspecialchars((string) $item['nome'], ENT_QUOTES, 'UTF-8') ?></div>
                        <div class="mt-2 text-sm text-slate-500"><?= (int) ($item['total_respostas'] ?? 0) ?> respostas registradas</div>
                        <div class="mt-4 flex flex-wrap gap-2">
                            <a href="pesquisa_view.php?id=<?= (int) $item['id'] ?>" class="rounded-xl bg-slate-900 px-3 py-2 text-sm font-medium text-white hover:bg-slate-800">Abrir pesquisa</a>
                            <a href="pesquisa_resultados.php?id=<?= (int) $item['id'] ?>" class="rounded-xl bg-blue-600 px-3 py-2 text-sm font-medium text-white hover:bg-blue-700">Ver resultados</a>
                        </div>
                    </div>
                <?php endforeach; ?>
            <?php endif; ?>
        </div>
    </div>
</section>

<?php include 'footer.php'; ?>
