MIF_E31222307/app/Http/Controllers/MakananController.php

329 lines
11 KiB
PHP

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\Makanan;
use App\Http\Requests\MakananRequest;
use App\Http\Requests\UpdateMakananRequest;
use App\Models\Kategori;
use App\Http\Requests\KategoriRequest;
use App\Http\Requests\UpdateKategoriRequest;
use App\Models\JenisMakanan;
use App\Http\Requests\JenisMakananRequest;
use App\Http\Requests\UpdateJenisMakananRequest;
use App\Models\Komponen;
// use App\Http\Requests\JenisMakananRequest;
// use App\Http\Requests\UpdateJenisMakananRequest;
use App\Models\WaktuMakan;
// use App\Http\Requests\JenisMakananRequest;
// use App\Http\Requests\UpdateJenisMakananRequest;
use App\Models\MakananKomponenWaktu;
// use App\Http\Requests\JenisMakananRequest;
// use App\Http\Requests\UpdateJenisMakananRequest;
class MakananController extends Controller
{
//
public function makanan(){
$makanans = Makanan::with('kategori', 'jenis')->paginate(10); // Add pagination with 10 items per page
return view('admin.makanan.makanan', compact('makanans'));
}
public function editmakanan(Makanan $makanan){
// Ambil semua kategori untuk dropdown
$kategoris = Kategori::pluck('kategori', 'id'); // Ambil nama dan ID kategori
$jenis_makanans = JenisMakanan::pluck('name', 'id'); // Ambil nama dan ID kategori
return view('admin.makanan.editmakanan', compact('makanan', 'kategoris', 'jenis_makanans'));
}
public function tambahMakanan(){
// Mengambil semua data kategori
$kategoris = Kategori::all(); // Pastikan ini adalah koleksi Eloquent
$jenis_makanans = JenisMakanan::all(); // Pastikan ini adalah koleksi Eloquent
// Mengirim data ke view
return view('admin.makanan.tambahmakanan', compact('kategoris', 'jenis_makanans'));
}
public function storemakanan(MakananRequest $request)
{
$validatedData = $request->validated();
// dd($validatedData);
// Ganti koma dengan titik untuk input desimal
$validatedData['lemak'] = str_replace(',', '.', $validatedData['lemak']);
$validatedData['natrium'] = str_replace(',', '.', $validatedData['natrium']);
$validatedData['energi'] = str_replace(',', '.', $validatedData['energi']);
$validatedData['karbohidrat'] = str_replace(',', '.', $validatedData['karbohidrat']);
// Simpan relasi kategori_id ke database
$validatedData['kategori_id'] = $request->input('kategori_id');
$validatedData['jenis_id'] = $request->input('jenis_id');
// Simpan data makanan ke database
Makanan::create($validatedData);
return redirect()->route('makanan')->with('success', 'Makanan berhasil ditambahkan!');
}
public function updatemakanan(UpdateMakananRequest $request, Makanan $makanan)
{
$validatedData = $request->validated();
// Simpan relasi kategori_id ke database
$validatedData['kategori_id'] = $request->input('kategori_id');
$validatedData['jenis_id'] = $request->input('jenis_id');
// Ganti koma dengan titik untuk input desimal
$validatedData['lemak'] = str_replace(',', '.', $validatedData['lemak']);
$validatedData['natrium'] = str_replace(',', '.', $validatedData['natrium']);
$validatedData['energi'] = str_replace(',', '.', $validatedData['energi']);
$validatedData['karbohidrat'] = str_replace(',', '.', $validatedData['karbohidrat']);
// Update data makanan di database
$makanan->update($validatedData);
return redirect()->route('makanan')->with('success', 'Makanan berhasil diperbarui!');
}
public function deletemakanan(Makanan $makanan) {
$makanan->delete();
return redirect()->route('makanan')->with('success', 'Makanan deleted successfully');
}
public function kategori(){
$kategoris = Kategori::paginate(10);
return view('admin.kategori.kategori', compact('kategoris'));
}
public function editkategori(Kategori $kategori){
return view('admin.kategori.editkategori', compact('kategori'));
}
public function tambahkategori(){
return view('admin.kategori.tambahkategori');
}
public function storekategori(KategoriRequest $request){
$validatedData = $request->validated();
Kategori::create($validatedData);
return redirect()->route('kategori');
}
public function updatekategori(UpdateKategoriRequest $request, Kategori $kategori)
{
$validatedData = $request->validated();
$kategori->update($validatedData);
return redirect()->route('kategori');
}
public function deletekategori(Kategori $kategori) {
$kategori->delete();
return redirect()->route('kategori')->with('success', 'user deleted successfully');
}
public function jenismakanan()
{
$jenis_makanans = JenisMakanan::paginate(10);
return view('admin.jenismakanan.jenismakanan', compact('jenis_makanans'));
}
public function editjenismakanan(JenisMakanan $jenis)
{
return view('admin.jenismakanan.editjenismakanan', compact('jenis'));
}
public function tambahjenismakanan()
{
return view('admin.jenismakanan.tambahjenismakanan');
}
public function storejenismakanan(JenisMakananRequest $request)
{
$validatedData = $request->validated();
JenisMakanan::create($validatedData);
return redirect()->route('jenismakanan');
}
public function updatejenismakanan(UpdateJenisMakananRequest $request, JenisMakanan $jenis)
{
$validatedData = $request->validated();
$jenis->update($validatedData);
return redirect()->route('jenismakanan');
}
public function deletejenismakanan(JenisMakanan $jenis)
{
$jenis->delete();
return redirect()->route('jenismakanan')->with('success', 'Jenis makanan berhasil dihapus');
}
public function komponen(){
$komponens = Komponen::paginate(10); // Add pagination with 10 items per page
return view('admin.komponen.komponen', compact('komponens'));
}
public function editkomponen(Komponen $komponen){
return view('admin.komponen.editkomponen', compact('komponen'));
}
public function tambahkomponen(){
return view('admin.komponen.tambahkomponen');
}
// public function storekomponen(KategoriRequest $request){
// $validatedData = $request->validated();
// Kategori::create($validatedData);
// return redirect()->route('kategori');
// }
// public function updatekategori(UpdateKategoriRequest $request, Kategori $kategori)
// {
// $validatedData = $request->validated();
// $kategori->update($validatedData);
// return redirect()->route('kategori');
// }
public function deletekomponen(Komponen $komponen) {
$komponen->delete();
return redirect()->route('komponen')->with('success', 'Komponen berhasil dihapus');
}
public function waktumakan(){
$waktu_makans = WaktuMakan::paginate(10); // Add pagination with 10 items per page
return view('admin.waktumakan.waktumakan', compact('waktu_makans'));
}
public function editwaktumakan(WaktuMakan $waktumakan){
return view('admin.waktumakan.editwaktumakan', compact('waktumakan'));
}
public function tambahwaktumakan(){
return view('admin.waktumakan.tambahwaktumakan');
}
// public function storekomponen(KategoriRequest $request){
// $validatedData = $request->validated();
// Kategori::create($validatedData);
// return redirect()->route('kategori');
// }
// public function updatekategori(UpdateKategoriRequest $request, Kategori $kategori)
// {
// $validatedData = $request->validated();
// $kategori->update($validatedData);
// return redirect()->route('kategori');
// }
public function deletewaktumakan(WaktuMakan $waktumakan) {
$waktumakan->delete();
return redirect()->route('waktumakan')->with('success', 'Waktu makan berhasil dihapus');
}
public function index()
{
$relasis = MakananKomponenWaktu::with(['makanan', 'komponen', 'waktuMakan'])
->orderBy('created_at', 'desc')
->paginate(10);
return view('admin.relasi.relasi', compact('relasis'));
}
public function store(Request $request)
{
$validatedData = $request->validate([
'makanan_id' => 'required|exists:makanans,id',
'komponen_id' => 'required|exists:komponens,id',
'waktu_makan_id' => 'required|exists:waktu_makans,id',
'status' => 'required|boolean'
]);
try {
MakananKomponenWaktu::create($validatedData);
return redirect()->route('relasi.index')->with('success', 'Relasi berhasil ditambahkan!');
} catch (\Illuminate\Database\QueryException $e) {
if ($e->errorInfo[1] == 1062) { // MySQL error code for duplicate entry
return redirect()->back()
->withInput()
->with('error', 'Relasi ini sudah ada dalam database.');
}
return redirect()->back()
->withInput()
->with('error', 'Terjadi kesalahan: ' . $e->getMessage());
}
}
public function edit($id)
{
$relasi = MakananKomponenWaktu::findOrFail($id);
$makanans = Makanan::all();
$komponens = Komponen::all();
$waktuMakans = WaktuMakan::all();
return view('admin.relasi.edit', compact('relasi', 'makanans', 'komponens', 'waktuMakans'));
}
public function update(Request $request, $id)
{
$validatedData = $request->validate([
'makanan_id' => 'required|exists:makanans,id',
'komponen_id' => 'required|exists:komponens,id',
'waktu_makan_id' => 'required|exists:waktu_makans,id',
'status' => 'required|boolean'
]);
try {
$relasi = MakananKomponenWaktu::findOrFail($id);
$relasi->update($validatedData);
return redirect()->route('relasi.index')->with('success', 'Relasi berhasil diperbarui!');
} catch (\Illuminate\Database\QueryException $e) {
if ($e->errorInfo[1] == 1062) { // MySQL error code for duplicate entry
return redirect()->back()
->withInput()
->with('error', 'Relasi ini sudah ada dalam database.');
}
return redirect()->back()
->withInput()
->with('error', 'Terjadi kesalahan: ' . $e->getMessage());
} catch (\Exception $e) {
return redirect()->back()
->withInput()
->with('error', 'Terjadi kesalahan: ' . $e->getMessage());
}
}
public function destroy($id)
{
$relasi = MakananKomponenWaktu::findOrFail($id);
$relasi->delete();
return redirect()->back()->with('success', 'Relasi berhasil dihapus.');
}
public function create()
{
$makanans = Makanan::all();
$komponens = Komponen::all();
$waktuMakans = WaktuMakan::all();
return view('admin.relasi.create', compact('makanans', 'komponens', 'waktuMakans'));
}
}