diff --git a/app/Http/Controllers/CustomerController.php b/app/Http/Controllers/CustomerController.php index 667b0f1..29394ce 100644 --- a/app/Http/Controllers/CustomerController.php +++ b/app/Http/Controllers/CustomerController.php @@ -82,8 +82,15 @@ class CustomerController extends Controller ->get() ->groupBy('master_menu_id'); + $kkal = DB::connection('dbOrderGizi') + ->table('public.klasifikasi_menu_kalori as kmk') + ->join('public.kalori as k', 'k.kalori_id', 'kmk.kalori_id') + ->whereIn('kmk.master_menu_id', $menuIds) + ->select('kmk.master_menu_id', 'k.kalori_id', 'k.nilai_kalori') + ->get() + ->groupBy('master_menu_id'); // Step 3: Gabungkan data menu + klasifikasi - $result = collect($paginated->items())->map(function ($menu) use ($klasifikasi, $dmph) { + $result = collect($paginated->items())->map(function ($menu) use ($klasifikasi, $dmph, $kkal) { return [ 'master_menu_id' => $menu->master_menu_id, 'nama' => $menu->nama_menu, @@ -108,6 +115,11 @@ class CustomerController extends Controller 'tgl_harian' => $item->tgl_harian, ]; })->values() : [], + 'kalori' => isset($kkal[$menu->master_menu_id]) ? $kkal[$menu->master_menu_id]->map(function ($item) { + return [ + 'nilai_kalori' => $item->nilai_kalori, + ]; + })->values() : [], ]; }); @@ -192,7 +204,7 @@ class CustomerController extends Controller } public function checkout(){ - $karbohidrat = Karbohidrat::where('statusenabled', true)->select('karbohidrat_id', 'nama_karbohidrat')->get(); + $karbohidrat = Karbohidrat::where('statusenabled', true)->select('karbohidrat_id', 'nama_karbohidrat', 'nilai_kalori')->get(); $payload = [ 'title' => 'Checkout ', 'karbohidrat' => $karbohidrat diff --git a/app/Http/Controllers/KarbohidratController.php b/app/Http/Controllers/KarbohidratController.php index eaa048e..e121a4e 100644 --- a/app/Http/Controllers/KarbohidratController.php +++ b/app/Http/Controllers/KarbohidratController.php @@ -43,7 +43,8 @@ class KarbohidratController extends Controller $payload = [ 'pegawai_id_entry' => auth()->user()->id, 'pegawai_nama_entry' => auth()->user()->full_name, - 'nama_karbohidrat' => $data['nama_karbohidrat'] + 'nama_karbohidrat' => $data['nama_karbohidrat'], + 'nilai_kalori' => $data['nilai_kalori'], ]; Karbohidrat::create($payload); }; @@ -87,6 +88,7 @@ class KarbohidratController extends Controller $karbohidrat = Karbohidrat::where('karbohidrat_id', $id)->first(); $payload = [ 'nama_karbohidrat' => $request->input('nama_karbohidrat'), + 'nilai_kalori' => $request->input('nilai_kalori'), 'pegawai_id_modified' => auth()->user()->id, 'pegawai_nama_modified' => auth()->user()->full_name, 'modified_at' => Carbon::now() diff --git a/app/Http/Requests/Karbohidrat/RequestKarbohidrat.php b/app/Http/Requests/Karbohidrat/RequestKarbohidrat.php index d9fbedb..ba1aeee 100644 --- a/app/Http/Requests/Karbohidrat/RequestKarbohidrat.php +++ b/app/Http/Requests/Karbohidrat/RequestKarbohidrat.php @@ -16,7 +16,8 @@ class RequestKarbohidrat extends FormRequest { return [ 'data' => 'required|array|min:1', - 'data.*.nama_karbohidrat' => 'required|string' + 'data.*.nama_karbohidrat' => 'required|string', + 'data.*.nilai_kalori' => 'nullable' ]; } diff --git a/app/Http/Requests/Karbohidrat/RequestUpdateKarbohidrat.php b/app/Http/Requests/Karbohidrat/RequestUpdateKarbohidrat.php index 1188325..c8b9b6a 100644 --- a/app/Http/Requests/Karbohidrat/RequestUpdateKarbohidrat.php +++ b/app/Http/Requests/Karbohidrat/RequestUpdateKarbohidrat.php @@ -15,7 +15,8 @@ class RequestUpdateKarbohidrat extends FormRequest public function rules(): array { return [ - 'nama_karbohidrat' => 'required|string' + 'nama_karbohidrat' => 'required|string', + 'nilai_kalori' => 'nullable' ]; } diff --git a/app/Models/Karbohidrat.php b/app/Models/Karbohidrat.php index a79ee1d..20a77a1 100644 --- a/app/Models/Karbohidrat.php +++ b/app/Models/Karbohidrat.php @@ -18,6 +18,7 @@ class Karbohidrat extends Model 'pegawai_id_modified', 'pegawai_nama_modified', 'statusenabled', - 'nama_karbohidrat' + 'nama_karbohidrat', + 'nilai_kalori' ]; } diff --git a/app/Models/OrderDetail.php b/app/Models/OrderDetail.php index dbbfc20..492f5d9 100644 --- a/app/Models/OrderDetail.php +++ b/app/Models/OrderDetail.php @@ -22,7 +22,8 @@ class OrderDetail extends Model 'type', 'order_id', 'status_order', - 'karbohidrat_id' + 'karbohidrat_id', + 'catatan' ]; diff --git a/public/gambar/1xHDepvnxnHK1iO.jpg b/public/gambar/1xHDepvnxnHK1iO.jpg new file mode 100644 index 0000000..ce2830e Binary files /dev/null and b/public/gambar/1xHDepvnxnHK1iO.jpg differ diff --git a/public/gambar/Ik8t7WIWCelQ9fC.jpg b/public/gambar/Ik8t7WIWCelQ9fC.jpg new file mode 100644 index 0000000..f4729a6 Binary files /dev/null and b/public/gambar/Ik8t7WIWCelQ9fC.jpg differ diff --git a/public/gambar/dpdkhXNJGIDL3J3.jpg b/public/gambar/dpdkhXNJGIDL3J3.jpg new file mode 100644 index 0000000..7b4625a Binary files /dev/null and b/public/gambar/dpdkhXNJGIDL3J3.jpg differ diff --git a/public/gambar/mIv60AZog2pP2cs.jpg b/public/gambar/mIv60AZog2pP2cs.jpg new file mode 100644 index 0000000..65c49f2 Binary files /dev/null and b/public/gambar/mIv60AZog2pP2cs.jpg differ diff --git a/public/gambar/sWOv4WuflGFxHaW.jpg b/public/gambar/sWOv4WuflGFxHaW.jpg new file mode 100644 index 0000000..8d6d04c Binary files /dev/null and b/public/gambar/sWOv4WuflGFxHaW.jpg differ diff --git a/public/js/checkout/index.js b/public/js/checkout/index.js index 2fd9881..c744b70 100644 --- a/public/js/checkout/index.js +++ b/public/js/checkout/index.js @@ -213,159 +213,170 @@ function renderCartSummary() { const container = document.getElementById('checkout_cart_summary'); container.innerHTML = ''; let totalKeseluruhan = 0; - let carts = JSON.parse(sessionStorage.getItem('cart') || '[]'); + const carts = JSON.parse(sessionStorage.getItem('cart') || '[]'); carts.forEach((item) => { const pesananList = Array.isArray(item.pesanan) ? item.pesanan : []; let pesananHTML = ''; - let countDate = pesananList.length; - - item?.pesanan.forEach((p, i) => { - let selectedDate = new Date(p.tgl); - - let now = new Date(); - let jam = now.getHours(); - let isToday = selectedDate.toDateString() === now.toDateString(); - - let disableSiang = isToday && jam >= 10; - let disableSore = isToday && jam >= 13; - pesananHTML += ` -
-
- - -
-
- -
-
- - -
- - -
- -
-
- -
-
`; - - - - - }); - - - const harga = checkout_biodata.jenis_customer === 'Karyawan RSAB Harapan Kita' ? item.harga_karyawan || 0 : - item.harga_kp || 0; + const harga = checkout_biodata.jenis_customer === 'Karyawan RSAB Harapan Kita' + ? item.harga_karyawan || 0 + : item.harga_public || 0; const itemTotal = pesananList.reduce((sum, p) => sum + (p.jumlah * harga), 0); - totalKeseluruhan += itemTotal - const itemHTML = ` -
-
-
- ${item.nama_menu} -
-
- -
-
${item.nama_menu}
-
Rp ${parseInt(harga).toLocaleString('id-ID')}
-

