<?php

use CodeIgniter\Router\RouteCollection;

/**
 * @var RouteCollection $routes
 */

// --- LOGIN & AUTH ---
$routes->get('/', 'AuthPegawai::index');
$routes->get('auth', 'Auth::index');
$routes->post('auth/login', 'Auth::login');
$routes->get('logout', 'Auth::logout');
$routes->get('logoutpwa', 'Auth::logoutpwa');

// --- GROUP ADMIN (Kabupaten & OPD) ---
// Kita satukan karena keduanya menggunakan layout desktop yang mirip
$routes->group('', ['filter' => 'authFilter'], function ($routes) {

    $routes->get('dashboard', 'Home::index');
    $routes->get('rekap', 'Rekap::index');
    $routes->get('keterlambatan', 'Rekap::keterlambatan');
    $routes->get('cetaktpp', 'Rekap::tpp');
    $routes->get('cetaktpp/excel', 'Rekap::excel');
    $routes->get('rekap/manual', 'Rekap::manual');
    $routes->post('rekap/simpan_manual', 'Rekap::simpan_manual');
    $routes->get('rekap/harian', 'Rekap::harian');   // <--- TAMBAHKAN INI (Rekap Harian Baru)
    $routes->get('users', 'Users::index');
    $routes->get('pegawai/generate_password', 'Pegawai::generate_password_nip');
    $routes->post('pegawai/ajax_generate_password', 'Pegawai::ajax_generate_password');
    $routes->get('pegawai/hapus_wajah/(:num)', 'Pegawai::hapus_wajah/$1');

    $routes->post('pesan/hapus_massal', 'Pesan::hapus_massal');
    $routes->post('pesan/simpan_massal', 'Pesan::simpan_massal');

    // Pastikan rute ini ada agar JavaScript bisa memanggil data
    $routes->get('users/edit_data/(:num)', 'Users::edit_data/$1');
    $routes->post('users/update', 'Users::update');
    $routes->post('users/simpan', 'Users::simpan');
    $routes->get('users/hapus/(:num)', 'Users::hapus/$1');
    $routes->post('manajemenuser/update_password_self', 'ManajemenUser::update_password_self');

    $routes->get('pesan', 'Pesan::index');
    $routes->post('pesan/simpan', 'Pesan::simpan');
    $routes->post('pesan/update', 'Pesan::update');
    $routes->get('pesan/hapus/(:num)', 'Pesan::hapus/$1');


    // Manajemen OPD (Biasanya level Kabupaten)
    $routes->get('opd', 'Opd::index');
    $routes->post('opd/simpan', 'Opd::simpan');
    $routes->get('opd/lokasi/(:num)', 'Opd::lokasi/$1');
    $routes->post('opd/update', 'Opd::update');
    $routes->get('opd/hapus/(:num)', 'Opd::hapus/$1');
    $routes->get('opd/hapus_lokasi/(:num)/(:num)', 'Opd::hapus_lokasi/$1/$2');
    $routes->post('opd/simpan_lokasi_tunggal', 'Opd::simpan_lokasi_tunggal');

    // Manajemen Pegawai (Biasanya level OPD)
    $routes->get('pegawai', 'Pegawai::index');
    $routes->post('pegawai/simpan', 'Pegawai::simpan');
    $routes->get('pegawai/edit_data/(:num)', 'Pegawai::edit_data/$1');
    $routes->post('pegawai/update', 'Pegawai::update');
    $routes->get('pegawai/hapus/(:num)', 'Pegawai::hapus/$1');
    $routes->post('pegawai/simpan_face_vector', 'Pegawai::simpan_face_vector');
    $routes->get('pegawai/get_lokasi_by_opd/(:any)', 'Pegawai::get_lokasi_by_opd/$1');
    $routes->post('pegawai/transfer_opd', 'Pegawai::transfer_opd');

    // 4. Halaman Pilih Pegawai (Plotting) - BARU
    $routes->get('opd/kelola_pegawai_lokasi/(:num)/(:num)', 'Opd::kelola_pegawai_lokasi/$1/$2');

    $routes->post('home/ajax_aktivitas', 'Home::ajax_aktivitas');

    // 5. Proses Simpan Centang Pegawai - BARU
    $routes->post('opd/simpan_plot_pegawai', 'Opd::simpan_plot_pegawai');

    // Route untuk menyimpan perubahan lokasi (saat klik Simpan Lokasi)
    $routes->post('pegawai/update_lokasi', 'Pegawai::update_lokasi');

    $routes->post('pegawai/import_excel', 'Pegawai::import_excel');

    // Route untuk inisialisasi (upload file & hitung total baris)
    $routes->post('pegawai/init_import', 'Pegawai::init_import');

    // Route untuk memproses data per 50 baris (Server-side batch)
    $routes->post('pegawai/process_import_batch', 'Pegawai::process_import_batch');

    // (Opsional) Jika nanti Bapak ingin membuat fitur download template
    $routes->get('pegawai/download_template', 'Pegawai::download_template');

    // Konfigurasi Kerja
    $routes->get('jamkerja', 'JamKerja::index');
    $routes->post('jamkerja/simpan_grup', 'JamKerja::simpan_grup');
    $routes->get('jamkerja/detail/(:num)', 'JamKerja::detail/$1');
    $routes->post('jamkerja/simpan_detail', 'JamKerja::simpan_detail');
    $routes->post('jamkerja/update_grup', 'JamKerja::update_grup');

    $routes->get('harilibur', 'HariLibur::index');
    $routes->post('harilibur/simpan', 'HariLibur::simpan');
    $routes->get('harilibur/hapus/(:num)', 'HariLibur::hapus/$1');

    // Plotting & User
    $routes->get('plotting', 'Plotting::index');
    $routes->post('plotting/simpan', 'Plotting::simpan');
    $routes->get('plotting/hapus/(:num)', 'Plotting::hapus/$1');
    $routes->post('plotting/hapus_massal', 'Plotting::hapus_massal');
    $routes->post('plotting/ajax_list', 'Plotting::ajax_list');
    // INI YANG BARU (WAJIB DITAMBAHKAN):
    $routes->post('plotting/simpan_massal', 'Plotting::simpan_massal');

    $routes->get('plotting/hapus/(:num)', 'Plotting::hapus/$1');

    $routes->get('manajemenuser', 'ManajemenUser::index');
    $routes->post('manajemenuser/simpan', 'ManajemenUser::simpan');
    $routes->get('manajemenuser/hapus/(:num)', 'ManajemenUser::hapus/$1');

    // Terminal Absensi (Mesin Scan di Kantor)
    $routes->get('scan', 'Presensi::scan');
    $routes->post('presensi/submit_absen', 'Presensi::submit_absen');

    // $routes->get('approval', 'Approval::index');
    // $routes->post('approval/proses', 'Approval::proses');

    $routes->get('approval', 'Approval::index');
    $routes->get('approval/riwayat', 'Approval::riwayat'); // Route Baru
    $routes->post('approval/proses', 'Approval::proses');
    // Route baru untuk memproses persetujuan MASSAL (Checkbox)
    $routes->post('approval/proses_massal', 'Approval::proses_massal');

    // --- MANAJEMEN CUTI OLEH ADMIN ---
    $routes->get('cuti', 'Cuti::index');
    $routes->post('cuti/simpan', 'Cuti::simpan');
    $routes->get('cuti/hapus/(:num)', 'Cuti::hapus/$1');
});



