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]); } }