orderBy('tanggal', 'asc') ->get(); return response()->json([ 'status' => 'success', 'perkembangan' => $perkembangan, 'child_info' => [ 'id' => $anakId, 'records_count' => $perkembangan->count() ] ]); } catch (\Exception $e) { return response()->json([ 'status' => 'error', 'message' => 'Failed to get growth data: ' . $e->getMessage() ], 500); } } /** * Store new growth data * Always creates a new record to maintain history */ public function store(Request $request) { try { $validator = Validator::make($request->all(), [ 'anak_id' => 'required|exists:anak,id', 'berat_badan' => 'required|numeric|min:0', 'tinggi_badan' => 'required|numeric|min:0', ]); if ($validator->fails()) { return response()->json([ 'status' => 'error', 'message' => 'Validation failed', 'errors' => $validator->errors() ], 422); } // Set tanggal ke waktu saat ini $currentDate = Carbon::now(); // Create new record with current date $perkembangan = new PerkembanganAnak(); $perkembangan->anak_id = $request->anak_id; $perkembangan->tanggal = $currentDate; $perkembangan->berat_badan = $request->berat_badan; $perkembangan->tinggi_badan = $request->tinggi_badan; $perkembangan->save(); return response()->json([ 'status' => 'success', 'message' => 'Growth data saved successfully', 'perkembangan' => $perkembangan ]); } catch (\Exception $e) { \Log::error('Error saving perkembangan: ' . $e->getMessage()); return response()->json([ 'status' => 'error', 'message' => 'Failed to save growth data: ' . $e->getMessage() ], 500); } } /** * Update existing growth data * Instead of updating, creates a new record and marks the old one as updated */ public function update(Request $request, $id) { try { $validator = Validator::make($request->all(), [ 'anak_id' => 'required|exists:anak,id', 'tanggal' => 'required|date', 'berat_badan' => 'required|numeric|min:0', 'tinggi_badan' => 'required|numeric|min:0', ]); if ($validator->fails()) { return response()->json([ 'status' => 'error', 'message' => 'Validation failed', 'errors' => $validator->errors() ], 422); } // Get the old record $oldRecord = PerkembanganAnak::findOrFail($id); // Create new record with updated data $newRecord = PerkembanganAnak::create([ 'anak_id' => $request->anak_id, 'tanggal' => $request->tanggal, 'berat_badan' => $request->berat_badan, 'tinggi_badan' => $request->tinggi_badan, 'updated_from_id' => $id, // Reference to the old record ]); // Mark old record as updated $oldRecord->update([ 'is_updated' => true, 'updated_by_id' => $newRecord->id ]); return response()->json([ 'status' => 'success', 'message' => 'Growth data updated successfully', 'perkembangan' => $newRecord, 'old_record' => $oldRecord ]); } catch (\Exception $e) { return response()->json([ 'status' => 'error', 'message' => 'Failed to update growth data: ' . $e->getMessage() ], 500); } } /** * Delete growth data */ public function destroy($id) { try { $perkembangan = PerkembanganAnak::findOrFail($id); $perkembangan->delete(); return response()->json([ 'status' => 'success', 'message' => 'Growth data deleted successfully' ]); } catch (\Exception $e) { return response()->json([ 'status' => 'error', 'message' => 'Failed to delete growth data: ' . $e->getMessage() ], 500); } } }