55 lines
3.0 KiB
Markdown
55 lines
3.0 KiB
Markdown
# Audit detail: `Json.php` (CI3)
|
|
|
|
**Path sumber:** `bij.mwp.co.id/application/controllers/Json.php`
|
|
**Base class:** `MY_Controller` → `MX_Controller` (HMVC; **Json tidak memakai Ion Auth untuk request API**).
|
|
|
|
## Ringkasan eksekutif
|
|
|
|
- **22 method publik** (termasuk `index`).
|
|
- Hampir semua endpoint: **POST** `token` (+ field lain), balasan **JSON**, header **`Access-Control-Allow-Origin: *`**.
|
|
- **Tidak ada layer Model**; semua interaksi DB di controller.
|
|
|
|
## Tabel per method
|
|
|
|
| Method | Login/token | Pegawai | Mobile | DB langsung | Catatan refactor |
|
|
|--------|-------------|---------|--------|-------------|------------------|
|
|
| `index` | — | — | — | Tidak | Hanya pesan tolak |
|
|
| `login_w_token` | Ya | Ya | Ya | Ya | Update `last_login`; unset field sensitif |
|
|
| `login` | Ya | Ya | Ya | Ya | MD5 password; token random di DB |
|
|
| `profil` | token | Ya | Ya | Ya | Banyak join logika jadwal/libur/cuti; kompleks |
|
|
| `save_cuti` | token | Ya | Ya | Ya | Base64 file + insert `cuti` + `cuti_dokumen` |
|
|
| `batalkan_cuti` | token | Ya | Ya | Ya | Update status |
|
|
| `save_aktifitas` | token | Ya | Ya | Ya | Upload + `aktifitas_harian` |
|
|
| `save_masuk` | token | Ya | Ya | Ya | Jadwal dinamis kolom `{N}_in`; update `presensi` |
|
|
| `save_pulang` | token | Ya | Ya | Ya | Verifikasi waktu pulang; cek field toleransi |
|
|
| `save_istirahat` | token | Ya | Ya | Ya | Update partial `presensi`; variabel `$ist` bisa tak terdefinisi jika kedua POST kosong |
|
|
| `presensi_today` | token | Ya | Ya | Ya | Insert default `presensi` jika belum ada; `serialize($jadwal)` |
|
|
| `presensi` | token | Ya | Ya | Ya | Riwayat 20 hari |
|
|
| `daftar_today` | token | Ya | Ya | Ya | Join `pegawai`/`jabatan`/`presensi`; tanggal di string SQL |
|
|
| `berita` | token | — | Ya | Ya | Pagination `dari`/`jumlah` |
|
|
| `cuti` | token | Ya | Ya | Ya | N+1 query dokumen per baris cuti |
|
|
| `lembur` | token | Ya | Ya | Ya | — |
|
|
| `libur` | token | — | Ya | Ya | Semua libur (tidak difilter pegawai) |
|
|
| `aktifitas` | token | Ya | Ya | Ya | — |
|
|
| `save_pp` | token | Ya | Ya | Ya | Hapus foto lama `unlink`; update `pegawai.photo` |
|
|
| `save_password` | token | Ya | Ya | Ya | Bandingkan MD5 password lama |
|
|
|
|
## Query / DB — pola yang dipakai
|
|
|
|
- `pegawai`: hampir selalu filter `token` atau kredensial login.
|
|
- Lookup terkait: `kantor`, `jabatan`, `unit_kerja`, `lembur`, `dilapangan`, `libur`, `cuti`, `jadwal`, `presensi`, `berita`, `cuti_dokumen`, `aktifitas_harian`.
|
|
|
|
## Private helpers
|
|
|
|
- `generateRandomString` — untuk suffix token setelah login.
|
|
- `utf8ize` — rekursif array/string; memakai **`utf8_encode`** pada string (perlu pengganti di PHP 8+).
|
|
|
|
## Prioritas implementasi di CI4 (usulan)
|
|
|
|
1. `login`, `login_w_token`, `profil`
|
|
2. `presensi_today`, `save_masuk`, `save_pulang`, `save_istirahat`
|
|
3. `save_cuti`, `cuti`, `batalkan_cuti`
|
|
4. Sisanya menurut frekuensi pemakaian aplikasi mobile.
|
|
|
|
Implementasi CI4: `app/Controllers/Api/MobileJsonController.php` + `app/Services/Mobile/MobileJsonService.php` (lihat juga [json_api_map.md](json_api_map.md)).
|