<?php

namespace App\Controllers;

use App\core\View;

class CategoryController
{
    public function index(string $slug): void
    {
        $categoriaNombre = $this->getCategoriaNombre($slug);

        if (!$categoriaNombre) {
            http_response_code(404);
            require __DIR__ . '/../Views/errors/404.php';
            return;
        }

        $noticias = $this->getNoticiasPorCategoria($categoriaNombre);
        $baseUrl = 'https://noticiasdehoyonline.com';

        View::render('category/index', [
            'noticias' => $noticias,
            'categoriaNombre' => $categoriaNombre,
            'categoriaSlug' => $slug,

            'pageTitle' => $categoriaNombre . ' - Noticias de Hoy Online',
            'pageDescription' => 'Las ultimas noticias de ' . strtolower($categoriaNombre) . ' en Peru y el mundo.',
            'pageKeywords' => strtolower($categoriaNombre) . ', noticias, peru, actualidad',
            'pageAuthor' => 'Noticias de Hoy Online',
            'pageUrl' => $baseUrl . '/' . $slug,
            'pageImage' => $baseUrl . '/img/og-' . $slug . '.jpg',

            'breadcrumbs' => [
                ['@type' => 'ListItem', 'position' => 1, 'name' => 'Inicio', 'item' => $baseUrl . '/'],
                ['@type' => 'ListItem', 'position' => 2, 'name' => $categoriaNombre, 'item' => $baseUrl . '/' . $slug],
            ],
        ]);
    }

    private function getCategoriaNombre(string $slug): ?string
    {
        $categorias = [
            'politica' => 'Politica',
            'deportes' => 'Deportes',
        ];
        return $categorias[$slug] ?? null;
    }

    private function getNoticiasPorCategoria(string $categoria): array
    {
        $todas = $this->getTodasLasNoticias();
        return array_filter($todas, fn($n) => $n['categoria'] === $categoria);
    }

    private function getTodasLasNoticias(): array
    {
        return [
            [
                'id' => 1,
                'titulo' => 'JNE declara fundada la apelacion de Lopez Aliaga y habilita su candidatura a regidor de Lima',
                'resumen' => 'El Jurado Nacional de Elecciones revirtio la decision del JEE de Lima Centro y confirmo que el lider de Renovacion Popular podra postular como primer regidor de la Municipalidad Metropolitana de Lima pese a su condicion de senador electo.',
                'categoria' => 'Politica',
                'imagen' => '/img/rafael-lopez-jne.webp',
                'imagenAlt' => 'Rafael Lopez Aliaga, lider de Renovacion Popular, durante declaracion publica',
                'autor' => 'Redaccion',
                'fecha' => '14 Jul 2026',
                'fechaISO' => '2026-07-14',
                'slug' => 'jne-fundada-apelacion-lopez-aliaga-regidor-lima',
            ],
            [
                'id' => 2,
                'titulo' => 'España vs Francia EN VIVO: a que hora juegan y donde ver la semifinal del Mundial 2026',
                'resumen' => 'Los dos equipos favoritos del Mundial se miden por un puesto en la gran final. España busca superar sus problemas de gol, mientras Francia llega con Mbappe como principal amenaza ofensiva.',
                'categoria' => 'Deportes',
                'imagen' => '/img/españa-vs-francia.webp',
                'imagenAlt' => 'Selecciones de España y Francia enfrentandose en semifinal del Mundial 2026 en el Estadio Dallas',
                'autor' => 'Redaccion Deportiva',
                'fecha' => '14 Jul 2026',
                'fechaISO' => '2026-07-14',
                'slug' => 'espana-vs-francia-semifinal-mundial-2026-hora-canal',
            ],
            [
                'id' => 3,
                'titulo' => 'Argentina vs Inglaterra EN VIVO: a que hora juegan y donde ver la semifinal del Mundial 2026',
                'resumen' => 'La Albiceleste de Lionel Scaloni se mide con los ingleses en el Estadio Atlanta por un lugar en la gran final. Messi busca su segunda estrella mundialista en el que puede ser su ultimo Mundial.',
                'categoria' => 'Deportes',
                'imagen' => '/img/argentina-vs-inglaterra.webp',
                'imagenAlt' => 'Selecciones de Argentina e Inglaterra disputando una semifinal del Mundial 2026 en el Estadio Atlanta',
                'autor' => 'Redaccion Deportiva',
                'fecha' => '15 Jul 2026',
                'fechaISO' => '2026-07-15',
                'slug' => 'argentina-vs-inglaterra-semifinal-mundial-2026-hora-canal',
            ],
        ];
    }
}