${item.deskripsi || ''}

+ totalKeseluruhan += itemTotal; -
- - ${ - item.apakah_someday - ? 'Tersedia setiap hari (Senin - Minggu) ' - : (item.tgl_tersedia - ? `Tersedia pada tanggal: ${item.tgl_tersedia}` - : 'Tidak ada info tanggal tersedia' - ) - } -
-
- - Menu: ${item.apakah_someday ? 'Someday' : 'Menu Normal'} -
-
- Silakan isi tanggal pemesanan dan pilih karbohidrat yang diinginkan -
- ${pesananHTML} -
- -
Total: Rp - ${itemTotal.toLocaleString('id-ID')}
- -
-
-
-
-
`; - container.insertAdjacentHTML('beforeend', itemHTML); pesananList.forEach((p, i) => { - initFlatpickrTersedia(item, i); + const selectedDate = new Date(p.tgl); + const now = new Date(); + const isToday = selectedDate.toDateString() === now.toDateString(); + const jam = now.getHours(); + const disableSiang = isToday && jam >= 10; + const disableSore = isToday && jam >= 13; + const countDate = pesananList.length; + console.log(item.apakah_someday); + + pesananHTML += ` +
+
+ + +
+ +
+ + + ${item.apakah_someday ? `` : ` +
+ +
`} + + +
+ +
+ + +
+
+ + + +
+
+ + +
+ ${countDate > 1 + ? `` + : ''} +
+ +
+
+ `; }); + + const itemHTML = ` +
+
+
+ ${item.nama_menu} +
+ +
+ + +
+
${item.nama_menu}
+
Rp ${parseInt(harga).toLocaleString('id-ID')}
+ ${item.deskripsi ? `

${item.deskripsi}

` : ''} +
+ ${item.apakah_someday + ? 'Tersedia setiap hari (Senin - Minggu)' + : (item.tgl_tersedia ? `Tersedia pada tanggal: ${item.tgl_tersedia}` : 'Tidak ada info tanggal tersedia')} +
+
+ Menu: ${item.apakah_someday ? 'Someday' : 'Menu Normal'} +
+ ${item.kalori + ? `
Kalori: ${item.kalori} kkal
` + : ''} +
Silakan isi tanggal pemesanan dan pilih karbohidrat yang diinginkan
+ ${pesananHTML} +
+ +
Total: Rp ${itemTotal.toLocaleString('id-ID')}
+
+
+
+
+
+ `; + + container.insertAdjacentHTML('beforeend', itemHTML); + pesananList.forEach((p, i) => initFlatpickrTersedia(item, i)); }); + container.insertAdjacentHTML('beforeend', `
-
Total Keseluruhan: Rp ${totalKeseluruhan.toLocaleString('id-ID')}
+
+
Total Keseluruhan: Rp ${totalKeseluruhan.toLocaleString('id-ID')}
`); - document.getElementById('no_order_price').textContent = 'Rp ' + totalKeseluruhan.toLocaleString('id-ID') + document.getElementById('no_order_price').textContent = 'Rp ' + totalKeseluruhan.toLocaleString('id-ID'); } // ======================= @@ -563,7 +574,7 @@ function hitungTotalHarga(){ let total =0; cart.forEach(item => { - const harga = biodata.jenis_customer === "Karyawan RSAB Harapan Kita" ? item.harga_karyawan || 0 : item.harga_kp || 0 + const harga = biodata.jenis_customer === "Karyawan RSAB Harapan Kita" ? item.harga_karyawan || 0 : item.harga_public || 0 const itemTotal = item.pesanan?.reduce((sum, p) => sum + (p.jumlah * harga), 0); total += itemTotal }) @@ -669,6 +680,25 @@ function initFlatpickrTersedia(item, i) { }); } +function increment(itemId, index) { + const input = document.getElementById(`jumlah-${itemId}-${index}`); + input.value = parseInt(input.value || "0") + 1; + onJumlahChange(itemId, index); // Tetap panggil function milikmu +} + +function decrement(itemId, index) { + const input = document.getElementById(`jumlah-${itemId}-${index}`); + let current = parseInt(input.value || "0"); + console.log(current); + + if (current > 1) { + input.value = current - 1; + onJumlahChange(itemId, index); + }else{ + return + } +} + function toggleBuktiPembayaran() { const metode = document.getElementById("cara_pembayaran").value; diff --git a/public/js/kalori/dt.js b/public/js/kalori/dt.js index 52aa0fd..a2b5f52 100644 --- a/public/js/kalori/dt.js +++ b/public/js/kalori/dt.js @@ -44,7 +44,7 @@ width: 120 }, { - title:"Nilai Kalori", + title:"Nilai Kalori (Kkal)", field:"nilai_kalori" } ], diff --git a/public/js/kalori/function.js b/public/js/kalori/function.js index 7bdaf97..cf2a726 100644 --- a/public/js/kalori/function.js +++ b/public/js/kalori/function.js @@ -8,7 +8,7 @@ function addForm(){
- +
diff --git a/public/js/karbohidrat/action.js b/public/js/karbohidrat/action.js index c405021..6dab498 100644 --- a/public/js/karbohidrat/action.js +++ b/public/js/karbohidrat/action.js @@ -130,6 +130,7 @@ function editKarbohidrat(e){ new bootstrap.Modal(modalKarbohidratEdit).show(); formKarbohidratEdit.attr('action', `/dashboard/karbohidrat/${data?.karbohidrat_id}`) $("#nama_karbohidrat").val(data.nama) + $("#nilai_kalori").val(data.nilai_kalori) } formKarbohidratEdit.on('submit', function(e){ diff --git a/public/js/karbohidrat/dt.js b/public/js/karbohidrat/dt.js index c5cafdd..a8ec1d0 100644 --- a/public/js/karbohidrat/dt.js +++ b/public/js/karbohidrat/dt.js @@ -26,7 +26,7 @@ formatter: function(value, row) { let buttons = '' buttons += ` - ` @@ -46,6 +46,10 @@ { title:"Nama Karbohidrat", field:"nama_karbohidrat" + }, + { + title:"Nilai Kalori (Kkal)", + field:"nilai_kalori" } ], }); diff --git a/public/js/karbohidrat/function.js b/public/js/karbohidrat/function.js index 935b57d..9a6807a 100644 --- a/public/js/karbohidrat/function.js +++ b/public/js/karbohidrat/function.js @@ -1,27 +1,34 @@ let colCount = 1; -function addForm(){ - let col = $("#col_add_karbohidrat") - let html = ''; +function addForm() { + const col = $("#col_add_karbohidrat"); - html += ` -
-
- - -
-
+ const html = ` +
+
+
+ + +
+
+
+
+ + +
+
+
+ +
+
+ `; - -
- ` - col.append(html) + col.append(html); colCount++; - } - -function removeCol(count){ - $(`#col-${count}`).remove() +function removeCol(count) { + $(`#col-${count}`).remove(); } - diff --git a/public/js/menu/_init.js b/public/js/menu/_init.js index 6668f0b..69c61da 100644 --- a/public/js/menu/_init.js +++ b/public/js/menu/_init.js @@ -5,4 +5,6 @@ const modalAddMenu = document.getElementById("modalMasterMenu") const modalEditMenu = document.getElementById('modalMasterMenuEdit'); -const formEditMenu = document.getElementById('formMasterMenuEdit') +const formEditMenu = document.getElementById('formMasterMenuEdit'); + +const modalDetailMenu = document.getElementById('detailMenuModal') diff --git a/public/js/menu/action.js b/public/js/menu/action.js index b257811..8ac0350 100644 --- a/public/js/menu/action.js +++ b/public/js/menu/action.js @@ -578,3 +578,71 @@ document.getElementById('formMasterMenuEdit').addEventListener('submit', functio }); }); }) + + +function detailMasterMenu(e){ + const el = $(e); + const modal = new bootstrap.Modal(modalDetailMenu); + modal.show() + const someday = el.data('apakah_someday'); + const siang = el.data('apakah_menu_siang'); + const sore = el.data('apakah_menu_sore'); + + const kalori = JSON.parse(decodeURIComponent(el.data('kalori'))) + const kaloriMenu = kalori.map(kal => ` + ${kal.nilai_kalori} (kkal) + `).join(''); + + const tags = JSON.parse(decodeURIComponent(el.data('klasifikasi_menu'))); + const klasifikasiMenu = tags.map(tag => ` + ${tag.nama_kategori_diet} + `).join(''); + + const tgl = JSON.parse(decodeURIComponent(el.data('tgl') || '[]')) + const tglMenuTersedia = ` +
+ + ${someday ? 'Tersedia setiap hari (Senin - Minggu)' : + tgl.length ? `Tersedia pada tanggal: ${tgl.map(d => d.tgl_harian).join(', ')}` : + 'Tidak ada info tanggal tersedia'} +
+
+ Menu: ${someday ? 'Someday' : 'Menu Normal'} +
+
+ ${ + siang && sore + ? ' Tersedia untuk makan siang dan sore' + : siang + ? ' Tersedia untuk makan siang' + : sore + ? ' Tersedia untuk makan sore' + : ' Tidak tersedia untuk waktu makan apapun' + } +
+ `; + + $('#cathering_order_photo').attr('src', `/gambar/${el.data('foto') || 'default.jpg'}`); + $('#cathering_order_name').text(el.data('nama') || '-'); + $('#cathering_order_deskripsi').text(el.data('deskripsi') || ''); + $('#cathering_order_price_karyawan').text("Rp " + parseInt(el.data('harga_karyawan') || 0).toLocaleString('id-ID')); + $('#cathering_order_price_public').text("Rp " + parseInt(el.data('harga_public') || 0).toLocaleString('id-ID')); + $('#tag_klasifikasi_menu').html(` +
+

