diff --git a/app/Http/Controllers/KaloriController.php b/app/Http/Controllers/KaloriController.php index 9856126..9950a05 100644 --- a/app/Http/Controllers/KaloriController.php +++ b/app/Http/Controllers/KaloriController.php @@ -2,8 +2,12 @@ namespace App\Http\Controllers; +use App\Http\Requests\Kalori\RequestKalori; +use App\Http\Requests\Kalori\RequestUpdateKalori; use App\Models\Kalori; +use Carbon\Carbon; use Illuminate\Http\Request; +use Illuminate\Support\Facades\DB; class KaloriController extends Controller { @@ -18,16 +22,74 @@ class KaloriController extends Controller // } - public function store(){ + public function store(RequestKalori $request){ + DB::connection('dbOrderGizi')->beginTransaction(); + try { + $request->validated(); + $datas = $request->input('data'); + foreach ($datas as $data) { + $payload = [ + 'pegawai_id_entry' => auth()->user()->id, + 'pegawai_nama_entry' => auth()->user()->full_name, + 'nilai_kalori' => $data['nilai_kalori'] + ]; + Kalori::create($payload); + }; + DB::connection('dbOrderGizi')->commit(); + return response()->json([ + 'status' => true, + 'message' => 'Berhasil menambahkan data' + ], 201); + } catch (\Throwable $th) { + DB::connection('dbOrderGizi')->rollBack(); + return response()->json([ + 'status' => false, + 'message' => 'Gagal menambahkan data' + ], 500); + } + } + + public function edit(){ // } - public function update(){ - // + public function update(RequestUpdateKalori $request, string $id){ + $request->validated(); + try { + $kalori = Kalori::where('kalori_id', $id)->first(); + $payload = [ + 'nilai_kalori' => $request->input('nilai_kalori'), + 'pegawai_id_modified' => auth()->user()->id, + 'pegawai_nama_modified' => auth()->user()->full_name, + 'modified_at' => Carbon::now() + ]; + $kalori->update($payload); + return response()->json([ + 'status' => true, + 'message' => 'Berhasil memperbarui data' + ], 200); + } catch (\Throwable $th) { + return response()->json([ + 'status' => false, + 'message' => 'Gagal memperbarui data' + ], 500); + } } - public function destroy(){ - // + public function destroy(string $id){ + + $data = Kalori::where(['statusenabled' => true, 'kalori_id' => $id])->first(); + $payload = [ + 'statusenabled' => false, + 'pegawai_id_modified' => auth()->user()->id, + 'pegawai_nama_modified' => auth()->user()->full_name, + 'modified_at' => Carbon::now() + ]; + $data->update($payload); + return response()->json([ + 'status' => true, + 'message' => 'Berhasil menghapus data' + ], 200); } public function datatable(){ @@ -35,6 +97,18 @@ class KaloriController extends Controller } public function option(){ - return Kalori::where('statusenabled', true)->select('kalori_id', 'nilai_kalori')->get(); + $search = request('search'); + $query = Kalori::where('statusenabled', true); + + if(!empty($search)){ + $query->where('nilai_kalori', 'ILIKE', '%' . $search . '%'); + }else{ + $query->take(30); + } + $data = $query->select('kalori_id', 'nilai_kalori')->get(); + return response()->json([ + 'error' => 0, + 'data' => $data + ]); } } diff --git a/app/Http/Controllers/KarbohidratController.php b/app/Http/Controllers/KarbohidratController.php index 26680dd..eaa048e 100644 --- a/app/Http/Controllers/KarbohidratController.php +++ b/app/Http/Controllers/KarbohidratController.php @@ -87,8 +87,8 @@ class KarbohidratController extends Controller $karbohidrat = Karbohidrat::where('karbohidrat_id', $id)->first(); $payload = [ 'nama_karbohidrat' => $request->input('nama_karbohidrat'), - 'pegawai_id_entry' => auth()->user()->id, - 'pegawai_nama_entry' => auth()->user()->full_name, + 'pegawai_id_modified' => auth()->user()->id, + 'pegawai_nama_modified' => auth()->user()->full_name, 'modified_at' => Carbon::now() ]; $karbohidrat->update($payload); @@ -112,8 +112,8 @@ class KarbohidratController extends Controller $data = Karbohidrat::where(['statusenabled' => true, 'karbohidrat_id' => $id])->first(); $payload = [ 'statusenabled' => false, - 'pegawai_id_entry' => auth()->user()->id, - 'pegawai_nama_entry' => auth()->user()->full_name, + 'pegawai_id_modified' => auth()->user()->id, + 'pegawai_nama_modified' => auth()->user()->full_name, 'modified_at' => Carbon::now() ]; $data->update($payload); diff --git a/app/Http/Controllers/MenuController.php b/app/Http/Controllers/MenuController.php index 9c0ed77..1771538 100644 --- a/app/Http/Controllers/MenuController.php +++ b/app/Http/Controllers/MenuController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Models\KategoriKlasifikasiPaketMenu; +use App\Models\KlasifikasiMenuKalori; use App\Models\Menu; use App\Models\TanggalMenuTersedia; use Carbon\Carbon; @@ -44,7 +45,7 @@ class MenuController extends Controller 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; + // $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, @@ -52,7 +53,7 @@ class MenuController extends Controller 'jenis_menu' => $data['jenis_makanan'], 'harga_public' => $hargaPublic, 'harga_karyawan' => $hargaKaryawan, - 'harga_keluarga_pasien' => $hargaKeluargaPasien, + // 'harga_keluarga_pasien' => $hargaKeluargaPasien, 'deskripsi' => $data['deskripsi'], 'status' => true, 'apakah_someday' => $data['kategori_menu'] === "Menu Normal" ? false : true, @@ -79,6 +80,20 @@ class MenuController extends Controller 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) { @@ -99,7 +114,6 @@ class MenuController extends Controller 'message' => 'Menu berhasil ditambahkan!' ]); } catch (\Throwable $th) { - dd($th); DB::connection('dbOrderGizi')->rollBack(); return response()->json([ @@ -131,7 +145,89 @@ class MenuController extends Controller */ 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() + ]); + } } /** @@ -159,6 +255,8 @@ class MenuController extends Controller ->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', @@ -177,9 +275,13 @@ class MenuController extends Controller 'kmd.kategori_diet_id', 'kd.nama_kategori_diet', 'dmph.detail_menu_paket_harian_id', - 'dmph.tgl_harian' + 'dmph.tgl_harian', + 'kmk.klasifikasi_menu_kalori_id', + 'kmk.kalori_id', + 'k.nilai_kalori' ) ->get()->groupBy('master_menu_id'); + $grouped = $data->map(function($items){ $first = $items->first(); $tglAvailable = $items->filter(fn($tgl) => $tgl->tgl_harian !== null) @@ -195,9 +297,18 @@ class MenuController extends Controller ->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, @@ -213,6 +324,7 @@ class MenuController extends Controller 'apakah_menu_sore' => $first->apakah_menu_sore, 'tgl' => $tglAvailable, 'kategoriDiet' => $kategoriDiet, + 'kalori' => $kalori, ]; }); @@ -222,4 +334,12 @@ class MenuController extends Controller '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' + ]); + } } diff --git a/app/Http/Controllers/PesananController.php b/app/Http/Controllers/PesananController.php index b64cb3f..3c9609a 100644 --- a/app/Http/Controllers/PesananController.php +++ b/app/Http/Controllers/PesananController.php @@ -220,6 +220,9 @@ class PesananController extends Controller if(!empty($tanggal)){ $flattened = is_array($tanggal[0]) ? Arr::flatten($tanggal) : $tanggal; $data->whereIn('tgl_antar', $flattened); + }else{ + $now = Carbon::now()->format('Y-m-d'); + $data->where('tgl_antar', $now); } $data = $data->get(); diff --git a/app/Http/Requests/Kalori/RequestKalori.php b/app/Http/Requests/Kalori/RequestKalori.php new file mode 100644 index 0000000..ad027ce --- /dev/null +++ b/app/Http/Requests/Kalori/RequestKalori.php @@ -0,0 +1,74 @@ + 'required|array|min:1', + 'data.*.nilai_kalori' => 'required' + ]; + } + + public function messages(){ + return [ + 'data.array' => 'Format data harus berupa array', + 'data.min' => 'Minimal harus ada satu data klasifikasi menu', + 'data.*.nilai_kalori.required' => 'Nilai Kalori Menu wajib diisi', + ]; + } + + protected function failedValidation(Validator $validator){ + throw new HttpResponseException( + response()->json([ + 'status' => 'VALIDATION_FAILED', + 'message' => 'Validasi Gagal', + 'errors' => $validator->errors()->messages(), + ], 422) + ); + } + + public function withValidator($validator){ + $validator->after(function ($validator){ + $namaListAsli = collect($this->input('data'))->pluck('nilai_kalori')->filter(); + $namaListLower = $namaListAsli->map(fn($n) => strtolower(trim($n))); + $duplicates = $namaListLower->duplicates(); + + if ($duplicates->isNotEmpty()) { + foreach ($namaListAsli as $index => $nama) { + if ($duplicates->contains(strtolower(trim($nama)))) { + $validator->errors()->add("data.$index.nilai_kalori", "Nama '$nama' duplikat dalam input."); + } + } + } + $namaList = $namaListAsli->map(fn($n) => strtolower(trim($n))); + + if($namaList->isEmpty()) return; + + $exists = DB::connection('dbOrderGizi') + ->table('public.kalori') + ->where('statusenabled', true) + ->whereIn(DB::raw('LOWER(nilai_kalori)'), $namaList->toArray()) + ->selectRaw('LOWER(nilai_kalori) as kalori') + ->pluck('kalori') + ->toArray(); + + foreach ($namaListAsli as $index => $nama) { + $lowerNama = strtolower(trim($nama)); + if(in_array($lowerNama, $exists)){ + $validator->errors()->add("data.$index.nama_karbohidrat", "Nama '$nama' Sudah digunakan."); + } + } + }); + } +} diff --git a/app/Http/Requests/Kalori/RequestUpdateKalori.php b/app/Http/Requests/Kalori/RequestUpdateKalori.php new file mode 100644 index 0000000..abc55ea --- /dev/null +++ b/app/Http/Requests/Kalori/RequestUpdateKalori.php @@ -0,0 +1,56 @@ + 'required|string' + ]; + } + + public function messages(){ + return [ + 'nilai_kalori.required' => 'Nama Karbohidrat wajib diisi' + ]; + } + + protected function failedValidation(Validator $validator){ + throw new HttpResponseException( + response()->json([ + 'status' => 'VALIDATION_FAILED', + 'message' => 'Validasi Gagal', + 'errors' => $validator->errors()->messages(), + ], 422) + ); + } + + public function withValidator($validator){ + $validator->after(function($validator){ + $id = $this->route('kalori') ?? $this->kalori_id ?? null; + $exists = DB::connection('dbOrderGizi') + ->table('public.kalori') + ->where('statusenabled', true) + ->where('nilai_kalori', 'ILIKE', $this->input('nilai_kalori')); + + if($id) $exists->where('kalori_id', '!=', $id); + + if($exists->exists()){ + $validator->errors()->add( + 'Nilai Kalori', + 'Nilai Kalori sudah digunakan' + ); + } + }); + } +} diff --git a/app/Models/KategoriKlasifikasiPaketMenu.php b/app/Models/KategoriKlasifikasiPaketMenu.php index 670dd87..d9cc95b 100644 --- a/app/Models/KategoriKlasifikasiPaketMenu.php +++ b/app/Models/KategoriKlasifikasiPaketMenu.php @@ -9,7 +9,7 @@ class KategoriKlasifikasiPaketMenu extends Model protected $connection = 'dbOrderGizi'; protected $table = 'public.klasifikasi_menu_diet'; public $timestamps = false; - protected $primaryKey = "klasifikasi_menu_diet"; + protected $primaryKey = "klasifikasi_menu_diet_id"; protected $fillable =[ 'entry_at', 'pegawai_id_entry', diff --git a/app/Models/KlasifikasiMenuKalori.php b/app/Models/KlasifikasiMenuKalori.php new file mode 100644 index 0000000..1920c3c --- /dev/null +++ b/app/Models/KlasifikasiMenuKalori.php @@ -0,0 +1,25 @@ +hasMany(KlasifikasiMenuKalori::class, 'master_menu_id', 'master_menu_id'); + } + + public function klasifikasiMenuDiet(){ + return $this->hasMany(KategoriKlasifikasiPaketMenu::class, 'master_menu_id', 'master_menu_id'); + } + + public function tglAvailable(){ + return $this->hasMany(TanggalMenuTersedia::class, 'master_menu_id', 'master_menu_id'); + } + } diff --git a/public/gambar/0nPf8iahGkDGVzz.jpg b/public/gambar/0nPf8iahGkDGVzz.jpg deleted file mode 100644 index 5d7ca39..0000000 Binary files a/public/gambar/0nPf8iahGkDGVzz.jpg and /dev/null differ diff --git a/public/gambar/1.jpeg b/public/gambar/1.jpeg deleted file mode 100644 index 72e214d..0000000 Binary files a/public/gambar/1.jpeg and /dev/null differ diff --git a/public/gambar/1.jpg b/public/gambar/1.jpg deleted file mode 100644 index d187418..0000000 Binary files a/public/gambar/1.jpg and /dev/null differ diff --git a/public/gambar/2.jpeg b/public/gambar/2.jpeg deleted file mode 100644 index bab69e3..0000000 Binary files a/public/gambar/2.jpeg and /dev/null differ diff --git a/public/gambar/2.jpg b/public/gambar/2.jpg deleted file mode 100644 index 6813cdf..0000000 Binary files a/public/gambar/2.jpg and /dev/null differ diff --git a/public/gambar/2nY3o48jb2uQiO3.jpg b/public/gambar/2nY3o48jb2uQiO3.jpg deleted file mode 100644 index 65c49f2..0000000 Binary files a/public/gambar/2nY3o48jb2uQiO3.jpg and /dev/null differ diff --git a/public/gambar/3.jpeg b/public/gambar/3.jpeg deleted file mode 100644 index 4e57e98..0000000 Binary files a/public/gambar/3.jpeg and /dev/null differ diff --git a/public/gambar/3.jpg b/public/gambar/3.jpg deleted file mode 100644 index 3b7ec42..0000000 Binary files a/public/gambar/3.jpg and /dev/null differ diff --git a/public/gambar/35cMZAabIvafkAA.jpeg b/public/gambar/35cMZAabIvafkAA.jpeg deleted file mode 100644 index 5d7ca39..0000000 Binary files a/public/gambar/35cMZAabIvafkAA.jpeg and /dev/null differ diff --git a/public/gambar/366IIPTOPZ3eG6q.jpg b/public/gambar/366IIPTOPZ3eG6q.jpg deleted file mode 100644 index 304d8dd..0000000 Binary files a/public/gambar/366IIPTOPZ3eG6q.jpg and /dev/null differ diff --git a/public/gambar/3GrLB8JZuk8eUPh.jpg b/public/gambar/3GrLB8JZuk8eUPh.jpg deleted file mode 100644 index 5d7ca39..0000000 Binary files a/public/gambar/3GrLB8JZuk8eUPh.jpg and /dev/null differ diff --git a/public/gambar/3Wlf6uqCVXBuq7j.jpg b/public/gambar/3Wlf6uqCVXBuq7j.jpg deleted file mode 100644 index e11002a..0000000 Binary files a/public/gambar/3Wlf6uqCVXBuq7j.jpg and /dev/null differ diff --git a/public/gambar/4.jpg b/public/gambar/4.jpg deleted file mode 100644 index 950cf21..0000000 Binary files a/public/gambar/4.jpg and /dev/null differ diff --git a/public/gambar/4BE9dey8gxhN8xH.jpg b/public/gambar/4BE9dey8gxhN8xH.jpg deleted file mode 100644 index aa18b69..0000000 Binary files a/public/gambar/4BE9dey8gxhN8xH.jpg and /dev/null differ diff --git a/public/gambar/wxzjWXhYqZCCaxh.jpg b/public/gambar/4H2zB7qyYs4UxUB.jpg similarity index 100% rename from public/gambar/wxzjWXhYqZCCaxh.jpg rename to public/gambar/4H2zB7qyYs4UxUB.jpg diff --git a/public/gambar/5.jpg b/public/gambar/5.jpg deleted file mode 100644 index 4274192..0000000 Binary files a/public/gambar/5.jpg and /dev/null differ diff --git a/public/gambar/55LVp2DbK6Vkun4.jpg b/public/gambar/55LVp2DbK6Vkun4.jpg deleted file mode 100644 index aa18b69..0000000 Binary files a/public/gambar/55LVp2DbK6Vkun4.jpg and /dev/null differ diff --git a/public/gambar/5b7Ll3ZDbTBuW89.jpg b/public/gambar/5b7Ll3ZDbTBuW89.jpg deleted file mode 100644 index 6897d2b..0000000 Binary files a/public/gambar/5b7Ll3ZDbTBuW89.jpg and /dev/null differ diff --git a/public/gambar/HvsArIf6YT60S5w.jpg b/public/gambar/5nkDR14kcsgEoHc.jpg similarity index 100% rename from public/gambar/HvsArIf6YT60S5w.jpg rename to public/gambar/5nkDR14kcsgEoHc.jpg diff --git a/public/gambar/PAKET 2 (KENTANG REBUS RENDANG DAGING, TUMIS BUNCIS DAGING GILING, SAMBAL).jpg b/public/gambar/7KVkbOKsYqBiGcL.jpg similarity index 100% rename from public/gambar/PAKET 2 (KENTANG REBUS RENDANG DAGING, TUMIS BUNCIS DAGING GILING, SAMBAL).jpg rename to public/gambar/7KVkbOKsYqBiGcL.jpg diff --git a/public/gambar/7v66MY4Xtpdjy3c.jpg b/public/gambar/7v66MY4Xtpdjy3c.jpg deleted file mode 100644 index ce2830e..0000000 Binary files a/public/gambar/7v66MY4Xtpdjy3c.jpg and /dev/null differ diff --git a/public/gambar/HpMlnY6XHwXQjCV.jpg b/public/gambar/A9KETJh0IfdL8Sg.jpg similarity index 100% rename from public/gambar/HpMlnY6XHwXQjCV.jpg rename to public/gambar/A9KETJh0IfdL8Sg.jpg diff --git a/public/gambar/ANMM9vnlnyScqA4.jpg b/public/gambar/ANMM9vnlnyScqA4.jpg deleted file mode 100644 index aa18b69..0000000 Binary files a/public/gambar/ANMM9vnlnyScqA4.jpg and /dev/null differ diff --git a/public/gambar/E5WaUyqNIbCUdsX.jpg b/public/gambar/E5WaUyqNIbCUdsX.jpg deleted file mode 100644 index 5d7ca39..0000000 Binary files a/public/gambar/E5WaUyqNIbCUdsX.jpg and /dev/null differ diff --git a/public/gambar/EPeNUXr9YlhdL9J.jpeg b/public/gambar/EPeNUXr9YlhdL9J.jpeg deleted file mode 100644 index 5d7ca39..0000000 Binary files a/public/gambar/EPeNUXr9YlhdL9J.jpeg and /dev/null differ diff --git a/public/gambar/EUyrMb3Tuxw3t6y.png b/public/gambar/EUyrMb3Tuxw3t6y.png new file mode 100644 index 0000000..1b5530c Binary files /dev/null and b/public/gambar/EUyrMb3Tuxw3t6y.png differ diff --git a/public/gambar/G20U3XtdoUiV8JR.jpg b/public/gambar/G20U3XtdoUiV8JR.jpg new file mode 100644 index 0000000..8c199ec Binary files /dev/null and b/public/gambar/G20U3XtdoUiV8JR.jpg differ diff --git a/public/gambar/G5DOHrJXNd3uKJa.jpg b/public/gambar/G5DOHrJXNd3uKJa.jpg deleted file mode 100644 index aa18b69..0000000 Binary files a/public/gambar/G5DOHrJXNd3uKJa.jpg and /dev/null differ diff --git a/public/gambar/HxAIKI2GOJJLK7e.jpeg b/public/gambar/HxAIKI2GOJJLK7e.jpeg deleted file mode 100644 index 1a971e2..0000000 Binary files a/public/gambar/HxAIKI2GOJJLK7e.jpeg and /dev/null differ diff --git a/public/gambar/J48ynecA0d9FeQO.jpg b/public/gambar/J48ynecA0d9FeQO.jpg deleted file mode 100644 index 66452f7..0000000 Binary files a/public/gambar/J48ynecA0d9FeQO.jpg and /dev/null differ diff --git a/public/gambar/KDpVnP60nGKBeeG.jpg b/public/gambar/KDpVnP60nGKBeeG.jpg deleted file mode 100644 index aa18b69..0000000 Binary files a/public/gambar/KDpVnP60nGKBeeG.jpg and /dev/null differ diff --git a/public/gambar/KbGqXS6gOhXFmHj.jpg b/public/gambar/KbGqXS6gOhXFmHj.jpg deleted file mode 100644 index 7d8f1d1..0000000 Binary files a/public/gambar/KbGqXS6gOhXFmHj.jpg and /dev/null differ diff --git a/public/gambar/2zEM6AiiseNuxLk.jpg b/public/gambar/L2agps4y2JqFJNV.jpg similarity index 100% rename from public/gambar/2zEM6AiiseNuxLk.jpg rename to public/gambar/L2agps4y2JqFJNV.jpg diff --git a/public/gambar/MGBdA7UjORdIDgm.jpg b/public/gambar/MGBdA7UjORdIDgm.jpg deleted file mode 100644 index 891abf5..0000000 Binary files a/public/gambar/MGBdA7UjORdIDgm.jpg and /dev/null differ diff --git a/public/gambar/lWjp5kmTfUP69gB.jpg b/public/gambar/O2Bw6crD3fdP3Wa.jpg similarity index 100% rename from public/gambar/lWjp5kmTfUP69gB.jpg rename to public/gambar/O2Bw6crD3fdP3Wa.jpg diff --git a/public/gambar/PAKET 1 (KENTANG GORENG, STEAK DAGING, MIX VEGETABLES, SAUS).jpg b/public/gambar/PAKET 1 (KENTANG GORENG, STEAK DAGING, MIX VEGETABLES, SAUS).jpg deleted file mode 100644 index 1fe92ed..0000000 Binary files a/public/gambar/PAKET 1 (KENTANG GORENG, STEAK DAGING, MIX VEGETABLES, SAUS).jpg and /dev/null differ diff --git a/public/gambar/PAKET 1 (NASI PUTIH, STEAK DAGING, MIX VEGETABLES, SAUS).jpg b/public/gambar/PAKET 1 (NASI PUTIH, STEAK DAGING, MIX VEGETABLES, SAUS).jpg deleted file mode 100644 index 9ace676..0000000 Binary files a/public/gambar/PAKET 1 (NASI PUTIH, STEAK DAGING, MIX VEGETABLES, SAUS).jpg and /dev/null differ diff --git a/public/gambar/PHKUy9ewQmKoEkg.jpg b/public/gambar/PHKUy9ewQmKoEkg.jpg deleted file mode 100644 index 6897d2b..0000000 Binary files a/public/gambar/PHKUy9ewQmKoEkg.jpg and /dev/null differ diff --git a/public/gambar/QX6vTzeQul6K6hN.jpg b/public/gambar/QX6vTzeQul6K6hN.jpg new file mode 100644 index 0000000..f24b6b1 Binary files /dev/null and b/public/gambar/QX6vTzeQul6K6hN.jpg differ diff --git a/public/gambar/Fm0EkEycIavWSNQ.jpg b/public/gambar/QveStXwgTzj2p8k.jpg similarity index 100% rename from public/gambar/Fm0EkEycIavWSNQ.jpg rename to public/gambar/QveStXwgTzj2p8k.jpg diff --git a/public/gambar/R0UEWFPG2hGXgvL.jpg b/public/gambar/R0UEWFPG2hGXgvL.jpg deleted file mode 100644 index 6897d2b..0000000 Binary files a/public/gambar/R0UEWFPG2hGXgvL.jpg and /dev/null differ diff --git a/public/gambar/SxEdMfjq4LUHejU.jpg b/public/gambar/SxEdMfjq4LUHejU.jpg deleted file mode 100644 index 5d7ca39..0000000 Binary files a/public/gambar/SxEdMfjq4LUHejU.jpg and /dev/null differ diff --git a/public/gambar/UgPok6myUUxBHhH.jpg b/public/gambar/UgPok6myUUxBHhH.jpg new file mode 100644 index 0000000..1234f20 Binary files /dev/null and b/public/gambar/UgPok6myUUxBHhH.jpg differ diff --git a/public/gambar/Uqdmzp5SLQ3t6Xs.jpg b/public/gambar/Uqdmzp5SLQ3t6Xs.jpg new file mode 100644 index 0000000..f24b6b1 Binary files /dev/null and b/public/gambar/Uqdmzp5SLQ3t6Xs.jpg differ diff --git a/public/gambar/VSOvWM2CZN8fc1F.jpg b/public/gambar/VSOvWM2CZN8fc1F.jpg new file mode 100644 index 0000000..1234f20 Binary files /dev/null and b/public/gambar/VSOvWM2CZN8fc1F.jpg differ diff --git a/public/gambar/W8nilrgkP1tQins.jpg b/public/gambar/W8nilrgkP1tQins.jpg deleted file mode 100644 index 6897d2b..0000000 Binary files a/public/gambar/W8nilrgkP1tQins.jpg and /dev/null differ diff --git a/public/gambar/Wqxt3TQAZKRmQoM.jpg b/public/gambar/Wqxt3TQAZKRmQoM.jpg deleted file mode 100644 index 6897d2b..0000000 Binary files a/public/gambar/Wqxt3TQAZKRmQoM.jpg and /dev/null differ diff --git a/public/gambar/YZm0fSxGwMnWSZ6.jpg b/public/gambar/YZm0fSxGwMnWSZ6.jpg deleted file mode 100644 index 304d8dd..0000000 Binary files a/public/gambar/YZm0fSxGwMnWSZ6.jpg and /dev/null differ diff --git a/public/gambar/Z4vauaI826mYM9t.jpg b/public/gambar/Z4vauaI826mYM9t.jpg deleted file mode 100644 index 5d7ca39..0000000 Binary files a/public/gambar/Z4vauaI826mYM9t.jpg and /dev/null differ diff --git a/public/gambar/b3AqxThqPYPWujP.jpg b/public/gambar/b3AqxThqPYPWujP.jpg deleted file mode 100644 index e11002a..0000000 Binary files a/public/gambar/b3AqxThqPYPWujP.jpg and /dev/null differ diff --git a/public/gambar/bihun.jpg b/public/gambar/bihun.jpg deleted file mode 100644 index 21adbba..0000000 Binary files a/public/gambar/bihun.jpg and /dev/null differ diff --git a/public/gambar/csfPSN9hY2KPxkD.jpg b/public/gambar/csfPSN9hY2KPxkD.jpg deleted file mode 100644 index 6897d2b..0000000 Binary files a/public/gambar/csfPSN9hY2KPxkD.jpg and /dev/null differ diff --git a/public/gambar/ddOV7vgiLGpRCH0.jpg b/public/gambar/ddOV7vgiLGpRCH0.jpg deleted file mode 100644 index 6897d2b..0000000 Binary files a/public/gambar/ddOV7vgiLGpRCH0.jpg and /dev/null differ diff --git a/public/gambar/default.jpg b/public/gambar/default.jpg deleted file mode 100644 index c90baaf..0000000 Binary files a/public/gambar/default.jpg and /dev/null differ diff --git a/public/gambar/eA6bdtuoozWBewh.jpg b/public/gambar/eA6bdtuoozWBewh.jpg new file mode 100644 index 0000000..f24b6b1 Binary files /dev/null and b/public/gambar/eA6bdtuoozWBewh.jpg differ diff --git a/public/gambar/eO4vj9alfbYSOlE.jpg b/public/gambar/eO4vj9alfbYSOlE.jpg deleted file mode 100644 index e11002a..0000000 Binary files a/public/gambar/eO4vj9alfbYSOlE.jpg and /dev/null differ diff --git a/public/gambar/erNx0n6yMkgvx1F.jpg b/public/gambar/erNx0n6yMkgvx1F.jpg deleted file mode 100644 index 6897d2b..0000000 Binary files a/public/gambar/erNx0n6yMkgvx1F.jpg and /dev/null differ diff --git a/public/gambar/images.jpg b/public/gambar/images.jpg deleted file mode 100644 index e97604f..0000000 Binary files a/public/gambar/images.jpg and /dev/null differ diff --git a/public/gambar/jbFPdYgWyiUtmMB.png b/public/gambar/jbFPdYgWyiUtmMB.png deleted file mode 100644 index 6a397be..0000000 Binary files a/public/gambar/jbFPdYgWyiUtmMB.png and /dev/null differ diff --git a/public/gambar/jus_wortel.jpg b/public/gambar/jus_wortel.jpg deleted file mode 100644 index 595ba18..0000000 Binary files a/public/gambar/jus_wortel.jpg and /dev/null differ diff --git a/public/gambar/kM6rbbg3ozGVOK3.jpg b/public/gambar/kM6rbbg3ozGVOK3.jpg new file mode 100644 index 0000000..f24b6b1 Binary files /dev/null and b/public/gambar/kM6rbbg3ozGVOK3.jpg differ diff --git a/public/gambar/lHTpoXb4R82fsn3.jpg b/public/gambar/lHTpoXb4R82fsn3.jpg deleted file mode 100644 index aa18b69..0000000 Binary files a/public/gambar/lHTpoXb4R82fsn3.jpg and /dev/null differ diff --git a/public/gambar/mL8fczclfHqy9yl.jpg b/public/gambar/mL8fczclfHqy9yl.jpg deleted file mode 100644 index aa18b69..0000000 Binary files a/public/gambar/mL8fczclfHqy9yl.jpg and /dev/null differ diff --git a/public/gambar/n6ftLkc8jQJoV2Y.jpg b/public/gambar/n6ftLkc8jQJoV2Y.jpg deleted file mode 100644 index e11002a..0000000 Binary files a/public/gambar/n6ftLkc8jQJoV2Y.jpg and /dev/null differ diff --git a/public/gambar/nasi_merah.jpg b/public/gambar/nasi_merah.jpg deleted file mode 100644 index def7bb7..0000000 Binary files a/public/gambar/nasi_merah.jpg and /dev/null differ diff --git a/public/gambar/nasi_pepes_ayam.jpg b/public/gambar/nasi_pepes_ayam.jpg deleted file mode 100644 index bb0f3de..0000000 Binary files a/public/gambar/nasi_pepes_ayam.jpg and /dev/null differ diff --git a/public/gambar/oNSP6SQjnHWgor8.jpg b/public/gambar/oNSP6SQjnHWgor8.jpg deleted file mode 100644 index aa18b69..0000000 Binary files a/public/gambar/oNSP6SQjnHWgor8.jpg and /dev/null differ diff --git a/public/gambar/oOSe4K5pcxe2iW0.jpg b/public/gambar/oOSe4K5pcxe2iW0.jpg new file mode 100644 index 0000000..f24b6b1 Binary files /dev/null and b/public/gambar/oOSe4K5pcxe2iW0.jpg differ diff --git a/public/gambar/paOiagvnedoJjAl.jpg b/public/gambar/paOiagvnedoJjAl.jpg deleted file mode 100644 index aa18b69..0000000 Binary files a/public/gambar/paOiagvnedoJjAl.jpg and /dev/null differ diff --git a/public/gambar/paket1.jpg b/public/gambar/paket1.jpg deleted file mode 100644 index c874729..0000000 Binary files a/public/gambar/paket1.jpg and /dev/null differ diff --git a/public/gambar/paket2.jpg b/public/gambar/paket2.jpg deleted file mode 100644 index 7502f24..0000000 Binary files a/public/gambar/paket2.jpg and /dev/null differ diff --git a/public/gambar/pzlEiLY8pwZPJUd.jpg b/public/gambar/pzlEiLY8pwZPJUd.jpg deleted file mode 100644 index 6897d2b..0000000 Binary files a/public/gambar/pzlEiLY8pwZPJUd.jpg and /dev/null differ diff --git a/public/gambar/tqan1sC6ZJx4iI6.jpg b/public/gambar/tqan1sC6ZJx4iI6.jpg new file mode 100644 index 0000000..f24b6b1 Binary files /dev/null and b/public/gambar/tqan1sC6ZJx4iI6.jpg differ diff --git a/public/gambar/vEnLRD4PE8dtKfs.jpg b/public/gambar/vEnLRD4PE8dtKfs.jpg deleted file mode 100644 index 304d8dd..0000000 Binary files a/public/gambar/vEnLRD4PE8dtKfs.jpg and /dev/null differ diff --git a/public/gambar/vcgovqG7eNzq0QH.jpg b/public/gambar/vcgovqG7eNzq0QH.jpg deleted file mode 100644 index 8d6d04c..0000000 Binary files a/public/gambar/vcgovqG7eNzq0QH.jpg and /dev/null differ diff --git a/public/gambar/wbSKBIXT1xPyp03.jpg b/public/gambar/wbSKBIXT1xPyp03.jpg deleted file mode 100644 index 4acf3d8..0000000 Binary files a/public/gambar/wbSKBIXT1xPyp03.jpg and /dev/null differ diff --git a/public/gambar/xEMioySb0ZQBWHy.jpg b/public/gambar/xEMioySb0ZQBWHy.jpg deleted file mode 100644 index 6897d2b..0000000 Binary files a/public/gambar/xEMioySb0ZQBWHy.jpg and /dev/null differ diff --git a/public/gambar/xFoSyzDia8Roglp.png b/public/gambar/xFoSyzDia8Roglp.png deleted file mode 100644 index df8c0ec..0000000 Binary files a/public/gambar/xFoSyzDia8Roglp.png and /dev/null differ diff --git a/public/gambar/xIz939F1BhzMtXR.jpg b/public/gambar/xIz939F1BhzMtXR.jpg deleted file mode 100644 index 5d7ca39..0000000 Binary files a/public/gambar/xIz939F1BhzMtXR.jpg and /dev/null differ diff --git a/public/gambar/xM93AVsWRwugbHi.jpg b/public/gambar/xM93AVsWRwugbHi.jpg deleted file mode 100644 index e11002a..0000000 Binary files a/public/gambar/xM93AVsWRwugbHi.jpg and /dev/null differ diff --git a/public/gambar/yXoEER0pjFOjMGi.jpg b/public/gambar/yXoEER0pjFOjMGi.jpg new file mode 100644 index 0000000..f24b6b1 Binary files /dev/null and b/public/gambar/yXoEER0pjFOjMGi.jpg differ diff --git a/public/js/kalori/action.js b/public/js/kalori/action.js index 78db452..cbac006 100644 --- a/public/js/kalori/action.js +++ b/public/js/kalori/action.js @@ -1,6 +1,6 @@ function addKalori(){ new bootstrap.Modal(modalKalori).show(); - formKalori.attr('action', `/dashboard/karbohidrat`) + formKalori.attr('action', `/dashboard/kalori`) } formKalori.on('submit', function(e){ @@ -49,10 +49,10 @@ formKalori.on('submit', function(e){ showConfirmButton: false, backdrop: true, }); - $("#col_add_karbohidrat").html(''); + $("#col_add_kalori").html(''); colCount = 0; // reset counter formKalori[0].reset(); - datatableKarbohidrat.bootstrapTable('refresh'); + datatableKalori.bootstrapTable('refresh'); modalKalori.removeEventListener('hidden.bs.modal', handler); }; modalKalori.addEventListener('hidden.bs.modal', handler); @@ -74,10 +74,10 @@ formKalori.on('submit', function(e){ function deleteKalori(e){ - let id =$(e).data('karbohidrat_id') + let id =$(e).data('kalori_id') Swal.fire({ title: "Apakah kamu yakin ingin menghapus data ini?", - text : $(e).data('nama'), + text : $(e).data('nilai_kalori'), icon: "warning", showCancelButton: true, backdrop: true, @@ -129,7 +129,7 @@ function editKalori(e){ const data = $(e).data(); new bootstrap.Modal(modalKaloriEdit).show(); formKaloriEdit.attr('action', `/dashboard/kalori/${data?.kalori_id}`) - $("#nilai_kalori_edit").val(data.nama) + $("#nilai_kalori_edit").val(data.nilai_kalori) } formKaloriEdit.on('submit', function(e){ diff --git a/public/js/kalori/function.js b/public/js/kalori/function.js index 6dbafbf..7bdaf97 100644 --- a/public/js/kalori/function.js +++ b/public/js/kalori/function.js @@ -1,8 +1,6 @@ let colCount = 1; function addForm(){ - console.log('et'); - - let col = $("#col_add_Kalori") + let col = $("#col_add_kalori") let html = ''; diff --git a/public/js/menu/_init.js b/public/js/menu/_init.js index 8e9102e..6668f0b 100644 --- a/public/js/menu/_init.js +++ b/public/js/menu/_init.js @@ -2,3 +2,7 @@ const datatableMasterMenu = $("#datatableMasterMenu") const formAddMenu = $("#formMasterMenu") const modalAddMenu = document.getElementById("modalMasterMenu") + + +const modalEditMenu = document.getElementById('modalMasterMenuEdit'); +const formEditMenu = document.getElementById('formMasterMenuEdit') diff --git a/public/js/menu/action.js b/public/js/menu/action.js index 04f129d..b257811 100644 --- a/public/js/menu/action.js +++ b/public/js/menu/action.js @@ -1,8 +1,7 @@ -let countForm = 1; // karena form pertama pakai index 0 - // Fungsi inisialisasi Selectize dan Auto-expand function initSelectize(formElement) { const kategoriSelect = formElement.querySelector('.tags-menu'); + const kaloriSelect = formElement.querySelector('.kalori-menu'); const tanggalSelect = formElement.querySelector('.date-input'); if (kategoriSelect) { @@ -13,6 +12,7 @@ function initSelectize(formElement) { create: false, placeholder: "Kualifikasi Menu...", maxItems: null, + preload: true, load: function (query, callback) { if (!query.length) return callback(); $.ajax({ @@ -43,6 +43,45 @@ function initSelectize(formElement) { }); } + if (kaloriSelect) { + $(kaloriSelect).selectize({ + valueField: 'kalori_id', + labelField: 'nilai_kalori', + searchField: ['nilai_kalori', 'kalori_id'], + create: false, + placeholder: "Kualifikasi kalori...", + maxItems: null, + preload: true, + load: function (query, callback) { + if (!query.length) return callback(); + $.ajax({ + url: '/dashboard/option/kalori', + data: { search: query }, + success: function (response) { + if (response.error === 0 && Array.isArray(response.data)) { + callback(response.data); + } else { + callback(); + } + }, + error: function () { + callback(); + } + }); + }, + render: { + option: function (item, escape) { + return `
+
${escape(item.nilai_kalori)}
+
`; + }, + item: function (item, escape) { + return `
${escape(item.nilai_kalori)}
`; + } + } + }); + } + if (tanggalSelect) { $(tanggalSelect).selectize({ valueField: 'tanggal', @@ -67,7 +106,7 @@ function initSelectize(formElement) { }); }); - const radioSomeday = formElement.querySelector(`input[value="Some Day"]`); + const radioSomeday = formElement.querySelector(`input[value="Someday"]`); const radioMenuNormal = formElement.querySelector(`input[value="Menu Normal"]`); const tanggalWrapper = formElement.querySelector('.date-input')?.closest('.col-md-12'); @@ -95,7 +134,6 @@ document.addEventListener('DOMContentLoaded', function () { money.forEach(input => { input.addEventListener('input', function(){ - console.log(); let angka = this.value.replace(/[^0-9]/g, ''); this.value = formatAngka(angka) }) @@ -105,6 +143,7 @@ document.addEventListener('DOMContentLoaded', function () { }); // Fungsi untuk menambah form baru +let countForm = 1; // karena form pertama pakai index 0 function addFormMenu() { const container = document.getElementById('form-sets-container'); const original = container.querySelector('.form-set'); @@ -132,7 +171,6 @@ function addFormMenu() { newForm.querySelectorAll('select').forEach(select => { const wrapper = select.nextElementSibling; if (wrapper?.classList.contains('selectize-control')) wrapper.remove(); - console.log(select); select.value = ''; if (select.multiple) { @@ -169,13 +207,13 @@ function formatAngka(angka) { document.getElementById('formMasterMenu').addEventListener('submit', function(e){ e.preventDefault(); - const allFormSets = document.querySelectorAll('.form-set'); + const allFormSetsBeforSubmit = document.querySelectorAll('.form-set'); - for (let i = 0; i < allFormSets.length; i++) { - const checkSiang = allFormSets[i].querySelector(`input[name="data[${i}][apakah_menu_siang]"]`); - const checkSore = allFormSets[i].querySelector(`input[name="data[${i}][apakah_menu_sore]"]`); + for (let i = 0; i < allFormSetsBeforSubmit.length; i++) { + const checkSiang = allFormSetsBeforSubmit[i].querySelector(`input[name="data[${i}][apakah_menu_siang]"]`); + const checkSore = allFormSetsBeforSubmit[i].querySelector(`input[name="data[${i}][apakah_menu_sore]"]`); - if (!checkSiang.checked && !checkSore.checked) { + if (!checkSiang?.checked && !checkSore?.checked) { e.preventDefault(); alert(`Form ke-${i + 1}: Pilih minimal Siang atau Sore`); return; @@ -211,7 +249,11 @@ document.getElementById('formMasterMenu').addEventListener('submit', function(e) }; modalAddMenu.addEventListener('hidden.bs.modal', handler); // ✅ pakai DOM bootstrap.Modal.getInstance(modalAddMenu).hide(); // ✅ pakai instance + const allFormSets = document.querySelectorAll('.form-set'); + for(let i = 1; i < allFormSets.length; i++){ + allFormSets[i].remove(); + } document.querySelectorAll('.form-set').forEach((formSet, index) => { formSet.querySelectorAll('input, textarea, select').forEach(el => { if (el.type === 'file') { @@ -296,3 +338,243 @@ function deleteMasterMenu(e){ } }) } + +let tanggalSelectizeInstance = null; +let klasifikasiMenuSelectizeInstance = null; +let kaloriSelectizeInstance = null; + +function editMasterMenu(e) { + const el = $(e); + const modal = new bootstrap.Modal(modalEditMenu); + formEditMenu.setAttribute('action', `/dashboard/menu/${el.data('master_menu_id')}`) + modal.show(); + + // Ambil data + let dataOld = { + master_menu_id: el.data('master_menu_id'), + nama_menu: el.data('nama'), + harga_public: el.data('harga_public'), + harga_karyawan: el.data('harga_karyawan'), + jenis_menu: el.data('jenis_menu'), + apakah_someday: el.data('apakah_someday') == 1, + apakah_menu_siang: el.data('apakah_menu_siang') == 1, + apakah_menu_sore: el.data('apakah_menu_sore') == 1, + deskripsi: el.data('deskripsi') || '', + tgl: JSON.parse(decodeURIComponent(el.data('tgl') || '[]')), + kalori: JSON.parse(decodeURIComponent(el.data('kalori') || '[]')), + kategori_diet: JSON.parse(decodeURIComponent(el.data('kategori_diet') || '[]')), + }; + console.log(dataOld); + + + // Set value ke input form + $("#nama_edit").val(dataOld.nama_menu); + $("#harga_public_edit").val(dataOld.harga_public); + $("#harga_karyawan_edit").val(dataOld.harga_karyawan); + $("#jenis_makanan_edit").val(dataOld.jenis_menu); + $("#deskripsi_edit").val(dataOld.deskripsi); + + $(`input[name="kategori_menu"][value="${dataOld.apakah_someday ? 'Someday' : 'Menu Normal'}"]`).prop('checked', true); + $(`input[name="apakah_menu_siang"][value="${dataOld.apakah_menu_siang ? 'iya' : ''}"]`).prop('checked', true); + $(`input[name="apakah_menu_sore"][value="${dataOld.apakah_menu_sore ? 'iya' : ''}"]`).prop('checked', true); + + const tanggalWrapper = document.querySelector('.tgl-part'); + const tanggalField = document.getElementById('tanggal_edit'); + + if(tanggalSelectizeInstance){ + tanggalSelectizeInstance.destroy(); + tanggalSelectizeInstance = null + } + + if (!dataOld.apakah_someday) { + tanggalWrapper.classList.remove('d-none'); + tanggalField.style.display = 'block'; + tanggalSelectizeInstance =$('#tanggal_edit').selectize({ + valueField: 'tanggal', + labelField: 'tgl', + create: true, + placeholder: 'Masukkan Tanggal...', + onInitialize: function () { + const s = this; + dataOld.tgl.forEach(item => { + const tglValue = item?.tgl_harian || item?.tanggal || item; + s.addOption({ tanggal: tglValue, tgl: tglValue }); + s.addItem(tglValue); + }); + } + })[0].selectize; + } else { + tanggalWrapper.classList.add('d-none'); + tanggalField.style.display = 'none'; + } + + + $('input[name="kategori_menu"]').on('change', function(){ + const selected = $(this).val(); + const isSomeday = selected === 'Someday'; + if(isSomeday){ + tanggalWrapper.classList.add('d-none'); + if (tanggalSelectizeInstance) { + tanggalSelectizeInstance.destroy(); + tanggalSelectizeInstance = null; + } + }else{ + tanggalWrapper.classList.remove('d-none'); + tanggalSelectizeInstance =$('#tanggal_edit').selectize({ + valueField: 'tanggal', + labelField: 'tgl', + create: true, + placeholder: 'Masukkan Tanggal...' + })[0].selectize; + } + }) + + + if (klasifikasiMenuSelectizeInstance) { + klasifikasiMenuSelectizeInstance.destroy(); + klasifikasiMenuSelectizeInstance = null; + } + + klasifikasiMenuSelectizeInstance = $('#kategori_diet_id_edit').selectize({ + valueField: 'kategori_diet_id', + labelField: 'nama_kategori_diet', + searchField: ['nama_kategori_diet'], + create: false, + placeholder: "Klasifikasi Diet...", + maxItems: null, + preload: true, + load: function (query, callback) { + if (!query.length) return callback(); + $.ajax({ + url: '/dashboard/option/klasifikasi-menu', + data: { search: query }, + success: function (response) { + if (response.error === 0 && Array.isArray(response.data)) { + callback(response.data); + } else { + callback(); + } + }, + error: function () { + callback(); + } + }); + }, + onInitialize: function () { + const s = this; + dataOld.kategori_diet.forEach(item => { + // Manual tambahkan ke Selectize + s.addOption(item); // agar bisa dipilih + s.addItem(item.kategori_diet_id); // agar muncul sebagai selected + }); + }, + render: { + option: function (item, escape) { + + return `
+
${escape(item.nama_kategori_diet)}
+
`; + }, + item: function (item, escape) { + return `
${escape(item.nama_kategori_diet)}
`; + } + } + })[0].selectize; + + if (kaloriSelectizeInstance) { + kaloriSelectizeInstance.destroy(); + kaloriSelectizeInstance = null; + } + + kaloriSelectizeInstance = $('#kalori_id_edit').selectize({ + valueField: 'kalori_id', + labelField: 'nilai_kalori', + searchField: ['nilai_kalori'], + create: false, + placeholder: "Kalori...", + maxItems: null, + preload: true, + load: function (query, callback) { + if (!query.length) return callback(); + $.ajax({ + url: '/dashboard/option/kalori', + data: { search: query }, + success: function (response) { + if (response.error === 0 && Array.isArray(response.data)) { + callback(response.data); + } else { + callback(); + } + }, + error: function () { + callback(); + } + }); + }, + onInitialize: function () { + const s = this; + dataOld?.kalori.forEach(item => { + // Manual tambahkan ke Selectize + s.addOption(item); // agar bisa dipilih + s.addItem(item.kalori_id); // agar muncul sebagai selected + }); + }, + render: { + option: function (item, escape) { + return `
+
${escape(item.nilai_kalori)}
+
`; + }, + item: function (item, escape) { + return `
${escape(item.nilai_kalori)}
`; + } + } + })[0].selectize; + + +} + + +document.getElementById('formMasterMenuEdit').addEventListener('submit', function(e){ + e.preventDefault(); + + const form = this; + const actionUrl = form.getAttribute('action'); + const formData = new FormData(form); + + fetch(actionUrl, { + method: 'POST', + headers: { + 'X-CSRF-TOKEN': document.querySelector('input[name="_token"]').value, + }, + body: formData + }).then(async (res) => { + const data = await res.json(); + + if (data.status) { + const handler = function () { + Swal.fire({ + icon: 'success', + title: 'Berhasil', + text: data.message, + timer: 2000, + showConfirmButton: false, + backdrop: true, + }); + datatableMasterMenu.bootstrapTable('refresh'); + modalEditMenu.removeEventListener('hidden.bs.modal', handler); // ✅ pakai DOM + }; + modalEditMenu.addEventListener('hidden.bs.modal', handler); // ✅ pakai DOM + bootstrap.Modal.getInstance(modalEditMenu).hide(); // ✅ pakai instance + } else { + throw new Error(data.message || 'Terjadi kesalahan saat mengubah status.'); + } + }).catch(err => { + console.error(err); + Swal.fire({ + icon: 'error', + title: 'Gagal', + text: err.message || 'Terjadi kesalahan pada server.', + }); + }); +}) diff --git a/public/js/menu/dt.js b/public/js/menu/dt.js index cf5cc28..32bf968 100644 --- a/public/js/menu/dt.js +++ b/public/js/menu/dt.js @@ -24,14 +24,31 @@ title: "Action", field: 'master_menu_id', formatter: function(value, row) { + let buttons = '' buttons += ` - ` buttons += ` - ` @@ -54,7 +71,6 @@ formatter: function(value, row) { return `` }, @@ -78,6 +94,7 @@ title: "Waktu Makan", field: "master_menu_id", formatter: function (value, row) { + if (row?.apakah_menu_siang && row?.apakah_menu_sore) { return `Makan Siang & Sore`; } else if (row?.apakah_menu_siang) { @@ -100,19 +117,6 @@ return tglAvlb; } }, - { - title:"Deskripsi", - field:"deskripsi", - }, - { - title:"Klasifikasi Menu", - field:"master_menu_id", - formatter: function(value, row){ - let km = ''; - km = row?.kategoriDiet ? row?.kategoriDiet.map(item => item?.nama_kategori_diet).join(', ') : '-'; - return km; - } - }, ], }); diff --git a/resources/views/dashboard/kalori/modal/create.blade.php b/resources/views/dashboard/kalori/modal/create.blade.php index ebbf63f..50995c2 100644 --- a/resources/views/dashboard/kalori/modal/create.blade.php +++ b/resources/views/dashboard/kalori/modal/create.blade.php @@ -17,11 +17,11 @@
- +
-
+
+ + + +
+ @csrf + @method('PUT') + + + + +
+ + + + diff --git a/resources/views/dashboard/pesanan/pekerjaan/index.blade.php b/resources/views/dashboard/pesanan/pekerjaan/index.blade.php index 5beaea8..d8a5a06 100644 --- a/resources/views/dashboard/pesanan/pekerjaan/index.blade.php +++ b/resources/views/dashboard/pesanan/pekerjaan/index.blade.php @@ -53,10 +53,11 @@ if(selectedFormattedDates.length > 0){ $("#confirm_pekerjaan_time").text('Pada Tanggal : ' + selectedFormattedDates) }else{ - $("#confirm_pekerjaan_time").text(''); + $("#confirm_pekerjaan_time").text('Hari Ini'); } } }); + $("#confirm_pekerjaan_time").text('Hari Ini'); initDt(); }); diff --git a/routes/web.php b/routes/web.php index c0d9259..e4fa830 100644 --- a/routes/web.php +++ b/routes/web.php @@ -32,11 +32,13 @@ Route::group(['middleware' => ['auth']], function(){ Route::resource('/karbohidrat', KarbohidratController::class); Route::get('/datatable/karbohidrat', [KarbohidratController::class, 'datatable']); Route::get('/option/karbohidrat', [KarbohidratController::class, 'option']); + Route::resource('/kalori', KaloriController::class); Route::get('/datatable/kalori', [KaloriController::class, 'datatable']); Route::get('/option/kalori', [KaloriController::class, 'option']); Route::resource('/menu', MenuController::class); + Route::get('/menu/{id}/detail', [MenuController::class, 'getDataDetail']); Route::get('/datatable/menu', [MenuController::class, 'datatable']); Route::get('/pending', [PesananController::class, 'index']);