280 lines
11 KiB
PHP
280 lines
11 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\DetailMakanan;
|
|
use App\Models\Kriteria;
|
|
use App\Models\KriteriaMakanan;
|
|
use App\Models\Makanan;
|
|
use Illuminate\Http\Request;
|
|
|
|
class MakananController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function index()
|
|
{
|
|
//menampilkan data makanan
|
|
$makanan = Makanan::all();
|
|
return view('pages.makanan.index', compact('makanan'));
|
|
}
|
|
|
|
/**
|
|
* Show the form for creating a new resource.
|
|
*
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function create()
|
|
{
|
|
//menampilkan halaman create makanan
|
|
return view('pages.makanan.create');
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\Response
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
//validasi data makanan
|
|
$request->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');
|
|
}
|
|
}
|