# SuperApp Academy V11 — Full Source (upgrade aman)

## Jika upgrade dari V10 yang SUDAH BERJALAN
1. Backup semua file aplikasi dan database, terutama file `.env` dan folder `writable`.
2. Pastikan `.env` lama tetap ada dan benar (host, database, username, password, baseURL, OAuth, payment).
3. Unggah **isi paket lengkap** ke folder aplikasi lama, jangan hapus `.env` dan jangan hapus isi `writable`.
4. Jalankan `database/UPGRADE_V10_KE_V11.sql` satu kali **HANYA** pada DB V10 yang sudah berjalan. Backup dahulu.
5. Jangan menjalankan `database/IMPORT_SEKALI.sql` pada DB berisi data.
6. DocumentRoot harus tetap mengarah ke folder `public/`.
7. Uji dengan akun peserta dan data dummy sebelum digunakan publik.

## Jika instalasi dari awal
1. Buat database kosong dan impor hanya `database/IMPORT_SEKALI.sql`.
2. Duplikat `.env.example` menjadi `.env`, kemudian isi nilai koneksi Anda sendiri.
3. Pastikan `writable` dapat ditulis PHP dan DocumentRoot diarahkan ke `public/`.
4. Jangan jalankan SQL upgrade untuk instalasi baru.

## Jika semua halaman Whoops!
- Ini error generik CodeIgniter; paket kode saja tidak dapat memastikan akar masalah server.
- Periksa `writable/logs/log-YYYY-MM-DD.log` dan log PHP/cPanel; hapus informasi rahasia sebelum berbagi.
- Pastikan `.env` produksi **tidak tertimpa** dan PHP/ekstensi yang diperlukan tersedia.
- Pada staging saja, ubah `CI_ENVIRONMENT = development` untuk mengetahui stack trace, kemudian kembalikan ke production.

## Aturan akses
- Satu bank boleh dipakai oleh banyak quiz/tryout; masing-masing memakai `exams.id` yang berbeda.
- Membeli ujian A tidak memberikan akses ke ujian B hanya karena memakai bank sama.
- Peserta yang memiliki kelas atau materi dengan ujian yang dilampirkan di `course_items` / `material_items` dapat mengakses ujian tanpa pembelian tambahan.
- Menerbitkan quiz/tryout berbayar otomatis membuat produk pembelian satuan.
- Akses ditentukan dari grant valid dan akses induk; harga bukan bukti sudah membeli.

## Catatan
Kode sudah diperiksa sintaks PHP secara statis. Pengujian integrasi dengan database dan gateway produksi **belum** dilakukan dan harus dilakukan di staging.
