Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ _None yet._
- **Per-student detail page (ENH-021, #66):** new `GET /mahasiswa/detail/(:any)` → `Mahasiswa::detail()` renders a single student's full biodata record (all columns from `GetBiodataMahasiswa`) read-only, with a "Detail" button added to each row in the Mahasiswa list. Reuses the `fetchBiodata($id)` single-record fetch shared with `edit()`.
- **Pagination & UI/UX refinements on menu pages (ENH-022, #68):** the three NeoFeeder menu pages (Mahasiswa, Aktivitas Kuliah, Mahasiswa Lulus/DO) gained a page-size selector (10/20/50/100), a "Halaman X dari Y" indicator with total count (via `GetCount*` endpoints), First/Prev/Next/Last links, and accessible `<nav>` markup; list headers now use human-readable column labels. Also fixes a latent bug where typed filters were stripped before reaching the API (filter is now built as a SQL-string).
- **Fill missing thesis grade (ENH-010, #110):** the Excel template gains an optional `nilai_skripsi` letter-grade column; at submission (`finish()`) the graduation wizard fills a thesis/skripsi course that is registered but still has no grade (via `UpdateNilaiPerkuliahanKelas`, composite key `id_registrasi_mahasiswa` + `id_kelas_kuliah` from the cloud transcript row) using the Excel value — only when the grade is currently missing and a value was provided. Card 3 shows the value and tags the row "(akan diisi)".
- **Verifikasi IPK menu (ENH-011, #115):** a dedicated `/verifikasi-ipk` bulk check/correct menu. Upload an Excel (nim + ipk), and the app compares each student's Excel IPK against their last active semester's IPK in Neo Feeder, showing NIM/name/Neo IPK/Excel IPK/semester/cocok-beda and a checkbox only for rows with a live active last semester. Checked rows push the Excel IPK to Neo Feeder (`UpdatePerkuliahanMahasiswa`) and the per-row results (success/failure with reason) are shown on a summary page. Uses a separate cache store + resume cookie so it never clobbers the graduation WizardProgress.

### Changed

Expand Down
12 changes: 12 additions & 0 deletions app/Config/Routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,15 @@
$routes->get('graduation/preview', 'Graduation::preview');
$routes->post('graduation/finish', 'Graduation::finish');
$routes->post('graduation/cancel', 'Graduation::cancel');

/*
* --------------------------------------------------------------------
* Verifikasi IPK (bulk last-semester IPK check) Routes (ENH-011)
* --------------------------------------------------------------------
*/
$routes->get('verifikasi-ipk', 'VerifikasiIpk::index');
$routes->post('verifikasi-ipk/upload', 'VerifikasiIpk::upload');
$routes->get('verifikasi-ipk/verif', 'VerifikasiIpk::verif');
$routes->post('verifikasi-ipk/apply', 'VerifikasiIpk::apply');
$routes->get('verifikasi-ipk/results', 'VerifikasiIpk::results');
$routes->post('verifikasi-ipk/cancel', 'VerifikasiIpk::cancel');
9 changes: 9 additions & 0 deletions app/Config/Services.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,15 @@ public static function wizardProgress($getShared = true)
return new \App\Libraries\WizardProgress(service('cache'));
}

public static function ipkVerif($getShared = true)
{
if ($getShared) {
return static::getSharedInstance('ipkVerif');
}

return new \App\Libraries\VerifikasiIpkStore(service('cache'));
}

public static function pisn($getShared = true)
{
if ($getShared) {
Expand Down
Loading