Files
D1041231009-WebGIS-PovertyMap/app/Http/Controllers/BantuanController.php
T
2026-06-10 18:13:40 +07:00

70 lines
2.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\ActivityLog;
use App\Models\RiwayatBantuan;
use App\Models\RumahIbadah;
use App\Models\RumahMiskin;
use Illuminate\Http\Request;
class BantuanController extends Controller
{
public function index(string $idRumah)
{
RumahMiskin::findOrFail($idRumah);
$bantuan = RiwayatBantuan::where('id_rumah', $idRumah)
->with(['ibadah:id,nama', 'pencatat:id,name'])
->orderByDesc('tanggal_bantuan')
->get()
->map(fn($b) => [
'id' => $b->id,
'jenis_bantuan' => $b->jenis_bantuan,
'keterangan' => $b->keterangan,
'tanggal_bantuan' => $b->tanggal_bantuan->format('d/m/Y'),
'ibadah_nama' => $b->ibadah?->nama,
'pencatat_nama' => $b->pencatat?->name ?? 'Sistem',
]);
return response()->json($bantuan);
}
public function store(Request $request, string $idRumah)
{
RumahMiskin::findOrFail($idRumah);
$validated = $request->validate([
'jenis_bantuan' => 'required|string|max:255',
'keterangan' => 'nullable|string',
'tanggal_bantuan' => 'required|date',
'ibadah_id' => 'nullable|integer|exists:rumah_ibadah,id',
]);
$user = auth()->user();
if ($user->hasRole('pengurus_ibadah') && !empty($validated['ibadah_id'])) {
$ownsIbadah = RumahIbadah::where('id', $validated['ibadah_id'])
->where('user_id', $user->id)
->exists();
if (!$ownsIbadah) {
return response()->json(['message' => 'Tidak berhak mencatat bantuan dari rumah ibadah ini'], 403);
}
}
$bantuan = RiwayatBantuan::create([
'id_rumah' => $idRumah,
'dicatat_oleh' => auth()->id(),
...$validated,
]);
ActivityLog::record('create', "Catat bantuan: {$bantuan->jenis_bantuan}{$idRumah}", 'bantuan', $bantuan->id);
return response()->json(['success' => true, 'data' => $bantuan]);
}
public function destroy(string $idRumah, int $id)
{
$bantuan = RiwayatBantuan::where('id_rumah', $idRumah)->findOrFail($id);
$jenis = $bantuan->jenis_bantuan;
$bantuan->delete();
ActivityLog::record('delete', "Hapus riwayat bantuan: {$jenis} ({$idRumah})", 'bantuan', $id);
return response()->json(['success' => true]);
}
}