<?php

declare(strict_types=1);

require_once dirname(__DIR__) . '/src/bootstrap.php';

foreach (glob(dirname(__DIR__) . '/src/Models/*.php') as $model) {
    require_once $model;
}
require_once dirname(__DIR__) . '/src/Auth.php';
require_once dirname(__DIR__) . '/src/Upload.php';

Auth::startSession();

$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$uri = rtrim($uri, '/') ?: '/';

$routes = [
    '/' => 'home',
    '/section' => 'section',
    '/recrutement' => 'recrutement',
    '/agenda' => 'agenda',
    '/vie-section' => 'vie-section',
    '/organigramme' => 'organigramme',
    '/contact' => 'contact',
    '/mentions-legales' => 'mentions-legales',
];

if ($uri === '/contact' && $_SERVER['REQUEST_METHOD'] === 'POST') {
    require dirname(__DIR__) . '/src/handlers/contact.php';
    exit;
}

$page = $routes[$uri] ?? null;

if ($page === null) {
    http_response_code(404);
    view('pages/404', ['title' => 'Page introuvable']);
    exit;
}

$data = ['title' => 'JSP du Gier', 'currentPage' => $page];

switch ($page) {
    case 'home':
        $data['nextEvent'] = Event::nextFeatured();
        $data['latestAlbum'] = Album::latestPublished();
        $data['events'] = Event::allUpcoming(6);
        $data['photos'] = array_slice(Photo::allForGallery(), 0, 8);
        $data['bodyClass'] = 'page-home';
        break;
    case 'agenda':
        $data['events'] = Event::allUpcoming();
        break;
    case 'vie-section':
        $data['albums'] = Album::allPublished();
        $data['photos'] = Photo::allForGallery();
        break;
    case 'organigramme':
        $data['members'] = Member::allActive();
        break;
}

view('pages/' . $page, $data);
