<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\CatatanPertumbuhan;
use Illuminate\Support\Facades\Auth;

class CatatanPertumbuhanController extends Controller
{
    // Menampilkan semua catatan pertumbuhan berdasarkan anak
    public function index($anakId = null)
    {
        // Jika $anakId dari URL parameter, gunakan itu
        // Jika tidak ada, cek query parameter
        if (!$anakId) {
            return response()->json(['message' => 'Data tidak ditemukan'], 404);
        }

        try {
            $data = CatatanPertumbuhan::where('anak_id', $anakId)->get();

            if ($data->isEmpty()) {
                // Kembalikan array kosong dengan status 200 agar front-end tahu tidak ada kesalahan
                return response()->json([], 200);
            }

            return response()->json($data, 200);
        } catch (\Exception $e) {
            return response()->json(['message' => 'Gagal mengambil data pertumbuhan', 'error' => $e->getMessage()], 500);
        }
    }


    // Menyimpan catatan pertumbuhan baru
    public function store(Request $request)
    {
        $request->validate([
            'anak_id' => 'required|exists:anak,id',
            'tanggal_pengukuran' => 'required|date',
            'berat_badan' => 'required|numeric|min:0',
            'tinggi_badan' => 'required|numeric|min:0',
            'lingkar_kepala' => 'required|numeric|min:0'
        ]);

        try {
            $catatan = CatatanPertumbuhan::create([
                'anak_id' => $request->anak_id,
                'tanggal_pengukuran' => $request->tanggal_pengukuran,
                'berat_badan' => $request->berat_badan,
                'tinggi_badan' => $request->tinggi_badan,
                'lingkar_kepala' => $request->lingkar_kepala,
            ]);

            return response()->json($catatan, 201);
        } catch (\Exception $e) {
            return response()->json(['message' => 'Gagal menyimpan data pertumbuhan', 'error' => $e->getMessage()], 500);
        }
    }


    // Menampilkan detail catatan pertumbuhan
    public function show($id)
    {
        try {
            $catatan = CatatanPertumbuhan::find($id);

            if (!$catatan) {
                return response()->json(['message' => 'Data tidak ditemukan'], 404);
            }

            return response()->json($catatan, 200);
        } catch (\Exception $e) {
            return response()->json(['message' => 'Gagal mengambil detail data pertumbuhan', 'error' => $e->getMessage()], 500);
        }
    }

    // Mengupdate catatan pertumbuhan
    public function update(Request $request, $id)
    {
        try {
            $catatan = CatatanPertumbuhan::find($id);

            if (!$catatan) {
                return response()->json(['message' => 'Data tidak ditemukan'], 404);
            }

            $request->validate([
                'tanggal_pengukuran' => 'sometimes|date',
                'berat_badan' => 'sometimes|required|numeric|min:0',
                'tinggi_badan' => 'sometimes|required|numeric|min:0',
                'lingkar_kepala' => 'sometimes|required|numeric|min:0'
            ]);

            $catatan->update($request->only([
                'tanggal_pengukuran',
                'berat_badan',
                'tinggi_badan',
                'lingkar_kepala'
            ]));

            return response()->json($catatan, 200);
        } catch (\Exception $e) {
            return response()->json(['message' => 'Gagal mengupdate data pertumbuhan', 'error' => $e->getMessage()], 500);
        }
    }

    // Menghapus catatan pertumbuhan
    public function destroy($id)
    {
        try {
            $catatan = CatatanPertumbuhan::find($id);

            if (!$catatan) {
                return response()->json(['message' => 'Data tidak ditemukan'], 404);
            }

            $catatan->delete();

            return response()->json(['message' => 'Data berhasil dihapus'], 200);
        } catch (\Exception $e) {
            return response()->json(['message' => 'Gagal menghapus data pertumbuhan', 'error' => $e->getMessage()], 500);
        }
    }
}
