804618bb54
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
57 lines
2.0 KiB
PHP
57 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\ActivityLog;
|
|
use App\Models\RiwayatBantuan;
|
|
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',
|
|
]);
|
|
$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]);
|
|
}
|
|
}
|