<?php
// Tampilkan semua error untuk debugging
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Mulai output buffering
ob_start();

// Asumsi 'includes/load.php' berisi fungsi-fungsi helper, termasuk 'current_user' dan 'session'
require_once('../includes/load.php');

// Asumsi kelas controller berada di folder 'app/controllers/'
spl_autoload_register(function ($class) {
    if (file_exists('../app/controllers/' . $class . '.php')) {
        require_once '../app/controllers/' . $class . '.php';
    }
    // Tambahkan autoloading untuk model jika diperlukan
    if (file_exists('../app/models/' . $class . '.php')) {
        require_once '../app/models/' . $class . '.php';
    }
});

// Arahkan pengguna ke halaman login jika belum terautentikasi
if (!$session->isUserLoggedIn(true)) {
    redirect('index.php', false);
}

// Dapatkan path dari URL, bersihkan, dan pisahkan menjadi bagian-bagian
$request = isset($_GET['page']) ? $_GET['page'] : '';
$uri_parts = explode('/', $request);

// Tentukan controller dan method dari URL
$controller_name = !empty($uri_parts[0]) ? ucfirst($uri_parts[0]) . 'Controller' : 'HomeController'; // Default ke HomeController
$method_name = !empty($uri_parts[1]) ? $uri_parts[1] : 'listEmployees'; // Default ke method 'listEmployees'

// Periksa keberadaan file controller
$controller_path = '../app/controllers/' . $controller_name . '.php';
if (!file_exists($controller_path)) {
    // Jika controller tidak ditemukan, tampilkan halaman error 404
    http_response_code(404);
    echo "<h1>404 Not Found</h1>";
    exit();
}

// Muat controller
require_once $controller_path;

// Buat instance controller
$controller = new $controller_name();

// Panggil method yang sesuai
if (method_exists($controller, $method_name)) {
    // Muat template header
    include_once('../layouts/header.php');

    // Panggil method
    $controller->$method_name();

    // Selesai
} else {
    // Jika method tidak ditemukan, tampilkan halaman error 404
    http_response_code(404);
    echo "<h1>404 Not Found</h1>";
    exit();
}
?>
