<?php

use CodeIgniter\Router\RouteCollection;

/**
 * @var RouteCollection $routes
 */

// --- 1. RUTE PUBLIK ---
$routes->get('/', 'Home::index');

// Rute Publik Spesifik (Harus di atas (:any) agar tidak tertabrak)
$routes->get('profil/lsp-p1', 'Profil::lsp');
$routes->get('profil/struktur-organisasi', 'Profil::struktur'); 

// Rute Publik Umum
$routes->get('profil/(:any)', 'Profil::index/$1');
$routes->get('jurusan/(:any)', 'Jurusan::index/$1');

// Berita & Kontak Publik
$routes->get('berita', 'Berita::index'); 
$routes->get('berita/(:any)', 'Berita::detail/$1');
$routes->post('berita/like/(:num)', 'Berita::like/$1');
$routes->post('berita/komentar/simpan', 'Berita::simpan_komentar');
$routes->get('kontak', 'Home::kontak');
// Route Publik Kelulusan
$routes->get('kelulusan', 'Kelulusan::index');
$routes->get('kelulusan/cek', 'Kelulusan::index');
$routes->post('kelulusan/cek', 'Kelulusan::cek');
 // Ini yang utama
// Route untuk Verifikasi Download Kelulusan
$routes->post('kelulusan/verifikasi_download', 'Kelulusan::verifikasi_download');
$routes->get('kelulusan/cetak/(:any)', 'Kelulusan::cetak/$1');
 // Tambahkan ini: jika diakses GET, balikkan ke form awal
// Autentikasi
$routes->get('login', 'Auth::index');
$routes->post('auth/login_proses', 'Auth::login_proses');
$routes->get('logout', 'Auth::logout');


// --- 2. RUTE ADMIN (Grup Terproteksi) ---
$routes->group('admin', ['filter' => 'auth'], function($routes) {
    $routes->get('debug-session', 'Admin\Tester::index');
    $routes->get('user', 'Admin\User::index');
    $routes->post('user/simpan', 'Admin\User::simpan');
    $routes->post('user/update/(:num)', 'Admin\User::update/$1');
    $routes->get('user/hapus/(:num)', 'Admin\User::hapus/$1');
    
    // ===========================================================
    // PRIORITAS 1: RUTE SPESIFIK (Ditaruh PALING ATAS di dalam grup)
    // ===========================================================
    
    // A. KHUSUS ROLE: ADMIN
    $routes->group('', ['filter' => 'auth:admin'], function($routes) {
        // MANAJEMEN STRUKTUR (Ini yang Bapak keluhkan)
        $routes->get('struktur', 'Admin\Struktur::index'); 
        $routes->get('struktur/tambah', 'Admin\Struktur::tambah');
        $routes->post('struktur/simpan', 'Admin\Struktur::simpan');
        $routes->get('struktur/edit/(:num)', 'Admin\Struktur::edit/$1');
        $routes->post('struktur/update', 'Admin\Struktur::update');
        $routes->get('struktur/hapus/(:num)', 'Admin\Struktur::hapus/$1');
        
        // Slider & Profil
        $routes->get('slider', 'Admin\Slider::index');
        $routes->get('slider/tambah', 'Admin\Slider::tambah');
        $routes->post('slider/simpan', 'Admin\Slider::simpan');
        $routes->get('slider/hapus/(:num)', 'Admin\Slider::hapus/$1');
        $routes->get('profil/edit/(:any)', 'Profil::edit/$1');
        $routes->post('profil/update', 'Profil::update');
        
        // Kontak & LSP
        $routes->get('kontak', 'Admin\Kontak::index');
        $routes->get('kontak/edit', 'Admin\Kontak::edit');
        $routes->post('kontak/update', 'Admin\Kontak::update');
        $routes->get('lsp', 'Admin\Lsp::index');
        $routes->post('lsp/update', 'Admin\Lsp::update');
        
        // MANAJEMEN KOMENTAR
    $routes->get('komentar', 'Admin\Komentar::index');
    $routes->get('komentar/setujui/(:num)', 'Admin\Komentar::setujui/$1');
    $routes->get('komentar/hapus/(:num)', 'Admin\Komentar::hapus/$1');
    $routes->get('statistik', 'Admin\Statistik::index');
    });

    // B. ROLE: ADMIN & PENULIS
    $routes->group('', ['filter' => 'auth:admin,penulis'], function($routes) {
        $routes->get('berita', 'Admin\Berita::index');
        $routes->get('berita/tambah', 'Admin\Berita::tambah');
        $routes->post('berita/simpan', 'Admin\Berita::simpan');
        $routes->get('berita/edit/(:num)', 'Admin\Berita::edit/$1');
        $routes->post('berita/update', 'Admin\Berita::update');
        $routes->get('berita/hapus/(:num)', 'Admin\Berita::hapus/$1');
    });

    // -----------------------------------------------------------
    // C. ROLE: ADMIN & KAPRODI (Kelola Konten Jurusan)
    // -----------------------------------------------------------
    $routes->group('', ['filter' => 'auth:admin,kaprodi'], function($routes) {
        
        // 1. Halaman Utama Manajemen Jurusan (Menampilkan Pilihan DKV, MP, dll)
        // URL: smkn1sukalarang.sch.id/admin/jurusan
        $routes->get('jurusan', 'Jurusan::admin_index'); 
        
        // 2. Form Edit Jurusan (Setelah dipilih dari daftar di atas)
        // URL: smkn1sukalarang.sch.id/admin/jurusan/edit/dkv
        $routes->get('jurusan/edit/(:any)', 'Jurusan::edit/$1');
        
        // 3. Proses Simpan Perubahan
        $routes->post('jurusan/update', 'Jurusan::update');
        $routes->post('jurusan/upload_galeri', 'Jurusan::upload_galeri');
        $routes->get('jurusan/hapus_galeri/(:num)/(:any)', 'Jurusan::hapus_foto_galeri/$1/$2');
        $routes->get('kelulusan', 'Admin\Kelulusan::index');
        $routes->get('kelulusan/hapus/(:num)', 'Admin\Kelulusan::hapus/$1');
        $routes->post('kelulusan/import', 'Admin\Kelulusan::import');
        $routes->get('kelulusan/toggle', 'Admin\Kelulusan::toggle_status');
        $routes->get('kelulusan/edit/(:num)', 'Admin\Kelulusan::edit/$1');
        $routes->post('kelulusan/update_siswa', 'Admin\Kelulusan::update_siswa');
        $routes->post('kelulusan/hapus_masal', 'Admin\Kelulusan::hapus_masal');
    });

    // ===========================================================
    // PRIORITAS TERAKHIR: DASHBOARD UTAMA
    // ===========================================================
    // Rute '/' harus di PALING BAWAH agar tidak "mencegat" rute spesifik
    $routes->get('/', 'Admin\Berita::index');
    
});