validate([ 'kode' => 'required', 'alternatif' => 'required', 'karbohidrat' => 'required', 'lemak' => 'required', 'protein' => 'required', 'serat' => 'required', 'karbohidrat_ket' => 'required', 'lemak_ket' => 'required', 'protein_ket' => 'required', 'serat_ket' => 'required', ], [ 'kode.required' => 'Kode harus diisi.', 'alternatif.required' => 'Alternatif harus diisi.', 'karbohidrat.required' => 'Karbohidrat harus diisi.', 'lemak.required' => 'Lemak harus diisi.', 'protein.required' => 'protein harus diisi.', 'serat.required' => 'Serat harus diisi.', 'karbohidrat_ket.required' => 'Keterangan harus diisi.', 'lemak_ket.required' => 'Keterangan harus diisi.', 'protein_ket.required' => 'Keterangan harus diisi.', 'serat_ket.required' => 'Keterangan harus diisi.', ]); //simpan karbohidrat, lemak, protein dan serat $makanan = new Makanan; $makanan->kode = $request->kode; $makanan->alternatif = $request->alternatif; $makanan->kalori = 0; $makanan->save(); $karbohidrat = Kriteria::where('nama', 'karbohidrat')->first(); $lemak = Kriteria::where('nama', 'lemak')->first(); $protein = Kriteria::where('nama', 'protein')->first(); $serat = Kriteria::where('nama', 'serat')->first(); $kriteria = new KriteriaMakanan; $kriteria->kriteria_id = $karbohidrat->id; $kriteria->makanan_id = $makanan->id; $kriteria->nilai = $request->karbohidrat; $kriteria->keterangan = $request->karbohidrat_ket; $kriteria->save(); $kriteria = new KriteriaMakanan; $kriteria->kriteria_id = $lemak->id; $kriteria->makanan_id = $makanan->id; $kriteria->nilai = $request->lemak; $kriteria->keterangan = $request->lemak_ket; $kriteria->save(); $kriteria = new KriteriaMakanan; $kriteria->kriteria_id = $protein->id; $kriteria->makanan_id = $makanan->id; $kriteria->nilai = $request->protein; $kriteria->keterangan = $request->protein_ket; $kriteria->save(); $kriteria = new KriteriaMakanan; $kriteria->kriteria_id = $serat->id; $kriteria->makanan_id = $makanan->id; $kriteria->nilai = $request->serat; $kriteria->keterangan = $request->serat_ket; $kriteria->save(); //redirect ke halaman makanan return redirect()->route('makanan.index')->with('success', 'Makanan berhasil ditambahkan.'); } /** * Display the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function show($id) { //menampilkan halaman detail alternatif makanan $detailMakanan = DetailMakanan::where('makanan_id', $id)->get(); $makanan = Makanan::findOrFail($id); $count = DetailMakanan::where('makanan_id', $id)->pluck('kalori')->sum(); return view('pages.makanan.detail', compact('makanan', 'detailMakanan', 'count')); } public function storeDetailMakanan($idMakanan, Request $request) { $id = Makanan::find($idMakanan); //validasi detail alternatif makanan $validate = $request->validate([ 'makanan_id' => 'required', 'berat' => 'required|numeric', 'waktu' => 'required', 'kalori' => 'required|numeric', 'nama_makanan' => 'required', ], [ 'berat.required' => 'Kolom berat wajib diisi.', 'kalori.required' => 'Kolom kalori wajib diisi.', 'kalori.numeric' => 'Kolom kalori berupa angkat.', 'nama_makanan.required' => 'Kolom makanan wajib diisi.', ]); $id->kalori += $request->kalori; $id->save(); DetailMakanan::create($validate); return redirect()->route('makanan.show', $id)->with('success', 'Detail makanan berhasil ditambahkan.'); } public function UpdateDetailMakanan($id, $idMakanan, Request $request) { $idmakan = Makanan::find($idMakanan); //validasi update data makanan $validate = $request->validate([ 'makanan_id' => 'required', 'berat' => 'required|numeric', 'waktu' => 'required', 'kalori' => 'required|numeric', 'nama_makanan' => 'required', ] , [ 'berat.required' => 'Kolom berat wajib diisi.', 'kalori.required' => 'Kolom kalori wajib diisi.', 'kalori.numeric' => 'Kolom kalori berupa angkat.', 'nama_makanan.required' => 'Kolom makanan wajib diisi.', ]); $detailmakanan = DetailMakanan::find($id); if ($request->kalori <= $detailmakanan->kalori) { $hasil = $detailmakanan->kalori - $request->kalori; $idmakan->kalori -= $hasil; } if ($request->kalori > $detailmakanan->kalori) { $hasil = $request->kalori - $detailmakanan->kalori; $idmakan->kalori += $hasil; } $idmakan->save(); $detailmakanan->update($validate); return redirect()->route('makanan.show', $idmakan)->with('success', 'Detail makanan berhasil edit.'); } /** * Show the form for editing the specified resource. * * @param int $id * @return \Illuminate\Http\Response */ public function edit($id) { //menampilkan halaman edi alternatid makanan $makanan = Makanan::findOrFail($id); $karbohidrat1 = Kriteria::where('nama', 'karbohidrat')->first(); $lemak1 = Kriteria::where('nama', 'lemak')->first(); $protein1 = Kriteria::where('nama', 'protein')->first(); $serat1 = Kriteria::where('nama', 'serat')->first(); $karbohidrat = KriteriaMakanan::where('makanan_id', $id)->where('kriteria_id', $karbohidrat1->id)->first(); $lemak = KriteriaMakanan::where('makanan_id', $id)->where('kriteria_id', $lemak1->id)->first(); $protein = KriteriaMakanan::where('makanan_id', $id)->where('kriteria_id', $protein1->id)->first(); $serat = KriteriaMakanan::where('makanan_id', $id)->where('kriteria_id', $serat1->id)->first(); return view('pages.makanan.edit', compact('makanan', 'karbohidrat', 'lemak', 'protein', 'serat')); } /** * 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 alternatif makanan $request->validate([ 'kode' => 'required', 'alternatif' => 'required', 'karbohidrat' => 'required', 'lemak' => 'required', 'protein' => 'required', 'serat' => 'required', ], [ 'kode.required' => 'Kode harus diisi.', 'alternatif.required' => 'Alternatif harus diisi.', 'karbohidrat.required' => 'Karbohidrat harus diisi.', 'lemak.required' => 'Lemak harus diisi.', 'protein.required' => 'Protein harus diisi.', 'serat.required' => 'Serat harus diisi.', ]); //simpan data $makanan = Makanan::findOrFail($id); $makanan->kode = $request->kode; $makanan->alternatif = $request->alternatif; $makanan->save(); $karbohidrat = Kriteria::where('nama', 'karbohidrat')->first(); $lemak = Kriteria::where('nama', 'lemak')->first(); $protein = Kriteria::where('nama', 'protein')->first(); $serat = Kriteria::where('nama', 'serat')->first(); $kriteria = KriteriaMakanan::where('makanan_id', $id)->where('kriteria_id', $karbohidrat->id)->first(); $kriteria->nilai = $request->karbohidrat; $kriteria->keterangan = $request->karbohidrat_ket; $kriteria->save(); $kriteria = KriteriaMakanan::where('makanan_id', $id)->where('kriteria_id', $lemak->id)->first(); $kriteria->nilai = $request->lemak; $kriteria->keterangan = $request->lemak_ket; $kriteria->save(); $kriteria = KriteriaMakanan::where('makanan_id', $id)->where('kriteria_id', $protein->id)->first(); $kriteria->nilai = $request->protein; $kriteria->keterangan = $request->protein_ket; $kriteria->save(); $kriteria = KriteriaMakanan::where('makanan_id', $id)->where('kriteria_id', $serat->id)->first(); $kriteria->nilai = $request->serat; $kriteria->keterangan = $request->serat_ket; $kriteria->save(); return redirect()->route('makanan.index')->with('success', 'Makanan berhasil diedit.'); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { //hapus alternatif makanan $detail_makanan = DetailMakanan::where('makanan_id', $id)->delete(); $kriteria_makanan = KriteriaMakanan::where('makanan_id', $id)->delete(); $makanan = Makanan::find($id)->delete(); return redirect()->route('makanan.index')->with('success', 'Makanan berhasil dihapus.'); } /** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroyDetailMakanan($id, $idMakanan) { //hapus detail alternatif makanan $idmakan = Makanan::find($idMakanan); $idmakan->kalori -= DetailMakanan::find($id)->kalori; $idmakan->save(); DetailMakanan::find($id)->delete(); return redirect()->route('makanan.show', $idmakan)->with('success', 'Detail makanan berhasil dihapus'); } }