// --- GROUP PWA (Pegawai Personal) ---
// Khusus untuk tampilan mobile pegawai di HP masing-masing
// Pintu masuk login Pegawai (PWA)
$routes->get('authpegawai', 'AuthPegawai::index');
$routes->post('authpegawai/login', 'AuthPegawai::login');





$routes->group('pwa', ['filter' => 'authFilter'], function ($routes) {
    $routes->get('dashboard', 'Pwa::index');
    $routes->post('submit_absen', 'Pwa::submit_absen');
    $routes->get('pengajuan/(:segment)', 'Pwa::pengajuan/$1');
    $routes->post('submit_izin', 'Pwa::submit_izin');
    $routes->post('submit_izin_pwa', 'Pwa::submit_izin_pwa');
    
});

// Route untuk halaman utama PWA Pegawai
$routes->get('pwa', 'Pwa::index');
$routes->get('visit', 'Visit::index');

// Route untuk proses Absen dan Izin (Wajib didaftarkan agar tombol berfungsi)
$routes->post('pwa/submit_absen', 'Pwa::submit_absen');
$routes->post('pwa/submit_izin', 'Pwa::submit_izin');
$routes->post('pegawai/ajax_list', 'Pegawai::ajax_list');
$routes->post('pwa/simpan_wajah_pwa', 'Pwa::simpan_wajah_pwa');
$routes->post('pwa/update_password', 'Pwa::update_password');
$routes->get('download/presensi.apk', 'AuthPegawai::downloadApk');



$routes->post('notifikasi/subscribe', 'Notifikasi::subscribe');

// Route untuk mengirim notifikasi secara massal (Blast)
// Bisa diakses via browser untuk tes: presensi.polmankab.go.id/notifikasi/sendReminder/pagi
$routes->get('notifikasi/sendReminder/(:any)', 'Notifikasi::sendReminder/$1');

// --- ROUTE MANAJEMEN APEL (SISI ADMIN) ---
$routes->group('apel', ['filter' => 'auth'], function ($routes) {
    $routes->get('/', 'Apel::index');                // Daftar Jadwal Apel
    $routes->post('store', 'Apel::store');           // Simpan Jadwal Baru (Kabupaten)
    $routes->get('kelola/(:num)', 'Apel::kelola/$1'); // Halaman Pilih Utusan (OPD)
    $routes->post('simpan_utusan', 'Apel::simpan_utusan'); // Simpan Utusan Massal
    $routes->get('delete/(:num)', 'Apel::delete/$1'); // Hapus Jadwal (Kabupaten)
    $routes->post('update/(:num)', 'Apel::update/$1');
});

// --- ROUTE ABSEN APEL (SISI PEGAWAI / PWA) ---
$routes->group('pwa', ['filter' => 'auth'], function ($routes) {
    // Tambahkan ini di dalam group PWA yang sudah ada
    $routes->post('submit_absen_apel', 'Pwa::submit_absen_apel');
});
