projectbased/updates/baseline/app/Router.php

SHA-256: 7903341d408fc7978609ddc6cbc5e267cd3f9eeeae9c09287c1593ae9545c48a
<?php
namespace App;

use App\Controllers\HomeController;
use App\Controllers\AuthController;
use App\Controllers\DashboardController;
use App\Controllers\ProjectsController;
use App\Controllers\ProfileController;
use App\Controllers\NeedsController;
use App\Controllers\AdminController;

final class Router {
    public static function dispatch(string $route): void {
        $route = trim($route);
        switch ($route) {
            case 'home': (new HomeController())->index(); break;
            case 'login': (new AuthController())->login(); break;
            case 'logout': (new AuthController())->logout(); break;
            case 'register': (new AuthController())->register(); break;

            case 'dashboard': (new DashboardController())->index(); break;

            case 'projects': (new ProjectsController())->index(); break;
            case 'project_new': (new ProjectsController())->create(); break;
            case 'project_view': (new ProjectsController())->view(); break;
            case 'project_join': (new ProjectsController())->join(); break;
            case 'project_vote': (new ProjectsController())->vote(); break;
            case 'project_veto': (new ProjectsController())->veto(); break;

            case 'profile': (new ProfileController())->index(); break;
            case 'skill_add': (new ProfileController())->addSkill(); break;

            case 'needs': (new NeedsController())->index(); break;
            case 'need_new': (new NeedsController())->create(); break;

            case 'admin_audit': (new AdminController())->audit(); break;
            default:
                http_response_code(404);
                (new HomeController())->notFound();
        }
    }
}