804618bb54
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
72 lines
2.9 KiB
PHP
72 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\ActivityLog;
|
|
use App\Models\AnggotaKeluarga;
|
|
use App\Models\RumahMiskin;
|
|
use Illuminate\Http\Request;
|
|
|
|
class AnggotaKeluargaController extends Controller
|
|
{
|
|
public function index(string $idRumah)
|
|
{
|
|
RumahMiskin::findOrFail($idRumah);
|
|
$anggota = AnggotaKeluarga::where('id_rumah', $idRumah)
|
|
->orderBy('hubungan')
|
|
->get()
|
|
->map(fn($a) => [
|
|
'id' => $a->id,
|
|
'nama' => $a->nama,
|
|
'hubungan' => $a->hubungan,
|
|
'jenis_kelamin' => $a->jenis_kelamin,
|
|
'tanggal_lahir' => $a->tanggal_lahir?->format('Y-m-d'),
|
|
'umur' => $a->umur,
|
|
'pendidikan' => $a->pendidikan,
|
|
'status_hidup' => $a->status_hidup,
|
|
]);
|
|
return response()->json($anggota);
|
|
}
|
|
|
|
public function store(Request $request, string $idRumah)
|
|
{
|
|
RumahMiskin::findOrFail($idRumah);
|
|
$validated = $request->validate([
|
|
'nama' => 'required|string|max:255',
|
|
'hubungan' => 'required|in:kepala_keluarga,istri,anak,orang_tua,lainnya',
|
|
'jenis_kelamin' => 'nullable|in:laki_laki,perempuan',
|
|
'tanggal_lahir' => 'nullable|date|before:today',
|
|
'pendidikan' => 'nullable|in:tidak_sekolah,sd,smp,sma,d3,s1_plus',
|
|
'status_hidup' => 'required|in:hidup,meninggal',
|
|
]);
|
|
$anggota = AnggotaKeluarga::create(['id_rumah' => $idRumah, ...$validated]);
|
|
ActivityLog::record('create', "Tambah anggota: {$anggota->nama} ({$idRumah})", 'anggota', $anggota->id);
|
|
return response()->json(['success' => true, 'data' => $anggota]);
|
|
}
|
|
|
|
public function update(Request $request, string $idRumah, int $id)
|
|
{
|
|
$anggota = AnggotaKeluarga::where('id_rumah', $idRumah)->findOrFail($id);
|
|
$validated = $request->validate([
|
|
'nama' => 'required|string|max:255',
|
|
'hubungan' => 'required|in:kepala_keluarga,istri,anak,orang_tua,lainnya',
|
|
'jenis_kelamin' => 'nullable|in:laki_laki,perempuan',
|
|
'tanggal_lahir' => 'nullable|date|before:today',
|
|
'pendidikan' => 'nullable|in:tidak_sekolah,sd,smp,sma,d3,s1_plus',
|
|
'status_hidup' => 'required|in:hidup,meninggal',
|
|
]);
|
|
$anggota->update($validated);
|
|
ActivityLog::record('update', "Update anggota: {$anggota->nama} ({$idRumah})", 'anggota', $anggota->id);
|
|
return response()->json(['success' => true]);
|
|
}
|
|
|
|
public function destroy(string $idRumah, int $id)
|
|
{
|
|
$anggota = AnggotaKeluarga::where('id_rumah', $idRumah)->findOrFail($id);
|
|
$nama = $anggota->nama;
|
|
$anggota->delete();
|
|
ActivityLog::record('delete', "Hapus anggota: {$nama} ({$idRumah})", 'anggota', $id);
|
|
return response()->json(['success' => true]);
|
|
}
|
|
}
|