Show database write errors in APIs

This commit is contained in:
2026-06-11 15:16:07 +07:00
parent 3e9fa2e04f
commit 41f34e7c8e
4 changed files with 45 additions and 14 deletions
@@ -51,7 +51,9 @@ if ($action==='save' && $_SERVER['REQUEST_METHOD']==='POST') {
if (!$uid || !$riId || !$tgl) jsonError('Data tidak lengkap');
$cek = $conn->query("SELECT id FROM jadwal_piket WHERE user_id=$uid AND tanggal='$tgl' AND shift='$shift'")->fetch_assoc();
if ($cek) jsonError('Jadwal sudah ada untuk pengurus ini di shift & tanggal yang sama');
$conn->query("INSERT INTO jadwal_piket (user_id,rumah_ibadah_id,tanggal,shift,jam_mulai,jam_selesai,keterangan) VALUES ($uid,$riId,'$tgl','$shift','$jMul','$jSls','$ket')");
if (!$conn->query("INSERT INTO jadwal_piket (user_id,rumah_ibadah_id,tanggal,shift,jam_mulai,jam_selesai,keterangan) VALUES ($uid,$riId,'$tgl','$shift','$jMul','$jSls','$ket')")) {
jsonError('Gagal tambah jadwal: ' . $conn->error);
}
logAktivitas($conn,'CREATE_JADWAL','jadwal_piket',$conn->insert_id);
jsonSuccess(['id'=>$conn->insert_id],'Jadwal berhasil ditambahkan');
}
@@ -71,7 +73,12 @@ if ($action==='bulk' && $_SERVER['REQUEST_METHOD']==='POST') {
if (in_array($cur->format('w'), $hari)) {
$t = $cur->format('Y-m-d');
$cek = $conn->query("SELECT id FROM jadwal_piket WHERE user_id=$uid AND tanggal='$t' AND shift='$shift'")->fetch_assoc();
if (!$cek) { $conn->query("INSERT INTO jadwal_piket (user_id,rumah_ibadah_id,tanggal,shift,jam_mulai,jam_selesai) VALUES ($uid,$riId,'$t','$shift','$jMul','$jSls')"); $added++; }
if (!$cek) {
if (!$conn->query("INSERT INTO jadwal_piket (user_id,rumah_ibadah_id,tanggal,shift,jam_mulai,jam_selesai) VALUES ($uid,$riId,'$t','$shift','$jMul','$jSls')")) {
jsonError('Gagal tambah jadwal bulk: ' . $conn->error);
}
$added++;
}
}
$cur->modify('+1 day');
}
@@ -83,7 +90,9 @@ if ($action==='update_status' && $_SERVER['REQUEST_METHOD']==='POST') {
$id = (int)($_POST['id'] ?? 0);
$status = sanitize($conn, $_POST['status'] ?? '');
$gantiId= (int)($_POST['digantikan_oleh'] ?? 0) ?: 'NULL';
$conn->query("UPDATE jadwal_piket SET status='$status',digantikan_oleh=$gantiId WHERE id=$id");
if (!$conn->query("UPDATE jadwal_piket SET status='$status',digantikan_oleh=$gantiId WHERE id=$id")) {
jsonError('Gagal update jadwal: ' . $conn->error);
}
logAktivitas($conn,'UPDATE_JADWAL','jadwal_piket',$id);
jsonSuccess(null,'Status diperbarui');
}
@@ -91,7 +100,9 @@ if ($action==='update_status' && $_SERVER['REQUEST_METHOD']==='POST') {
if ($action==='delete' && $_SERVER['REQUEST_METHOD']==='POST') {
requireRole('admin','pengurus');
$id = (int)($_POST['id'] ?? 0);
$conn->query("DELETE FROM jadwal_piket WHERE id=$id");
if (!$conn->query("DELETE FROM jadwal_piket WHERE id=$id")) {
jsonError('Gagal hapus jadwal: ' . $conn->error);
}
logAktivitas($conn,'DELETE_JADWAL','jadwal_piket',$id);
jsonSuccess(null,'Jadwal dihapus');
}
@@ -57,13 +57,17 @@ if ($action === 'save' && $_SERVER['REQUEST_METHOD'] === 'POST') {
if (!$alamat) jsonError('Alamat wajib diisi');
if ($id > 0) {
$conn->query("UPDATE keluarga SET no_kk='$no_kk',alamat='$alamat',rt='$rt',rw='$rw',kelurahan='$kel',kecamatan='$kec',kota='$kota',lat=$lat,lng=$lng,status_ekonomi='$status_ek',rumah_ibadah_id=$ibadah_id WHERE id=$id");
if (!$conn->query("UPDATE keluarga SET no_kk='$no_kk',alamat='$alamat',rt='$rt',rw='$rw',kelurahan='$kel',kecamatan='$kec',kota='$kota',lat=$lat,lng=$lng,status_ekonomi='$status_ek',rumah_ibadah_id=$ibadah_id WHERE id=$id")) {
jsonError('Gagal update keluarga: ' . $conn->error);
}
logAktivitas($conn, 'UPDATE_KELUARGA', 'keluarga', $id);
jsonSuccess(['id'=>$id], 'Data keluarga diperbarui');
} else {
$dup = $conn->query("SELECT id FROM keluarga WHERE no_kk='$no_kk'")->fetch_assoc();
if ($dup) jsonError('No. KK sudah terdaftar');
$conn->query("INSERT INTO keluarga (no_kk,alamat,rt,rw,kelurahan,kecamatan,kota,lat,lng,status_ekonomi,rumah_ibadah_id) VALUES ('$no_kk','$alamat','$rt','$rw','$kel','$kec','$kota',$lat,$lng,'$status_ek',$ibadah_id)");
if (!$conn->query("INSERT INTO keluarga (no_kk,alamat,rt,rw,kelurahan,kecamatan,kota,lat,lng,status_ekonomi,rumah_ibadah_id) VALUES ('$no_kk','$alamat','$rt','$rw','$kel','$kec','$kota',$lat,$lng,'$status_ek',$ibadah_id)")) {
jsonError('Gagal tambah keluarga: ' . $conn->error);
}
$newId = $conn->insert_id;
logAktivitas($conn, 'CREATE_KELUARGA', 'keluarga', $newId);
jsonSuccess(['id'=>$newId], 'Keluarga berhasil ditambahkan');
@@ -74,7 +78,9 @@ if ($action === 'verifikasi' && $_SERVER['REQUEST_METHOD'] === 'POST') {
requireRole('admin', 'pengurus');
$id = (int)($_POST['id'] ?? 0);
$uid = currentUserId();
$conn->query("UPDATE keluarga SET status_verifikasi='terverifikasi', verified_by=$uid, verified_at=NOW() WHERE id=$id");
if (!$conn->query("UPDATE keluarga SET status_verifikasi='terverifikasi', verified_by=$uid, verified_at=NOW() WHERE id=$id")) {
jsonError('Gagal verifikasi keluarga: ' . $conn->error);
}
logAktivitas($conn, 'VERIFIKASI_KELUARGA', 'keluarga', $id);
jsonSuccess(null, 'Keluarga terverifikasi');
}
@@ -85,7 +91,9 @@ if ($action === 'delete' && $_SERVER['REQUEST_METHOD'] === 'POST') {
// Cek masih ada anggota
$anggota = $conn->query("SELECT COUNT(*) c FROM penduduk WHERE keluarga_id=$id")->fetch_assoc()['c'];
if ($anggota > 0) jsonError("Masih ada $anggota anggota. Pindahkan anggota terlebih dahulu.");
$conn->query("DELETE FROM keluarga WHERE id=$id");
if (!$conn->query("DELETE FROM keluarga WHERE id=$id")) {
jsonError('Gagal hapus keluarga: ' . $conn->error);
}
jsonSuccess(null, 'Keluarga dihapus');
}
@@ -50,11 +50,15 @@ if ($action === 'save' && $_SERVER['REQUEST_METHOD'] === 'POST') {
$thn_masuk_val = $thn_masuk ?: 'NULL';
if ($id > 0) {
$conn->query("UPDATE riwayat_pendidikan SET jenis='$jenis',nama_institusi='$institusi',jenjang='$jenjang',jurusan='$jurusan',tahun_masuk=$thn_masuk_val,tahun_lulus=$thn_lulus_val,status='$status' WHERE id=$id AND penduduk_id=$penduduk_id");
if (!$conn->query("UPDATE riwayat_pendidikan SET jenis='$jenis',nama_institusi='$institusi',jenjang='$jenjang',jurusan='$jurusan',tahun_masuk=$thn_masuk_val,tahun_lulus=$thn_lulus_val,status='$status' WHERE id=$id AND penduduk_id=$penduduk_id")) {
jsonError('Gagal update riwayat pendidikan: ' . $conn->error);
}
logAktivitas($conn, 'UPDATE_RIWAYAT_PDDK', 'riwayat_pendidikan', $id);
jsonSuccess(['id' => $id, 'warnings' => $warns], 'Riwayat pendidikan diperbarui');
} else {
$conn->query("INSERT INTO riwayat_pendidikan (penduduk_id,jenis,nama_institusi,jenjang,jurusan,tahun_masuk,tahun_lulus,status) VALUES ($penduduk_id,'$jenis','$institusi','$jenjang','$jurusan',$thn_masuk_val,$thn_lulus_val,'$status')");
if (!$conn->query("INSERT INTO riwayat_pendidikan (penduduk_id,jenis,nama_institusi,jenjang,jurusan,tahun_masuk,tahun_lulus,status) VALUES ($penduduk_id,'$jenis','$institusi','$jenjang','$jurusan',$thn_masuk_val,$thn_lulus_val,'$status')")) {
jsonError('Gagal tambah riwayat pendidikan: ' . $conn->error);
}
$newId = $conn->insert_id;
logAktivitas($conn, 'CREATE_RIWAYAT_PDDK', 'riwayat_pendidikan', $newId);
jsonSuccess(['id' => $newId, 'warnings' => $warns], 'Riwayat pendidikan ditambahkan');
@@ -63,7 +67,9 @@ if ($action === 'save' && $_SERVER['REQUEST_METHOD'] === 'POST') {
if ($action === 'delete' && $_SERVER['REQUEST_METHOD'] === 'POST') {
$id = (int)($_POST['id'] ?? 0);
$conn->query("DELETE FROM riwayat_pendidikan WHERE id=$id");
if (!$conn->query("DELETE FROM riwayat_pendidikan WHERE id=$id")) {
jsonError('Gagal hapus riwayat pendidikan: ' . $conn->error);
}
logAktivitas($conn, 'DELETE_RIWAYAT_PDDK', 'riwayat_pendidikan', $id);
jsonSuccess(null, 'Dihapus');
}
@@ -37,11 +37,15 @@ if ($action === 'save' && $_SERVER['REQUEST_METHOD'] === 'POST') {
if (!$nama) jsonError('Nama wajib diisi');
if (!$lat || !$lng) jsonError('Koordinat wajib diisi');
if ($id > 0) {
$conn->query("UPDATE rumah_ibadah SET nama='$nama',jenis='$jenis',kontak='$kontak',alamat='$alamat',kelurahan='$kel',kecamatan='$kec',lat=$lat,lng=$lng,radius=$radius WHERE id=$id");
if (!$conn->query("UPDATE rumah_ibadah SET nama='$nama',jenis='$jenis',kontak='$kontak',alamat='$alamat',kelurahan='$kel',kecamatan='$kec',lat=$lat,lng=$lng,radius=$radius WHERE id=$id")) {
jsonError('Gagal update rumah ibadah: ' . $conn->error);
}
logAktivitas($conn, 'UPDATE_IBADAH', 'rumah_ibadah', $id);
jsonSuccess(['id'=>$id], 'Berhasil diperbarui');
} else {
$conn->query("INSERT INTO rumah_ibadah (nama,jenis,kontak,alamat,kelurahan,kecamatan,lat,lng,radius) VALUES ('$nama','$jenis','$kontak','$alamat','$kel','$kec',$lat,$lng,$radius)");
if (!$conn->query("INSERT INTO rumah_ibadah (nama,jenis,kontak,alamat,kelurahan,kecamatan,lat,lng,radius) VALUES ('$nama','$jenis','$kontak','$alamat','$kel','$kec',$lat,$lng,$radius)")) {
jsonError('Gagal tambah rumah ibadah: ' . $conn->error);
}
$newId = $conn->insert_id;
logAktivitas($conn, 'CREATE_IBADAH', 'rumah_ibadah', $newId);
jsonSuccess(['id'=>$newId], 'Rumah ibadah berhasil ditambahkan');
@@ -51,7 +55,9 @@ if ($action === 'save' && $_SERVER['REQUEST_METHOD'] === 'POST') {
if ($action === 'delete' && $_SERVER['REQUEST_METHOD'] === 'POST') {
requireRole('admin');
$id = (int)($_POST['id'] ?? 0);
$conn->query("UPDATE rumah_ibadah SET aktif=0 WHERE id=$id");
if (!$conn->query("UPDATE rumah_ibadah SET aktif=0 WHERE id=$id")) {
jsonError('Gagal hapus rumah ibadah: ' . $conn->error);
}
logAktivitas($conn, 'DELETE_IBADAH', 'rumah_ibadah', $id);
jsonSuccess(null, 'Berhasil dihapus');
}