# Kuesioner Home Care – Laravel

Paket ini berisi **kode aplikasi kustom** (model, controller, migration, seeder,
route, dan view) hasil konversi dari 2 file HTML + 1 file SQL yang Anda berikan.
Ini BUKAN instalasi Laravel yang lengkap — Anda perlu men-scaffold proyek Laravel
kosong terlebih dahulu (langkah 1), lalu menyalin isi paket ini ke dalamnya.

## Isi paket
```
app/Models/                         Responden, JawabanSaringan, IdentitasResponden,
                                     MasterPertanyaanKuisioner, JawabanKuisioner,
                                     MasterPertanyaanKualitatif, JawabanKualitatif
app/Http/Controllers/KuesionerController.php
database/migrations/*.php           7 tabel + 1 VIEW (v_skor_kuisioner), sama persis
                                     dengan kuesioner_homecare_db.sql yang Anda berikan
database/seeders/*.php               Mengisi 52 pernyataan Bagian C + 4 pertanyaan kualitatif
resources/views/welcome.blade.php    Halaman landing (dari hoesin-homecare.html)
resources/views/kuesioner.blade.php  Form kuesioner multi-step (dari kuesioner-homecare.html)
resources/views/terima-kasih.blade.php
routes/web.php
```

## Langkah instalasi

### 1. Buat proyek Laravel baru
```bash
composer create-project laravel/laravel nama-project
cd nama-project
```

### 2. Salin file dari paket ini ke proyek baru (timpa/overwrite)
Salin folder `app/Models`, file `app/Http/Controllers/KuesionerController.php`,
folder `database/migrations`, folder `database/seeders`, folder `resources/views`,
dan file `routes/web.php` dari paket ini ke lokasi yang sama di proyek Laravel
Anda. Timpa `resources/views/welcome.blade.php` dan `database/seeders/DatabaseSeeder.php`
yang sudah ada bawaan Laravel.

### 3. Atur koneksi database di `.env`
```
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=kuesioner_homecare
DB_USERNAME=root
DB_PASSWORD=
```
Buat database-nya dulu jika belum ada, misalnya lewat phpMyAdmin/mysql CLI:
```sql
CREATE DATABASE kuesioner_homecare CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
(Anda tidak perlu lagi mengimpor `kuesioner_homecare_db.sql` secara manual — migration
di paket ini akan membuat struktur tabel yang identik, termasuk VIEW `v_skor_kuisioner`.)

### 4. Jalankan migration + seeder
```bash
php artisan migrate --seed
```
Ini akan membuat semua tabel dan otomatis mengisi 52 pernyataan Bagian C serta
4 pertanyaan kualitatif ke `master_pertanyaan_kuisioner` dan `master_pertanyaan_kualitatif`.

### 5. (Opsional) Gambar latar halaman depan
`welcome.blade.php` memakai gambar `ilustrasi.png` sebagai latar. Jika Anda punya
filenya, taruh di `public/images/ilustrasi.png`. Jika tidak ada, halaman tetap
tampil normal dengan gradient tanpa foto.

### 6. Jalankan aplikasi
```bash
php artisan serve
```
Buka `http://127.0.0.1:8000` → halaman landing → tombol "Mulai Kuesioner" →
form multi-step → saat "Kirim Kuesioner" ditekan, data langsung tersimpan ke
database lewat `POST /kuesioner`, lalu diarahkan ke halaman terima kasih.

## Alur data
- **Lolos screening & selesai isi form** → tersimpan lengkap: `responden`,
  `jawaban_saringan`, `identitas_responden`, 52 baris `jawaban_kuisioner`,
  4 baris `jawaban_kualitatif` (semua dalam satu transaksi DB).
- **Gagal screening (q2/q3/q4 = "Tidak")** → otomatis terkirim ke
  `POST /kuesioner/screening-gagal` di background, tersimpan sebagai `responden`
  dengan `status_kelayakan = 'Tidak Memenuhi Syarat'` + `jawaban_saringan` saja
  (identitas & 52 pernyataan tidak diisi karena pengguna dihentikan di awal).
- Validasi server (`KuesionerController`) memastikan setiap jawaban sesuai
  ENUM di database sebelum disimpan — jika ada yang tidak valid, form akan
  menampilkan pesan peringatan alih-alih menyimpan data rusak.

## Catatan
- Skema tabel di migration dibuat identik dengan `kuesioner_homecare_db.sql`
  yang Anda kirim (nama tabel, kolom, ENUM, foreign key, VIEW skor).
- Kode 52 pernyataan (`sn1`...`intent5`) di `KuesionerController` dan seeder
  harus tetap sinkron dengan `data-group` di `kuesioner.blade.php` — jika Anda
  menambah/mengubah pertanyaan di HTML, ubah juga tiga tempat ini.
