'Master Menu || Order Gizi', ]; return view('dashboard.master.menu.index', $payload); } /** * Show the form for creating a new resource. */ public function create() { // } /** * Store a newly created resource in storage. */ public function store(Request $request) { DB::connection('dbOrderGizi')->beginTransaction(); try { $allData = request('data'); // dd($allData); foreach ($allData as $data) { $hargaPublic = $data['harga_public'] ? str_replace('.', '', $data['harga_public']) : null; $hargaKaryawan = $data['harga_karyawan'] ? str_replace('.', '', $data['harga_karyawan']) : null; // $hargaKeluargaPasien = $data['harga_keluarga_pasien'] ? str_replace('.', '', $data['harga_keluarga_pasien']) : null; $payload = [ 'pegawai_id_entry' => auth()->user()->id, 'pegawai_nama_entry' => auth()->user()->full_name, 'nama_menu' => $data['nama'], 'jenis_menu' => $data['jenis_makanan'], 'harga_public' => $hargaPublic, 'harga_karyawan' => $hargaKaryawan, // 'harga_keluarga_pasien' => $hargaKeluargaPasien, 'deskripsi' => $data['deskripsi'], 'status' => true, 'apakah_someday' => $data['kategori_menu'] === "Menu Normal" ? false : true, 'apakah_menu_siang' => (isset($data['apakah_menu_siang']) && $data['apakah_menu_siang'] === "iya") ? true : false, 'apakah_menu_sore' => (isset($data['apakah_menu_sore']) && $data['apakah_menu_sore'] === "iya") ? true : false ]; if($data['foto']){ $imageName = Str::random(15) . '.' . $data['foto']->getClientOriginalExtension(); Storage::disk('img_menu')->put($imageName, file_get_contents($data['foto'])); $payload['foto'] =$imageName; } $menu = Menu::create($payload); if(isset($data['kategori_diet_id'])){ $categories = $data['kategori_diet_id']; foreach ($categories as $category) { $payloadCategory = [ 'pegawai_id_entry' => auth()->user()->id, 'pegawai_nama_entry' => auth()->user()->full_name, 'kategori_diet_id' => $category, 'master_menu_id' => $menu->master_menu_id, ]; KategoriKlasifikasiPaketMenu::create($payloadCategory); } } if(isset($data['kalori_id'])){ $kalories = $data['kalori_id']; foreach ($kalories as $kalori) { $payloadKalori = [ 'pegawai_id_entry' => auth()->user()->id, 'pegawai_nama_entry' => auth()->user()->full_name, 'kalori_id' => $kalori, 'master_menu_id' => $menu->master_menu_id, ]; KlasifikasiMenuKalori::create($payloadKalori); } } if(isset($data['tanggal']) && ($data['kategori_menu'] === "Menu Normal")){ $tanggal = $data['tanggal']; foreach ($tanggal as $tgl) { $payloadTgl = [ 'pegawai_id_entry' => auth()->user()->id, 'pegawai_nama_entry' => auth()->user()->full_name, 'tgl_harian' => $tgl, 'master_menu_id' => $menu->master_menu_id, ]; TanggalMenuTersedia::create($payloadTgl); } } } //code... DB::connection('dbOrderGizi')->commit(); return response()->json([ 'status' => true, 'message' => 'Menu berhasil ditambahkan!' ]); } catch (\Throwable $th) { DB::connection('dbOrderGizi')->rollBack(); return response()->json([ 'status' => false, 'message' => 'Menu gagal ditambahkan!', 'errors' => $th->getMessage() ]); } } /** * Display the specified resource. */ public function show(string $id) { // } /** * Show the form for editing the specified resource. */ public function edit(string $id) { // } /** * Update the specified resource in storage. */ public function update(Request $request, string $id) { try { DB::connection('dbOrderGizi')->beginTransaction(); KlasifikasiMenuKalori::where('master_menu_id', $id)->delete(); TanggalMenuTersedia::where('master_menu_id', $id)->delete(); KategoriKlasifikasiPaketMenu::where('master_menu_id', $id)->delete(); $menu = Menu::where('master_menu_id', $id)->first(); $menuKategoriDiet = request('kategori_diet_id'); $menuKalori = request('kalori_id'); $menuTanggal = request('tanggal'); $hargaPublic = request('harga_public') ? str_replace('.', '', request('harga_public')) : null; $hargaKaryawan = request('harga_karyawan') ? str_replace('.', '', request('harga_karyawan')) : null; $payload = [ 'pegawai_id_modified' => auth()->user()->id, 'pegawai_nama_modified' => auth()->user()->full_name, 'nama_menu' => request('nama'), 'jenis_menu' => request('jenis_makanan'), 'harga_public' => $hargaPublic, 'harga_karyawan' => $hargaKaryawan, 'deskripsi' => request('deskripsi'), 'status' => true, 'apakah_someday' => request('kategori_menu') === "Menu Normal" ? false : true, 'apakah_menu_siang' => (request('apakah_menu_siang') && request('apakah_menu_siang') === "iya") ? true : false, 'apakah_menu_sore' => (request('apakah_menu_sore') && request('apakah_menu_sore') === "iya") ? true : false ]; if(request()->hasFile('foto')){ $imageName = Str::random(15) . '.' . request('foto')->getClientOriginalExtension(); Storage::disk('img_menu')->put($imageName, file_get_contents(request('foto'))); $payload['foto'] =$imageName; } $menu->update($payload); if(isset($menuKategoriDiet)){ foreach ($menuKategoriDiet as $category) { $payloadCategory = [ 'pegawai_id_entry' => auth()->user()->id, 'pegawai_nama_entry' => auth()->user()->full_name, 'kategori_diet_id' => $category, 'master_menu_id' => $menu->master_menu_id, ]; KategoriKlasifikasiPaketMenu::create($payloadCategory); } } if(isset($menuKalori)){ foreach ($menuKalori as $kalori) { $payloadKalori = [ 'pegawai_id_entry' => auth()->user()->id, 'pegawai_nama_entry' => auth()->user()->full_name, 'kalori_id' => $kalori, 'master_menu_id' => $menu->master_menu_id, ]; KlasifikasiMenuKalori::create($payloadKalori); } } if(isset($menuTanggal) && (request('kategori_menu') === "Menu Normal")){ foreach ($menuTanggal as $tgl) { $payloadTgl = [ 'pegawai_id_entry' => auth()->user()->id, 'pegawai_nama_entry' => auth()->user()->full_name, 'tgl_harian' => $tgl, 'master_menu_id' => $menu->master_menu_id, ]; TanggalMenuTersedia::create($payloadTgl); } } DB::connection('dbOrderGizi')->commit(); return response()->json([ 'status' => true, 'message' => 'Menu berhasil diperbarui!' ]); } catch (\Throwable $th) { DB::connection('dbOrderGizi')->rollBack(); return response()->json([ 'status' => false, 'message' => 'Menu gagal ditambahkan!', 'errors' => $th->getMessage() ]); } } /** * Remove the specified resource from storage. */ public function destroy(string $id) { $data = Menu::where(['statusenabled' => true, 'master_menu_id' => $id])->first(); $payload = [ 'statusenabled' => false, 'pegawai_id_entry' => auth()->user()->id, 'pegawai_nama_entry' => auth()->user()->full_name, 'modified_at' => Carbon::now() ]; $data->update($payload); return response()->json([ 'status' => true, 'message' => 'Berhasil menghapus data' ], 200); } public function datatable(){ $data = DB::connection('dbOrderGizi') ->table('public.master_menu as mn') ->leftJoin('public.klasifikasi_menu_diet as kmd', 'kmd.master_menu_id', '=', 'mn.master_menu_id') ->leftJoin('public.kategori_diet as kd', 'kd.kategori_diet_id', '=', 'kmd.kategori_diet_id') ->leftJoin('public.detail_menu_paket_harian as dmph', 'dmph.master_menu_id', '=', 'mn.master_menu_id') ->leftJoin('public.klasifikasi_menu_kalori as kmk', 'kmk.master_menu_id', '=', 'mn.master_menu_id') ->leftJoin('public.kalori as k', 'k.kalori_id', '=', 'kmk.kalori_id') ->where('mn.statusenabled', true) ->select( 'mn.master_menu_id', 'mn.nama_menu', 'mn.foto', 'mn.jenis_menu', 'mn.harga_public', 'mn.harga_karyawan', 'mn.harga_keluarga_pasien', 'mn.deskripsi', 'mn.status', 'mn.apakah_someday', 'mn.apakah_menu_siang', 'mn.apakah_menu_sore', 'kmd.klasifikasi_menu_diet_id', 'kmd.kategori_diet_id', 'kd.nama_kategori_diet', 'dmph.detail_menu_paket_harian_id', 'dmph.tgl_harian', 'kmk.klasifikasi_menu_kalori_id', 'kmk.kalori_id', 'k.nilai_kalori' ) ->orderBy('mn.entry_at', 'desc')->get()->groupBy('master_menu_id'); $grouped = $data->map(function($items){ $first = $items->first(); $tglAvailable = $items->filter(fn($tgl) => $tgl->tgl_harian !== null) ->unique('detail_menu_paket_harian_id') ->map(function($item){ return [ 'detail_menu_paket_harian_id' => $item->detail_menu_paket_harian_id, 'tgl_harian' => $item->tgl_harian, ]; })->values(); $kategoriDiet = $items->filter(fn($kd) => $kd->klasifikasi_menu_diet_id !== null) ->unique('klasifikasi_menu_diet_id') ->map(function($item){ return [ 'klasifikasi_menu_diet_id' => $item->klasifikasi_menu_diet_id, 'kategori_diet_id' => $item->kategori_diet_id, 'nama_kategori_diet' => $item->nama_kategori_diet, ]; })->values(); $kalori = $items->filter(fn($kal) => $kal->klasifikasi_menu_kalori_id !== null) ->unique('klasifikasi_menu_kalori_id') ->map(function($item){ return [ 'kalori_id' => $item->kalori_id, 'nilai_kalori' => $item->nilai_kalori, ]; })->values(); return [ 'master_menu_id' => $first->master_menu_id, 'nama_menu' => $first->nama_menu, 'foto' => $first->foto, 'jenis_menu' => $first->jenis_menu, 'harga_public' => $first->harga_public, 'harga_karyawan' => $first->harga_karyawan, 'harga_keluarga_pasien' => $first->harga_keluarga_pasien, 'deskripsi' => $first->deskripsi, 'status' => $first->status, 'apakah_someday' => $first->apakah_someday, 'apakah_menu_siang' => $first->apakah_menu_siang, 'apakah_menu_sore' => $first->apakah_menu_sore, 'tgl' => $tglAvailable, 'kategoriDiet' => $kategoriDiet, 'kalori' => $kalori, ]; }); return response()->json([ 'status' => true, 'rows' => $grouped->values(), 'total' => $grouped->count() ]); } public function getDataDetail(string $id){ $data = Menu::with(['klasifikasiMenuDiet', 'klasifikasiMenuKalori', 'tglAvailable'])->where('master_menu_id', $id)->first(); return response()->json([ 'data' => $data ?? null, 'message' => 'berhasil mendapatkan data' ]); } public function switchMenu(string $id, $status){ $data = Menu::where('master_menu_id', $id)->first(); $statusResult = $status === "true" ? true : false; $data->update([ 'status' => $statusResult ]); return response()->json([ 'status' => true, 'message' => 'berhasil memperbarui data' ], 200); } }