query('anak_id'); $jadwal = JadwalImunisasi::where('anak_id', $anak_id)->get(); return response()->json($jadwal, 200); } // Menyimpan jadwal imunisasi baru public function store(Request $request) { $request->validate([ 'anak_id' => 'required|exists:anak,id', 'nama_imunisasi' => 'required|string|max:255', 'tanggal_imunisasi' => 'required|date', 'is_done' => 'sometimes|boolean', 'bukti_file' => 'nullable|file|mimes:jpg,jpeg,png,pdf|max:2048', ]); $data = $request->all(); // Proses upload file jika ada if ($request->hasFile('bukti_file')) { $file = $request->file('bukti_file'); $path = $file->store('bukti_imunisasi', 'public'); // simpan ke storage/app/public/bukti_imunisasi $data['bukti_file'] = $path; } $jadwal = JadwalImunisasi::create($data); return response()->json($jadwal, 201); } // Menampilkan detail jadwal imunisasi public function show($id) { $jadwal = JadwalImunisasi::find($id); if (!$jadwal) { return response()->json(['message' => 'Data tidak ditemukan'], 404); } return response()->json($jadwal, 200); } // Mengupdate jadwal imunisasi (termasuk bukti_file) public function update(Request $request, $id) { $jadwal = JadwalImunisasi::find($id); if (!$jadwal) { return response()->json(['message' => 'Data tidak ditemukan'], 404); } $request->validate([ 'nama_imunisasi' => 'sometimes|required|string|max:255', 'tanggal_imunisasi' => 'sometimes|required|date', 'bukti_file' => 'nullable|file|mimes:jpg,jpeg,png,pdf|max:2048', ]); $data = $request->all(); // Handle upload file baru (replace yang lama jika ada) if ($request->hasFile('bukti_file')) { // Hapus file lama jika ada if ($jadwal->bukti_file && Storage::disk('public')->exists($jadwal->bukti_file)) { Storage::disk('public')->delete($jadwal->bukti_file); } $file = $request->file('bukti_file'); $path = $file->store('bukti_imunisasi', 'public'); $data['bukti_file'] = $path; } $jadwal->update($data); return response()->json($jadwal, 200); } // Menghapus jadwal imunisasi dan file buktinya jika ada public function destroy($id) { $jadwal = JadwalImunisasi::find($id); if (!$jadwal) { return response()->json(['message' => 'Data tidak ditemukan'], 404); } // Hapus file bukti jika ada if ($jadwal->bukti_file && Storage::disk('public')->exists($jadwal->bukti_file)) { Storage::disk('public')->delete($jadwal->bukti_file); } $jadwal->delete(); return response()->json(['message' => 'Data berhasil dihapus'], 200); } // Toggle status selesai public function toggleStatus($id) { $jadwal = JadwalImunisasi::find($id); if (!$jadwal) { return response()->json(['message' => 'Data tidak ditemukan'], 404); } $jadwal->is_done = !$jadwal->is_done; $jadwal->save(); return response()->json($jadwal, 200); } }