setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo "

🔍 TEST API BERITA - DEBUGGING

"; echo "
"; // 1. CEK DATA BERITA echo "

📰 1. DATA BERITA DI DATABASE

"; $stmt = $pdo->query(" SELECT id, id_berita, judul, target_berita, target_kelas, status, created_at FROM berita ORDER BY created_at DESC "); $beritaList = $stmt->fetchAll(PDO::FETCH_ASSOC); if (empty($beritaList)) { echo "

❌ TIDAK ADA BERITA DI DATABASE!

"; } else { echo "

✅ Total berita: " . count($beritaList) . "

"; echo ""; echo ""; foreach ($beritaList as $berita) { $targetKelas = $berita['target_kelas'] ?: '-'; $status = $berita['status']; $color = $status === 'published' ? 'green' : 'orange'; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; } echo "
ID Judul Target Target Kelas Status Tanggal
{$berita['id_berita']}{$berita['judul']}{$berita['target_berita']}{$targetKelas}{$status}{$berita['created_at']}
"; } echo "
"; // 2. CEK DATA SANTRI echo "

👨‍🎓 2. DATA SANTRI (SAMPLE)

"; $stmt = $pdo->query(" SELECT id_santri, nama_lengkap, kelas, status FROM santris WHERE status = 'Aktif' LIMIT 5 "); $santriList = $stmt->fetchAll(PDO::FETCH_ASSOC); if (empty($santriList)) { echo "

❌ TIDAK ADA SANTRI AKTIF!

"; } else { echo "

✅ Sample santri aktif:

"; echo ""; echo ""; foreach ($santriList as $santri) { echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; } echo "
ID Santri Nama Kelas Status
{$santri['id_santri']}{$santri['nama_lengkap']}{$santri['kelas']}{$santri['status']}
"; } echo "
"; // 3. CEK PIVOT TABLE berita_santri echo "

🔗 3. PIVOT TABLE (berita_santri)

"; $stmt = $pdo->query(" SELECT bs.*, b.judul, s.nama_lengkap FROM berita_santri bs LEFT JOIN berita b ON bs.id_berita = b.id_berita LEFT JOIN santris s ON bs.id_santri = s.id_santri LIMIT 10 "); $pivotList = $stmt->fetchAll(PDO::FETCH_ASSOC); if (empty($pivotList)) { echo "

⚠️ PIVOT TABLE KOSONG (Normal untuk berita 'semua' dan 'kelas_tertentu')

"; } else { echo "

✅ Total relasi: " . count($pivotList) . "

"; echo ""; echo ""; foreach ($pivotList as $pivot) { $dibaca = $pivot['sudah_dibaca'] ? '✅ Ya' : '❌ Belum'; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; } echo "
ID Berita Judul Berita ID Santri Nama Santri Sudah Dibaca
{$pivot['id_berita']}{$pivot['judul']}{$pivot['id_santri']}{$pivot['nama_lengkap']}{$dibaca}
"; } echo "
"; // 4. CEK DATA USER (WALI) echo "

👤 4. DATA USER/WALI (SAMPLE)

"; $stmt = $pdo->query(" SELECT id, username, role, role_id FROM users WHERE role = 'wali' LIMIT 5 "); $userList = $stmt->fetchAll(PDO::FETCH_ASSOC); if (empty($userList)) { echo "

❌ TIDAK ADA USER WALI!

"; } else { echo "

✅ Sample user wali:

"; echo ""; echo ""; foreach ($userList as $user) { echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; } echo "
ID Username Role Role ID (id_santri)
{$user['id']}{$user['username']}{$user['role']}{$user['role_id']}
"; } echo "
"; // 5. SIMULASI FILTER BERITA UNTUK SANTRI TERTENTU if (!empty($santriList)) { $sampleSantri = $santriList[0]; $idSantri = $sampleSantri['id_santri']; $kelasSantri = $sampleSantri['kelas']; echo "

🎯 5. SIMULASI FILTER BERITA

"; echo "

Untuk Santri: {$sampleSantri['nama_lengkap']} (ID: {$idSantri}, Kelas: {$kelasSantri})

"; // Query sesuai dengan logic di ApiBeritaController $sql = " SELECT b.id, b.id_berita, b.judul, b.target_berita, b.target_kelas, b.status FROM berita b WHERE b.status = 'published' AND ( -- 1. Berita untuk SEMUA b.target_berita = 'semua' -- 2. Berita untuk KELAS TERTENTU OR ( b.target_berita = 'kelas_tertentu' AND JSON_CONTAINS(b.target_kelas, '\"$kelasSantri\"') ) -- 3. Berita untuk SANTRI TERTENTU OR ( b.target_berita = 'santri_tertentu' AND EXISTS ( SELECT 1 FROM berita_santri bs WHERE bs.id_berita = b.id_berita AND bs.id_santri = '$idSantri' ) ) ) ORDER BY b.created_at DESC "; $stmt = $pdo->query($sql); $filteredBerita = $stmt->fetchAll(PDO::FETCH_ASSOC); if (empty($filteredBerita)) { echo "

❌ TIDAK ADA BERITA UNTUK SANTRI INI!

"; echo "

💡 Solusi:

"; echo ""; } else { echo "

✅ Santri ini berhak melihat " . count($filteredBerita) . " berita

"; echo ""; echo ""; foreach ($filteredBerita as $berita) { $targetKelas = $berita['target_kelas'] ?: '-'; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; } echo "
ID Judul Target Target Kelas
{$berita['id_berita']}{$berita['judul']}{$berita['target_berita']}{$targetKelas}
"; } } echo "
"; echo "

✅ DEBUGGING SELESAI

"; echo "

Langkah selanjutnya:

"; echo "
    "; echo "
  1. Pastikan ada berita dengan status 'published'
  2. "; echo "
  3. Pastikan target_berita sesuai (semua/kelas_tertentu/santri_tertentu)
  4. "; echo "
  5. Jika target 'kelas_tertentu', pastikan target_kelas berisi kelas yang benar dalam format JSON
  6. "; echo "
  7. Jika target 'santri_tertentu', pastikan ada data di pivot table berita_santri
  8. "; echo "
  9. Test login di mobile dengan user wali yang memiliki role_id sesuai dengan id_santri
  10. "; echo "
"; } catch (PDOException $e) { echo "

❌ ERROR DATABASE

"; echo "

{$e->getMessage()}

"; } ?>