add files
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
<?php
|
||||
require_once __DIR__ . '/../config.php';
|
||||
$user = requireLogin();
|
||||
$method = $_SERVER['REQUEST_METHOD'];
|
||||
$db = getDB();
|
||||
|
||||
switch ($method) {
|
||||
case 'GET':
|
||||
$since = $_GET['since'] ?? '1970-01-01 00:00:00';
|
||||
// ambil pesan broadcast + pesan ke/dari user ini
|
||||
$st = $db->prepare("SELECT c.id, c.pesan, c.created_at, c.dibaca,
|
||||
u.nama_lengkap as dari_nama, u.id as dari_id,
|
||||
r.kode as dari_role, u.rumah_ibadah_id,
|
||||
ri.nama as dari_ri,
|
||||
c.ke_user_id
|
||||
FROM chat c
|
||||
JOIN user u ON u.id=c.dari_user_id
|
||||
JOIN role r ON r.id=u.role_id
|
||||
LEFT JOIN rumah_ibadah ri ON ri.id=u.rumah_ibadah_id
|
||||
WHERE (c.ke_user_id IS NULL OR c.ke_user_id=? OR c.dari_user_id=?)
|
||||
AND c.created_at > ?
|
||||
ORDER BY c.created_at ASC LIMIT 100");
|
||||
$st->execute([$user['id'], $user['id'], $since]);
|
||||
$msgs = $st->fetchAll();
|
||||
|
||||
// tandai sudah dibaca
|
||||
$db->prepare("UPDATE chat SET dibaca=1 WHERE ke_user_id=? AND dibaca=0")->execute([$user['id']]);
|
||||
jsonOk($msgs);
|
||||
break;
|
||||
|
||||
case 'POST':
|
||||
// hanya pengurus, relawan, superadmin
|
||||
requireRole(['superadmin','pengurus','relawan']);
|
||||
$b = json_decode(file_get_contents('php://input'), true);
|
||||
$pesan = sanitize($b['pesan'] ?? '');
|
||||
if (!$pesan) jsonErr('Pesan tidak boleh kosong.');
|
||||
$ke = !empty($b['ke_user_id']) ? (int)$b['ke_user_id'] : null;
|
||||
|
||||
$db->prepare("INSERT INTO chat (dari_user_id, ke_user_id, pesan) VALUES (?,?,?)")
|
||||
->execute([$user['id'], $ke, $pesan]);
|
||||
$newId = (int)$db->lastInsertId();
|
||||
|
||||
// ambil pesan lengkap untuk response
|
||||
$st = $db->prepare("SELECT c.id, c.pesan, c.created_at, u.nama_lengkap as dari_nama,
|
||||
r.kode as dari_role, ri.nama as dari_ri, c.ke_user_id
|
||||
FROM chat c JOIN user u ON u.id=c.dari_user_id
|
||||
JOIN role r ON r.id=u.role_id
|
||||
LEFT JOIN rumah_ibadah ri ON ri.id=u.rumah_ibadah_id
|
||||
WHERE c.id=?");
|
||||
$st->execute([$newId]);
|
||||
jsonOk($st->fetch(), 'Pesan terkirim.');
|
||||
break;
|
||||
|
||||
default: jsonErr('Method tidak didukung.', 405);
|
||||
}
|
||||
Reference in New Issue
Block a user