<?php

declare(strict_types=1);

require_once __DIR__ . '/../models/Ocorrencia.php';

class DashboardController extends Controller
{
    public function index(): void
    {
        Auth::requireLogin();

        $model = new Ocorrencia();
        $resumo = $model->contarPorStatus();
        $slaResumo = $model->contarSla();
        $recentes = $model->listarRecentes(8);
        $pontosMapa = $model->listarParaMapa(100);
        $legendaCategorias = $this->buildLegend($pontosMapa);

        $this->view('dashboard/index', compact('resumo', 'slaResumo', 'recentes', 'pontosMapa', 'legendaCategorias'), 'admin');
    }

    public function mapa(): void
    {
        Auth::requireLogin();

        $model = new Ocorrencia();
        $pontosMapa = $model->listarParaMapa(500);
        $legendaCategorias = $this->buildLegend($pontosMapa);

        $this->view('dashboard/mapa', compact('pontosMapa', 'legendaCategorias'), 'admin');
    }

    private function buildLegend(array $items): array
    {
        $legend = [];

        foreach ($items as $item) {
            $name = isset($item['categoria_nome']) ? (string) $item['categoria_nome'] : 'Outros';
            if (!isset($legend[$name])) {
                $legend[$name] = isset($item['categoria_cor']) && $item['categoria_cor'] !== ''
                    ? (string) $item['categoria_cor']
                    : '#1351b4';
            }
        }

        return $legend;
    }
}