Klasifikasi Menu:

+ ${klasifikasiMenu || 'Tidak ada klasifikasi'} +
+ `); + $('#kalori_menu').html(` +
+

Kalori:

+ ${kaloriMenu || '-'} +
+ `); + + $('#tgl_menu_tersedia').html(tglMenuTersedia); + $('#apakah_someday').val(someday ? 1 : 0); + $('#apakah_menu_siang').val(siang ? 1 : 0); + $('#apakah_menu_sore').val(sore ? 1 : 0); + $('#tgl_tersedia').val(el.data('tgl_tersedia')); +} diff --git a/public/js/menu/dt.js b/public/js/menu/dt.js index 32bf968..e86a83f 100644 --- a/public/js/menu/dt.js +++ b/public/js/menu/dt.js @@ -52,6 +52,25 @@ ` + buttons += ` + + ` return `
${buttons} diff --git a/public/js/order_guest/index.js b/public/js/order_guest/index.js index 17f125f..e999588 100644 --- a/public/js/order_guest/index.js +++ b/public/js/order_guest/index.js @@ -85,8 +85,9 @@ } - let html = '
'; + let html = '
'; menus.forEach(menu => { + html += `
@@ -135,25 +136,39 @@
Harga
Karyawan:
Rp ${parseInt(menu.harga_karyawan).toLocaleString('id-ID')}
-
Keluarga Pasien:
-
Rp ${parseInt(menu.harga_keluarga_pasien).toLocaleString('id-ID')}
+
Public:
+
Rp ${parseInt(menu.harga_public).toLocaleString('id-ID')}
-
+
${(menu.klasifikasiMenu || []) .slice(0, 2) .map(tag => { const name = tag.nama_kategori_diet || ''; const truncated = name.length > 12 ? name.substring(0, 12) + '...' : name; - return `${truncated}`; + return `${truncated} `; }).join('')} ${(menu.klasifikasiMenu || []).length > 2 ? `+${(menu.klasifikasiMenu.length - 2)} lainnya` : ''}
+ +
+ ${(menu.kalori || []) + .slice(0, 2) + .map(kkal => { + const name = kkal.nilai_kalori || ''; + const truncated = name.length > 12 ? name.substring(0, 12) + '...' : name; + return `${truncated} kkal`; + }).join('')} + ${(menu.kalori || []).length > 2 + ? `+${(menu.klasifikasiMenu.length - 2)} lainnya` + : ''} +
+
diff --git a/resources/views/dashboard/karbohidrat/modal/edit.blade.php b/resources/views/dashboard/karbohidrat/modal/edit.blade.php index 8cdeca8..5941702 100644 --- a/resources/views/dashboard/karbohidrat/modal/edit.blade.php +++ b/resources/views/dashboard/karbohidrat/modal/edit.blade.php @@ -17,12 +17,18 @@
-
+
+
+
+ + +
+
diff --git a/resources/views/dashboard/master/menu/index.blade.php b/resources/views/dashboard/master/menu/index.blade.php index 51d25dd..1a58ca0 100644 --- a/resources/views/dashboard/master/menu/index.blade.php +++ b/resources/views/dashboard/master/menu/index.blade.php @@ -23,6 +23,7 @@
@include('dashboard.master.menu.modal.add') @include('dashboard.master.menu.modal.edit') +@include('dashboard.master.menu.modal.detail') diff --git a/resources/views/dashboard/master/menu/modal/detail.blade.php b/resources/views/dashboard/master/menu/modal/detail.blade.php new file mode 100644 index 0000000..d9713a8 --- /dev/null +++ b/resources/views/dashboard/master/menu/modal/detail.blade.php @@ -0,0 +1,41 @@ + diff --git a/resources/views/guest/checkout/step/step1.blade.php b/resources/views/guest/checkout/step/step1.blade.php index 1a76404..9fd939d 100644 --- a/resources/views/guest/checkout/step/step1.blade.php +++ b/resources/views/guest/checkout/step/step1.blade.php @@ -2,7 +2,7 @@
- +
- +
- +
- +
- +
{{--
@@ -65,11 +65,11 @@ {{-- Pasien --}}
- +
- +
- +
@@ -116,7 +116,7 @@ {{-- Umum --}}
- +
{{-- End Umum --}} diff --git a/resources/views/guest/checkout_order.blade.php b/resources/views/guest/checkout_order.blade.php index 41fd359..4105833 100644 --- a/resources/views/guest/checkout_order.blade.php +++ b/resources/views/guest/checkout_order.blade.php @@ -14,7 +14,7 @@ - Foto Menu + Foto Menu
@@ -23,13 +23,14 @@
Harga Karyawan:
-
Harga Keluarga Pasien:
-
+
Harga Public:
+

- +
+