<?php

namespace App\Http\Controllers;

use App\Models\Pasien;
use App\Models\Aktivitas;
use App\Models\JenisKelamin;
use Illuminate\Http\Request;
use App\Models\KebutuhanKalori;
use App\Models\KadarGula;

class PasienController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //menampilkan semua data pasien
        $pasiens = Pasien::all();
        return view('pages.pasien.index', compact('pasiens'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //menampilkan halaman create
        $jenis_kelamin = JenisKelamin::all();
        $aktivitas = Aktivitas::all();
        $kadar_gula = KadarGula::all();
        $kebutuhan_kalori = KebutuhanKalori::all();
        return view('pages.pasien.create', compact('jenis_kelamin', 'aktivitas','kadar_gula', 'kebutuhan_kalori'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //validasi create data pasien
        $request->validate([
            'nama' => 'required',
            'jenis_kelamin_id' => 'required',
            'umur' => 'required|numeric',
            'berat' => 'required|numeric',
            'tinggi' => 'required|numeric',
            'aktivitas_id' => 'required',
            'kadar_gula_id' => 'required|numeric',
            'kebutuhan_kalori_id' => 'required|numeric',
        ], [
            'nama.required' => 'Nama harus diisi.',
            'jenis_kelamin_id.required' => 'Jenis kelamin harus diisi.',
            'umur.required' => 'Umur harus diisi.',
            'umur.numeric' => 'Umur harus berupa angka.',
            'berat.required' => 'Berat harus diisi.',
            'berat.numeric' => 'Berat harus berupa angka.',
            'tinggi.required' => 'Tinggi harus diisi.',
            'tinggi.numeric' => 'Tinggi harus berupa angka.',
            'aktivitas_id.required' => 'Aktivitas harus diisi.',
            'kadar_gula_id.required' => 'Kadar gula harus diisi.',
            'kadar_gula_id.numeric' => 'Kadar gula harus berupa angka.',
            'kebutuhan_kalori_id.required' => 'Kebutuhan kalori harus diisi.',
            'kebutuhan_kalori_id.numeric' => 'Kebutuhan kalori harus berupa angka.',

        ]);
        //simpan data ke database
        $pasien = new Pasien;
        $pasien->nama = $request->nama;
        $pasien->jenis_kelamin_id = $request->jenis_kelamin_id;
        $pasien->umur = $request->umur;
        $pasien->berat = $request->berat;
        $pasien->tinggi = $request->tinggi;
        $pasien->aktivitas_id = $request->aktivitas_id;
        $pasien->kadar_gula_id = $request->kadar_gula_id;
        $pasien->kebutuhan_kalori_id = $request->kebutuhan_kalori_id;
        $imt = $request->berat / $request->tinggi;
        if ($imt < 18.5) {
            $pasien->status = 'Underweight';
            $pasien->save();
        }
        if ($imt > 18.5 && $imt < 24.9) {
            $pasien->status = 'Normal';
            $pasien->save();
        }
        if ($imt > 24.9 && $imt < 29.9) {
            $pasien->status = 'Overweight';
            $pasien->save();
        }
        if ($imt > 30) {
            $pasien->status = 'Obesitas';
            $pasien->save();
        }
        //redirect ke halaman pasien
        return redirect()->route('pasien.index')->with('success', 'Pasien berhasil ditambahkan.');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //menampilkan halaman detail pasien
        $pasien = Pasien::find($id);
        $jenis_kelamin = JenisKelamin::all();
        $aktivitas = Aktivitas::all();
        $kadar_gula = KadarGula::all();
        $kebutuhan_kalori = KebutuhanKalori::all();
        return view('pages.pasien.detail', compact('pasien', 'jenis_kelamin', 'aktivitas','kadar_gula','kebutuhan_kalori'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //menampilkan halaman edit pasien
        $pasien = Pasien::find($id);
        $jenis_kelamin = JenisKelamin::all();
        $aktivitas = Aktivitas::all();
        $kadar_gula = KadarGula::all();
        $kebutuhan_kalori = KebutuhanKalori::all();
        return view('pages.pasien.edit', compact('pasien', 'jenis_kelamin', 'aktivitas','kadar_gula','kebutuhan_kalori'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //validasi update data pasien
        $request->validate([
            'nama' => 'required',
            'jenis_kelamin_id' => 'required',
            'umur' => 'required|numeric',
            'berat' => 'required|numeric',
            'tinggi' => 'required|numeric',
            'aktivitas_id' => 'required',
            'kadar_gula_id' => 'required|numeric',
            'kebutuhan_kalori_id' => 'required|numeric',
        ], [
            'nama.required' => 'Nama harus diisi.',
            'jenis_kelamin_id.required' => 'Jenis kelamin harus diisi.',
            'umur.required' => 'Umur harus diisi.',
            'umur.numeric' => 'Umur harus berupa angka.',
            'berat.required' => 'Berat harus diisi.',
            'berat.numeric' => 'Berat harus berupa angka.',
            'tinggi.required' => 'Tinggi harus diisi.',
            'tinggi.numeric' => 'Tinggi harus berupa angka.',
            'aktivitas_id.required' => 'Aktivitas harus diisi.',
            'kadar_gula_id.required' => 'Kadar gula harus diisi.',
            'kadar_gula_id.numeric' => 'Kadar gula harus berupa angka.',
            'kebutuhan_kalori_id.required' => 'Kebutuhan kalori harus diisi.',
            'kebutuhan_kalori_id.numeric' => 'Kebutuhan kalori harus berupa angka.',

        ]);
        //simpan data pasien
        $pasien = Pasien::find($id);
        $pasien->nama = $request->nama;
        $pasien->jenis_kelamin_id = $request->jenis_kelamin_id;
        $pasien->umur = $request->umur;
        $pasien->berat = $request->berat;
        $pasien->tinggi = $request->tinggi;
        $pasien->aktivitas_id = $request->aktivitas_id;
        $pasien->kadar_gula_id = $request->kadar_gula_id;
        $pasien->kebutuhan_kalori_id = $request->kebutuhan_kalori_id;
        $imt = $request->berat / $request->tinggi;
        if ($imt < 18.5) {
            $pasien->status = 'Underweight';
            $pasien->save();
        }
        if ($imt > 18.5 && $imt < 24.9) {
            $pasien->status = 'Normal';
            $pasien->save();
        }
        if ($imt > 24.9 && $imt < 29.9) {
            $pasien->status = 'Overweight';
            $pasien->save();
        }
        if ($imt > 30) {
            $pasien->status = 'Obesitas';
            $pasien->save();
        }
        //redirect ke halaman pasien
        return redirect()->route('pasien.index')->with('success', 'Pasien berhasil diubah');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //hapus pasien
        Pasien::find($id)->delete();
        //redirect halaman pasien
        return redirect()->route('pasien.index')->with('success', 'Pasien berhasil dihapus');
    }
}
