diff --git a/app/Http/Controllers/CustomerController.php b/app/Http/Controllers/CustomerController.php index 8afb953..30d0939 100644 --- a/app/Http/Controllers/CustomerController.php +++ b/app/Http/Controllers/CustomerController.php @@ -28,9 +28,6 @@ class CustomerController extends Controller $search = request('search'); $jenis_menu = request('jenis_menu'); $perPage = request()->get('per_page', 12); - if($jenis_menu === "paket"){ - return self::dataPaketMenuOrder($search, $perPage); - } return self::menuOrder($search, $jenis_menu, $perPage); } @@ -42,7 +39,6 @@ class CustomerController extends Controller $menuQuery = DB::connection('dbOrderGizi') ->table('public.master_menu as mn') ->where('mn.statusenabled', true); - if (!empty($jenis_menu)) { $menuQuery->where('mn.jenis_menu', 'ILIKE', '%' . $jenis_menu . '%'); } @@ -140,71 +136,71 @@ class CustomerController extends Controller } + // paket do komen dulu + // private static function dataPaketMenuOrder($search = null, $perPage){ + // $query = DB::connection('dbOrderGizi')->table('public.master_paket_menu as mpn') + // ->where('mpn.statusenabled', true); - private static function dataPaketMenuOrder($search = null, $perPage){ - $query = DB::connection('dbOrderGizi')->table('public.master_paket_menu as mpn') - ->where('mpn.statusenabled', true); + // if(!empty($search)){ + // $query->where('mpn.nama_paket', 'ILIKE', '%' . $search . '%'); + // } - if(!empty($search)){ - $query->where('mpn.nama_paket', 'ILIKE', '%' . $search . '%'); - } + // $paginated = $query->select( + // 'mpn.master_paket_menu_id', + // 'mpn.nama_paket', + // 'mpn.foto', + // 'mpn.harga_public', + // 'mpn.harga_karyawan', + // 'mpn.harga_keluarga_pasien', + // 'mpn.deskripsi', + // 'mpn.status', + // 'dmph.detail_menu_paket_harian_id', + // 'dmph.tgl_harian' + // )->paginate($perPage); - $paginated = $query->select( - 'mpn.master_paket_menu_id', - 'mpn.nama_paket', - 'mpn.foto', - 'mpn.harga_public', - 'mpn.harga_karyawan', - 'mpn.harga_keluarga_pasien', - 'mpn.deskripsi', - 'mpn.status', - 'dmph.detail_menu_paket_harian_id', - 'dmph.tgl_harian' - )->paginate($perPage); + // $paketMenuIds = collect($paginated->items())->pluck('master_paket_menu_id')->toArray(); + // dd($paketMenuIds); + // $klasifikasi = DB::connection('dbOrderGizi') + // ->table('public.klasifikasi_menu_diet as kmd') + // ->join('public.kategori_diet as kd', 'kd.kategori_diet_id', '=', 'kmd.kategori_diet_id') + // ->whereIn('kmd.master_paket_menu_id', $paketMenuIds) + // ->select('kmd.master_paket_menu_id', 'kd.kategori_diet_id', 'kd.nama_kategori_diet') + // ->get() + // ->groupBy('master_paket_menu_id'); - $paketMenuIds = collect($paginated->items())->pluck('master_paket_menu_id')->toArray(); - dd($paketMenuIds); - $klasifikasi = DB::connection('dbOrderGizi') - ->table('public.klasifikasi_menu_diet as kmd') - ->join('public.kategori_diet as kd', 'kd.kategori_diet_id', '=', 'kmd.kategori_diet_id') - ->whereIn('kmd.master_paket_menu_id', $paketMenuIds) - ->select('kmd.master_paket_menu_id', 'kd.kategori_diet_id', 'kd.nama_kategori_diet') - ->get() - ->groupBy('master_paket_menu_id'); - - $result = collect($paginated->items())->map(function ($paketMenu) use ($klasifikasi) { - return [ - 'master_paket_menu_id' => $paketMenu->master_paket_menu_id, - 'nama' => $paketMenu->nama_paket, - 'foto' => $paketMenu->foto, - 'jenis_menu' => "paket", - 'harga_public' => $paketMenu->harga_public, - 'harga_karyawan' => $paketMenu->harga_karyawan, - 'harga_keluarga_pasien' => $paketMenu->harga_keluarga_pasien, - 'status' => $paketMenu->status, - 'deskripsi' => $paketMenu->deskripsi, - 'klasifikasiMenu' => isset($klasifikasi[$paketMenu->master_paket_menu_id]) ? $klasifikasi[$paketMenu->master_paket_menu_id]->map(function ($item) { - return [ - 'kategori_diet_id' => $item->kategori_diet_id, - 'nama_kategori_diet' => $item->nama_kategori_diet, - ]; - })->values() : [], - ]; - }); + // $result = collect($paginated->items())->map(function ($paketMenu) use ($klasifikasi) { + // return [ + // 'master_paket_menu_id' => $paketMenu->master_paket_menu_id, + // 'nama' => $paketMenu->nama_paket, + // 'foto' => $paketMenu->foto, + // 'jenis_menu' => "paket", + // 'harga_public' => $paketMenu->harga_public, + // 'harga_karyawan' => $paketMenu->harga_karyawan, + // 'harga_keluarga_pasien' => $paketMenu->harga_keluarga_pasien, + // 'status' => $paketMenu->status, + // 'deskripsi' => $paketMenu->deskripsi, + // 'klasifikasiMenu' => isset($klasifikasi[$paketMenu->master_paket_menu_id]) ? $klasifikasi[$paketMenu->master_paket_menu_id]->map(function ($item) { + // return [ + // 'kategori_diet_id' => $item->kategori_diet_id, + // 'nama_kategori_diet' => $item->nama_kategori_diet, + // ]; + // })->values() : [], + // ]; + // }); - return response()->json([ - 'status' => true, - 'message' => 'Berhasil mendapatkan data', - 'data' => [ - 'data' => $result, - 'current_page' => $paginated->currentPage(), - 'last_page' => $paginated->lastPage(), - 'per_page' => $paginated->perPage(), - 'total' => $paginated->total(), - ] - ]); - } + // return response()->json([ + // 'status' => true, + // 'message' => 'Berhasil mendapatkan data', + // 'data' => [ + // 'data' => $result, + // 'current_page' => $paginated->currentPage(), + // 'last_page' => $paginated->lastPage(), + // 'per_page' => $paginated->perPage(), + // 'total' => $paginated->total(), + // ] + // ]); + // } public function checkout(){ $karbohidrat = Karbohidrat::where('statusenabled', true)->select('karbohidrat_id', 'nama_karbohidrat', 'nilai_kalori')->get(); diff --git a/app/Http/Controllers/DashboardController.php b/app/Http/Controllers/DashboardController.php index 329f80f..407f9e1 100644 --- a/app/Http/Controllers/DashboardController.php +++ b/app/Http/Controllers/DashboardController.php @@ -43,7 +43,7 @@ class DashboardController extends Controller - $grouped = $data->map(function($items){ + $grouped = $data->map(function($items){ $first = $items->first(); $totalDetail = $items->count(); $selesaiDetail = $items->where('detail_status_order', 'Selesai')->count(); @@ -64,6 +64,10 @@ class DashboardController extends Controller 'note_dibatalkan' => $first->note_dibatalkan, ]; })->values(); + $pemasukanKaryawan = $grouped->where('jenis_customer', 'Karyawan RSAB Harapan Kita')->sum('total_harga'); + $pemasukanMasyarakat = $grouped->where('jenis_customer', 'Masyarakat Umum')->sum('total_harga'); + $pemasukanKeluargaPasien = $grouped->where('jenis_customer', 'Keluarga Pasien / Penunggu Pasien')->sum('total_harga'); + $totalPemasukan = $grouped->sum('total_harga'); $pesananPending = $grouped->whereNotIn('status_order', ['Lunas', 'Dibatalkan'])->count(); $pesananLunas = $grouped->where('status_order', 'Lunas')->count(); @@ -91,6 +95,9 @@ class DashboardController extends Controller 'pesananBatal' => $pesananBatal, 'pesananLunas' => $pesananLunas, 'pesananSelesai' => $pesananSelesai, + 'pemasukanKaryawan' => $pemasukanKaryawan, + 'pemasukanMasyarakat' => $pemasukanMasyarakat, + 'pemasukanKeluargaPasien' => $pemasukanKeluargaPasien, ], 'rows' => $grouped->values(), 'total' => $grouped->count(), diff --git a/app/Http/Controllers/KaloriController.php b/app/Http/Controllers/KaloriController.php index 9950a05..81fe7f8 100644 --- a/app/Http/Controllers/KaloriController.php +++ b/app/Http/Controllers/KaloriController.php @@ -103,7 +103,7 @@ class KaloriController extends Controller if(!empty($search)){ $query->where('nilai_kalori', 'ILIKE', '%' . $search . '%'); }else{ - $query->take(30); + $query->limit(30); } $data = $query->select('kalori_id', 'nilai_kalori')->get(); return response()->json([ diff --git a/app/Http/Controllers/PesananController.php b/app/Http/Controllers/PesananController.php index b290dd9..981c0d9 100644 --- a/app/Http/Controllers/PesananController.php +++ b/app/Http/Controllers/PesananController.php @@ -27,9 +27,21 @@ class PesananController extends Controller public function getDataPending(){ + $tanggal = request('tanggal'); + if(!empty($tanggal)){ + $tanggalFormatted = collect($tanggal)->map(function ($tgl){ + return Carbon::parse($tgl)->toDateString(); + })->toArray(); + }else{ + $tanggalFormatted = [Carbon::now()->toDateString()]; + } $orders = DB::connection('dbOrderGizi')->table('public.order as o') ->leftJoin('public.order_detail as od', 'od.order_id', '=', 'o.order_id') ->where('o.statusenabled', true) + ->whereRaw( + "DATE(o.entry_at) IN (" . implode(',', array_fill(0, count($tanggalFormatted), '?')) . ")", + $tanggalFormatted + ) ->select( 'o.order_id', 'o.entry_at', @@ -167,9 +179,21 @@ class PesananController extends Controller public function getDataSelesai(){ + $tanggal = request('tanggal'); + if(!empty($tanggal)){ + $tanggalFormatted = collect($tanggal)->map(function ($tgl){ + return Carbon::parse($tgl)->toDateString(); + })->toArray(); + }else{ + $tanggalFormatted = [Carbon::now()->toDateString()]; + } $orders = DB::connection('dbOrderGizi')->table('public.order as o') ->leftJoin('public.order_detail as od', 'od.order_id', '=', 'o.order_id') ->where(['o.statusenabled' => true]) + ->whereRaw( + "DATE(o.entry_at) IN (" . implode(',', array_fill(0, count($tanggalFormatted), '?')) . ")", + $tanggalFormatted + ) ->select( 'o.order_id', 'o.entry_at', @@ -314,7 +338,7 @@ class PesananController extends Controller $startDateFormatted = Carbon::parse($startDate)->locale('id')->translatedFormat('d F Y'); $endDateFormatted = Carbon::parse($endDate)->locale('id')->translatedFormat('d F Y'); $waktu_cetak = Carbon::now()->locale('id')->translatedFormat('d F Y'); - + $data = [ 'waktu_cetak' => $waktu_cetak, 'orders' => $order, @@ -325,6 +349,12 @@ class PesananController extends Controller return $pdf->stream('laporan-pesanan-' . now()->format('Ymd-His') . '.pdf'); } + + public function downloadLabel(Request $request){ + $items = $request->input('items'); + + dd(json_encode($items)); + } /** * Show the form for creating a new resource. */ diff --git a/public/asset_guests/css/main.css b/public/asset_guests/css/main.css index 587edb7..29b569d 100644 --- a/public/asset_guests/css/main.css +++ b/public/asset_guests/css/main.css @@ -1786,3 +1786,53 @@ section, .border-dashed:hover { border-color: #198754; } +@media (max-width: 576px) { + .card h5 { + font-size: 14px; + } + + .card .badge { + font-size: 10px; + } + + .card .btn { + font-size: 13px; + padding: 6px 10px; + } +} + +.nav-tabs-clean { + border-bottom: 2px solid #dee2e6; + } + + .nav-tabs-clean .nav-link { + font-weight: 500; + color: #555; + padding: 0.6rem 1rem; + border: none; + border-bottom: 3px solid transparent; + transition: all 0.2s ease-in-out; + background-color: transparent; + } + + .nav-tabs-clean .nav-link:hover { + color: #198754; + border-bottom: 3px solid #d1e7dd; + } + + .nav-tabs-clean .nav-link.active { + color: #198754; + border-bottom: 3px solid #198754; + background-color: transparent; + } + + @media (max-width: 576px) { + .nav-tabs-clean .nav-item { + flex: 1 0 50%; + text-align: center; + } + + .nav-tabs-clean { + flex-wrap: wrap; + } + } diff --git a/public/assets/img/404.png b/public/assets/img/404.png new file mode 100644 index 0000000..dfa25a6 Binary files /dev/null and b/public/assets/img/404.png differ diff --git a/public/gambar/1PiDSRRaH56koiV.png b/public/gambar/1PiDSRRaH56koiV.png new file mode 100644 index 0000000..b2c8f08 Binary files /dev/null and b/public/gambar/1PiDSRRaH56koiV.png differ diff --git a/public/gambar/2LLlfVZAwhyugfI.jpg b/public/gambar/2LLlfVZAwhyugfI.jpg new file mode 100644 index 0000000..d55b065 Binary files /dev/null and b/public/gambar/2LLlfVZAwhyugfI.jpg differ diff --git a/public/gambar/BaaeDhuwxvnZizJ.jpg b/public/gambar/BaaeDhuwxvnZizJ.jpg new file mode 100644 index 0000000..884f54d Binary files /dev/null and b/public/gambar/BaaeDhuwxvnZizJ.jpg differ diff --git a/public/gambar/EKUC5BMuEwyu6fr.jpg b/public/gambar/EKUC5BMuEwyu6fr.jpg new file mode 100644 index 0000000..6862e0c Binary files /dev/null and b/public/gambar/EKUC5BMuEwyu6fr.jpg differ diff --git a/public/gambar/Kc8m48SGRwfqCKp.jpg b/public/gambar/Kc8m48SGRwfqCKp.jpg new file mode 100644 index 0000000..322ca31 Binary files /dev/null and b/public/gambar/Kc8m48SGRwfqCKp.jpg differ diff --git a/public/gambar/P9aGUsEmbhzi2lQ.png b/public/gambar/P9aGUsEmbhzi2lQ.png new file mode 100644 index 0000000..b2c8f08 Binary files /dev/null and b/public/gambar/P9aGUsEmbhzi2lQ.png differ diff --git a/public/gambar/R4RwHfMdvPd9OQg.jpg b/public/gambar/R4RwHfMdvPd9OQg.jpg new file mode 100644 index 0000000..d55b065 Binary files /dev/null and b/public/gambar/R4RwHfMdvPd9OQg.jpg differ diff --git a/public/gambar/aGdDPjqGDQvBdu9.jpg b/public/gambar/aGdDPjqGDQvBdu9.jpg new file mode 100644 index 0000000..d7fdf6b Binary files /dev/null and b/public/gambar/aGdDPjqGDQvBdu9.jpg differ diff --git a/public/gambar/adjsGhdxjp9ed56.jpg b/public/gambar/adjsGhdxjp9ed56.jpg new file mode 100644 index 0000000..66452f7 Binary files /dev/null and b/public/gambar/adjsGhdxjp9ed56.jpg differ diff --git a/public/gambar/bWYX7qOQIEpRB23.jpg b/public/gambar/bWYX7qOQIEpRB23.jpg new file mode 100644 index 0000000..ce2830e Binary files /dev/null and b/public/gambar/bWYX7qOQIEpRB23.jpg differ diff --git a/public/gambar/fOoiTswsOkCGb2x.jpg b/public/gambar/fOoiTswsOkCGb2x.jpg new file mode 100644 index 0000000..884f54d Binary files /dev/null and b/public/gambar/fOoiTswsOkCGb2x.jpg differ diff --git a/public/gambar/k5P14WguOQVW4af.jpg b/public/gambar/k5P14WguOQVW4af.jpg new file mode 100644 index 0000000..8c199ec Binary files /dev/null and b/public/gambar/k5P14WguOQVW4af.jpg differ diff --git a/public/gambar/uhsxLiDIpIgtTw9.jpg b/public/gambar/uhsxLiDIpIgtTw9.jpg new file mode 100644 index 0000000..deacad0 Binary files /dev/null and b/public/gambar/uhsxLiDIpIgtTw9.jpg differ diff --git a/public/gambar/ypeScN7ShpO3wcd.jpg b/public/gambar/ypeScN7ShpO3wcd.jpg new file mode 100644 index 0000000..6c8cd04 Binary files /dev/null and b/public/gambar/ypeScN7ShpO3wcd.jpg differ diff --git a/public/js/checkout/index.js b/public/js/checkout/index.js index 200ae39..ce8efc3 100644 --- a/public/js/checkout/index.js +++ b/public/js/checkout/index.js @@ -8,6 +8,8 @@ let order_id = sessionStorage.getItem('order_id') || '[]'; // ======================= document.addEventListener('DOMContentLoaded', () => { const checkCart = JSON.parse(sessionStorage.getItem('cart') || '[]'); + + const validChart = checkCart.length > 0 && checkCart.every(item => Array.isArray(item.pesanan) && item.pesanan.length > 0 @@ -17,6 +19,9 @@ document.addEventListener('DOMContentLoaded', () => { return } + + + $("#cartButton").addClass('d-none'); $("#no_order_result").val(order_id) let currentStep = 0; @@ -109,6 +114,45 @@ document.addEventListener('DOMContentLoaded', () => { const countDownPayment = document.getElementById('countdownPayment') + function orderTimeCheck(){ + const checkTimeOrder = sessionStorage.getItem('time_order'); + if (checkTimeOrder) { + const orderTime = new Date(checkTimeOrder); + + const now = new Date(); + + // Jika time_order tidak valid (misalnya null, NaN, atau invalid date) + if (isNaN(orderTime.getTime())) { + console.warn('Waktu order tidak valid di session.'); + sessionStorage.clear(); // bisa juga removeItem satu per satu + window.location.href = "/"; + return; + } + + const selisihMs = now.getTime() - orderTime.getTime(); + const selisihMenit = selisihMs / 1000 / 60; + + if (selisihMenit > 10) { + // Bersihkan session + sessionStorage.removeItem('cart'); + sessionStorage.removeItem('checkout_biodata'); + sessionStorage.removeItem('order_id'); + sessionStorage.removeItem('time_order'); + + Swal.fire({ + title: 'Waktu pembayaran sudah lewat!', + text: 'Silakan lakukan pemesanan ulang.', + icon: 'warning', + confirmButtonText: 'Oke' + }).then(() => { + window.location.href = "/"; + }); + + return; + } + } + } + function updateCountdown(){ const now = new Date(); @@ -128,8 +172,10 @@ document.addEventListener('DOMContentLoaded', () => { } updateCountdown(); + orderTimeCheck(); const interval = setInterval(() => { updateCountdown() + orderTimeCheck() if(new Date() >= deadline) clearInterval(interval) }, 1000) @@ -572,7 +618,7 @@ function validateCartBeforeSubmit() { let errorMessage = ""; cart.forEach((item, index) => { - console.log(item.apakah_someday); + const pesananList = item.pesanan || []; pesananList.forEach((pesanan, i) => { @@ -603,7 +649,6 @@ function hitungTotalHarga(){ cart.forEach(item => { const harga = biodata.jenis_customer === "Karyawan RSAB Harapan Kita" ? item.harga_karyawan : item.harga_public || 0 - console.log(harga); const itemTotal = item.pesanan?.reduce((sum, p) => sum + (p.jumlah * harga), 0); total += itemTotal @@ -672,8 +717,6 @@ function initFlatpickrTersedia(item, i) { availableDates.push(fullDateStr); } else { const selisihHari = Math.floor((fullDate - now) / (1000 * 60 * 60 * 24)); - console.log(selisihHari); - if (selisihHari >= 1 || (selisihHari === 1 && !lewatBatasNormal)) { availableDates.push(fullDateStr); } diff --git a/public/js/dashboard/index.js b/public/js/dashboard/index.js index 61d0860..2e2c415 100644 --- a/public/js/dashboard/index.js +++ b/public/js/dashboard/index.js @@ -144,6 +144,9 @@ function fetchData(startDate = null, endDate = null){ $("#pesanan_belum_diambil").text(res?.data?.pesananLunas - res?.data?.pesananSelesai) $("#pesanan_diambil").text(res?.data?.pesananSelesai) $("#nilai_transaksi_total").text(parseInt(res?.data?.totalPemasukan).toLocaleString('id-ID')) + $("#nilai_transaksi_karyawan").text(parseInt(res?.data?.pemasukanKaryawan).toLocaleString('id-ID')) + $("#nilai_transaksi_masyarakat").text(parseInt(res?.data?.pemasukanMasyarakat).toLocaleString('id-ID')) + $("#nilai_transaksi_pasien").text(parseInt(res?.data?.pemasukanKeluargaPasien).toLocaleString('id-ID')) datatable.bootstrapTable('load', res.rows) }) .catch(error => { diff --git a/public/js/menu/action.js b/public/js/menu/action.js index 8ac0350..cd2f862 100644 --- a/public/js/menu/action.js +++ b/public/js/menu/action.js @@ -12,9 +12,8 @@ function initSelectize(formElement) { create: false, placeholder: "Kualifikasi Menu...", maxItems: null, - preload: true, + preload: true, load: function (query, callback) { - if (!query.length) return callback(); $.ajax({ url: '/dashboard/option/klasifikasi-menu', data: { search: query }, @@ -50,10 +49,9 @@ function initSelectize(formElement) { searchField: ['nilai_kalori', 'kalori_id'], create: false, placeholder: "Kualifikasi kalori...", - maxItems: null, + maxItems: 1, preload: true, load: function (query, callback) { - if (!query.length) return callback(); $.ajax({ url: '/dashboard/option/kalori', data: { search: query }, @@ -72,11 +70,11 @@ function initSelectize(formElement) { render: { option: function (item, escape) { return `
-
${escape(item.nilai_kalori)}
+
${escape(item.nilai_kalori)} kkal
`; }, item: function (item, escape) { - return `
${escape(item.nilai_kalori)}
`; + return `
${escape(item.nilai_kalori)} kkal
`; } } }); @@ -444,7 +442,6 @@ function editMasterMenu(e) { maxItems: null, preload: true, load: function (query, callback) { - if (!query.length) return callback(); $.ajax({ url: '/dashboard/option/klasifikasi-menu', data: { search: query }, @@ -492,10 +489,9 @@ function editMasterMenu(e) { searchField: ['nilai_kalori'], create: false, placeholder: "Kalori...", - maxItems: null, + maxItems: 1, preload: true, load: function (query, callback) { - if (!query.length) return callback(); $.ajax({ url: '/dashboard/option/kalori', data: { search: query }, @@ -623,7 +619,7 @@ function detailMasterMenu(e){ `; $('#cathering_order_photo').attr('src', `/gambar/${el.data('foto') || 'default.jpg'}`); - $('#cathering_order_name').text(el.data('nama') || '-'); + $('#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')); diff --git a/public/js/order_guest/index.js b/public/js/order_guest/index.js index d8c9e54..5912b9a 100644 --- a/public/js/order_guest/index.js +++ b/public/js/order_guest/index.js @@ -78,22 +78,30 @@ if(session.nama_customer){ $("#welcomeMessage").html(`Selamat Datang, ${session.nama_customer} !`) } + + const menus = res.data.data || []; if (menus.length === 0){ - return containerGuest.html('

.

'); + return containerGuest.html(` +
+ Tidak ada menu +
Belum ada menu yang tersedia untuk saat ini.
+
+ `); } - let html = '
'; + + let html = '
'; menus.forEach(menu => { html += ` -
+
${menu.nama_menu}
@@ -131,7 +139,16 @@ }
-
${menu.nama}
+
${menu.nama} ${(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` + : ''}
Harga
Karyawan:
@@ -155,20 +172,6 @@ : ''}
- -
- ${(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` - : ''} -
-
+ ` + } - columns: [ - { - title: "Action", - field:'order_id', - formatter: function(value, row) { - let buttons = '' - if(row?.status_order === "Lunas"){ - buttons += ` - - ` + return ` +
+ ${buttons} +
+ `; } + }, + + { + title: "No.Order", + field: 'no_order', + sortable: true, + }, + { + title: "Cara Pembayaran", + field: 'cara_pembayaran', + sortable: true, + }, + { + title: "Status Pembayaran", + field: 'status_order', + sortable: true, + formatter: function(value, row) { + const status = value; + let badgeClass = 'bg-secondary'; + if (status === "Belum Bayar") { + badgeClass = 'bg-warning text-dark'; + } else if (status === "Menunggu Konfirmasi Pembayaran") { + badgeClass = 'bg-primary'; + } else if (status === "Lunas" || status === "Sudah Bayar") { + badgeClass = 'bg-success text-dark'; + } else if(status === "Dibatalkan"){ + badgeClass = 'bg-danger'; + } + return ` + ${status} + ${status === 'Dibatalkan' && row.note_dibatalkan ? ` +
+ ${row.note_dibatalkan} +
+ ` : ''} + `; + } + }, + { + title: "Status Pesanan", + formatter: function(value, row) { + const progress = parseInt(row.progress) || 0; + const total = row.total_detail || 0; + const selesai = row.selesai_detail || 0; return ` -
- ${buttons} +
+
+
+ ${progress}% +
+
+ ${selesai} / ${total} selesai
`; - } - }, + }, + sortable: true, + }, + { + title: "Pemesan", + field:'nama_pemesan', + sortable: true, + }, + { + title: "Tgl Pemesanan", + field: 'entry_at', + formatter: function(value, row) { + if (!row?.entry_at) return '-'; - { - title: "No.Order", - field: 'no_order', - sortable: true, - }, - { - title: "Cara Pembayaran", - field: 'cara_pembayaran', - sortable: true, - }, - { - title: "Status Pembayaran", - field: 'status_order', - sortable: true, - formatter: function(value, row) { - const status = value; - let badgeClass = 'bg-secondary'; - if (status === "Belum Bayar") { - badgeClass = 'bg-warning text-dark'; - } else if (status === "Menunggu Konfirmasi Pembayaran") { - badgeClass = 'bg-primary'; - } else if (status === "Lunas" || status === "Sudah Bayar") { - badgeClass = 'bg-success text-dark'; - } else if(status === "Dibatalkan"){ - badgeClass = 'bg-danger'; + const date = new Date(row.entry_at); + return date.toLocaleString('id-ID', { + day: '2-digit', + month: 'short', // Bisa diganti 'long' kalau mau 'Juli' bukan 'Jul' + year: 'numeric', + hour: '2-digit', + minute: '2-digit', + hour12: false // pakai format 24 jam + }); + }, + sortable: true, + }, + { + title: "Kategori Customer", + field: 'jenis_customer', + sortable: true, + }, + { + title: "Total Harga Pesanan", + field:'total_harga', + formatter: function(value, row){ + return 'Rp ' + parseInt(row.total_harga).toLocaleString('id-ID') } - return ` - ${status} - ${status === 'Dibatalkan' && row.note_dibatalkan ? ` -
- ${row.note_dibatalkan} -
- ` : ''} - `; } - }, - { - title: "Status Pesanan", - formatter: function(value, row) { - const progress = parseInt(row.progress) || 0; - const total = row.total_detail || 0; - const selesai = row.selesai_detail || 0; - return ` -
-
-
- ${progress}% -
-
- ${selesai} / ${total} selesai -
- `; - }, - sortable: true, - }, - { - title: "Pemesan", - field:'nama_pemesan', - sortable: true, - }, - { - title: "Tgl Pemesanan", - field: 'entry_at', - formatter: function(value, row) { - if (!row?.entry_at) return '-'; - - const date = new Date(row.entry_at); - return date.toLocaleString('id-ID', { - day: '2-digit', - month: 'short', // Bisa diganti 'long' kalau mau 'Juli' bukan 'Jul' - year: 'numeric', - hour: '2-digit', - minute: '2-digit', - hour12: false // pakai format 24 jam - }); - }, - sortable: true, - }, - { - title: "Kategori Customer", - field: 'jenis_customer', - sortable: true, - }, - { - title: "Total Harga Pesanan", - field:'total_harga', - formatter: function(value, row){ - return 'Rp ' + parseInt(row.total_harga).toLocaleString('id-ID') - } - } - - ], + ], }); + } + diff --git a/resources/views/dashboard/index.blade.php b/resources/views/dashboard/index.blade.php index eca0236..487019d 100644 --- a/resources/views/dashboard/index.blade.php +++ b/resources/views/dashboard/index.blade.php @@ -91,6 +91,38 @@
+
+
+
+
+
Karyawan RSAB Harapan Kita
+

Rp 1.240.000

+ Total Nilai Transaksi Karyawan RSAB Harapan Kita +
+
+
+ +
+
+
+
Keluarga Pasien / Penunggu Pasien
+

Rp 1.240.000

+ Total Nilai Transaksi Keluarga Pasien / Penunggu Pasien +
+
+
+ +
+
+
+
Masyarakat Umum
+

Rp 1.240.000

+ Total Nilai Transaksi Masyarakat Umum +
+
+
+
+
Data Pesanan
diff --git a/resources/views/dashboard/master/menu/modal/add.blade.php b/resources/views/dashboard/master/menu/modal/add.blade.php index 0af9a09..b4190b4 100644 --- a/resources/views/dashboard/master/menu/modal/add.blade.php +++ b/resources/views/dashboard/master/menu/modal/add.blade.php @@ -58,6 +58,7 @@ +
@@ -83,7 +84,7 @@
- +
diff --git a/resources/views/dashboard/master/menu/modal/edit.blade.php b/resources/views/dashboard/master/menu/modal/edit.blade.php index cbe71e4..3104c57 100644 --- a/resources/views/dashboard/master/menu/modal/edit.blade.php +++ b/resources/views/dashboard/master/menu/modal/edit.blade.php @@ -51,6 +51,7 @@ +
@@ -76,7 +77,7 @@
- +
diff --git a/resources/views/dashboard/partials/sidenav.blade.php b/resources/views/dashboard/partials/sidenav.blade.php index baf6754..2799708 100644 --- a/resources/views/dashboard/partials/sidenav.blade.php +++ b/resources/views/dashboard/partials/sidenav.blade.php @@ -52,12 +52,12 @@
Master Menu
- + --}} diff --git a/resources/views/dashboard/pesanan/pekerjaan/index.blade.php b/resources/views/dashboard/pesanan/pekerjaan/index.blade.php index e9c08bd..b30a1ed 100644 --- a/resources/views/dashboard/pesanan/pekerjaan/index.blade.php +++ b/resources/views/dashboard/pesanan/pekerjaan/index.blade.php @@ -18,6 +18,9 @@
+ @@ -66,7 +69,17 @@ }) initDt(selectedFormattedDates); if(selectedFormattedDates.length > 0){ - $("#confirm_pekerjaan_time").text('Pada Tanggal : ' + selectedFormattedDates) + const tanggalList = selectedFormattedDates; + + let tanggalRapi = ''; + if (tanggalList.length === 1) { + tanggalRapi = tanggalList[0]; + } else if (tanggalList.length === 2) { + tanggalRapi = tanggalList.join(' dan '); + } else if (tanggalList.length > 2) { + tanggalRapi = tanggalList.slice(0, -1).join(', ') + ', dan ' + tanggalList.slice(-1); + } + $("#confirm_pekerjaan_time").text(': '+ tanggalRapi) }else{ $("#confirm_pekerjaan_time").text('Hari Ini'); } diff --git a/resources/views/dashboard/pesanan/pekerjaan/pdf.blade.php b/resources/views/dashboard/pesanan/pekerjaan/pdf.blade.php index 644e32e..9877428 100644 --- a/resources/views/dashboard/pesanan/pekerjaan/pdf.blade.php +++ b/resources/views/dashboard/pesanan/pekerjaan/pdf.blade.php @@ -109,7 +109,7 @@ Nama Pemesan Status Order Tanggal Antar - Waktu Pemesanan + Waktu Makan Menu Keterangan Jumlah diff --git a/resources/views/dashboard/pesanan/pending/index.blade.php b/resources/views/dashboard/pesanan/pending/index.blade.php index e980ebe..c9d3b39 100644 --- a/resources/views/dashboard/pesanan/pending/index.blade.php +++ b/resources/views/dashboard/pesanan/pending/index.blade.php @@ -44,26 +44,4 @@ - @endsection diff --git a/resources/views/dashboard/pesanan/pending/pdf.blade.php b/resources/views/dashboard/pesanan/pending/pdf.blade.php index d0e2d77..68e8ff1 100644 --- a/resources/views/dashboard/pesanan/pending/pdf.blade.php +++ b/resources/views/dashboard/pesanan/pending/pdf.blade.php @@ -2,11 +2,11 @@ - Laporan Pesanan + Laporan Pesanan Pending