$(document).ready(function () {
const cart = JSON.parse(sessionStorage.getItem('cart') || '[]');
if (cart.length > 0) {
$('#floatingCartButton').removeClass('d-none');
$('#menuBtn').removeClass('d-none');
}
});
function openImageModal(imageSrc, title) {
document.getElementById('modalImage').src = imageSrc;
document.getElementById('imageModalLabel').textContent = title;
$('#imageModal').modal('show');
}
function fetchMenu(filter = {}) {
const containerGuest = $("#order_guest_id");
$("#tanggal-filter").removeClass('d-none');
if (filter.jenis_menu === "cara_pesan") {
$("#tanggal-filter").addClass('d-none');
const cara_pesan = [
{
type: "Karyawan RSAB Harapan Kita",
gambar: "/cara_pesan/order_karyawan.png",
color: "success"
},
{
type: "Keluarga Pasien / Penunggu Pasien",
gambar: "/cara_pesan/order_keluarga_pasien.png",
color: "success"
},
{
type: "Masyarakat Umum",
gambar: "/cara_pesan/order_masyarakat_umum.png",
color: "success"
}
];
let html = `
Memuat data....
');
fetch(`/datamenu?${params}`)
.then(res => res.json())
.then(res => {
if (!res.status){
return containerGuest.html('Gagal Memuat Data...
');
}
const session = JSON.parse(sessionStorage.getItem('customerData') || '{}')
let cart = JSON.parse(sessionStorage.getItem('cart') || '[]');
if(cart.length > 0){
updateCartCount(cart.length)
}
if(filter.jenis_menu === "konsultasi"){
const jk = res.data|| [];
console.log(jk);
$("#tanggal-filter").addClass('d-none');
let html = `
`;
if(res.data.total > 50){
html +=`
Tampilkan:
50
65
70
`
}
// Pagination buttons
if (res.data.last_page > 1) {
html += `
`;
for (let i = 1; i <= res.data.last_page; i++) {
html += `
${i} `;
}
html += `
`;
}
containerGuest.html(html);
}
})
.catch(err => {
containerGuest.html('
Terjadi kesalahan saat memuat data.
');
console.error(err);
});
}
const modalCheckout = $("#checkoutModal")
function orderMenu(e) {
const el = $(e);
$("#scroll-top").addClass('d-none');
const tags = (el.data('klasifikasi_menu') || '').split(',').filter(Boolean).map(tag => tag.trim());
const kaloriRaw = el.data('kalori');
let kalori = [];
if(Array.isArray(kaloriRaw)){
kalori = kaloriRaw.map(k => String(k))
}else if(typeof kaloriRaw === 'string'){
kalori = kaloriRaw.split(',').map(k => k.trim())
}else if(kaloriRaw !== undefined && kaloriRaw !== null){
kalori = [String(kaloriRaw)]
}
const someday = el.data('apakah_someday');
const siang = el.data('apakah_menu_siang');
const sore = el.data('apakah_menu_sore');
const klasifikasiMenu = tags.map(tag => `
${tag}
`).join('');
const resultKkal = kalori.length > 0
? kalori.map(kkal => `
${kkal ? kkal + ' kal' : ''} `).join('')
: '';
const tglMenuTersedia = `
${someday ? 'Tersedia setiap hari (Senin - Minggu)' :
el.data('tgl_tersedia') ? `Tersedia pada tanggal: ${el.data('tgl_tersedia')}` :
'Tidak ada info tanggal tersedia'}
Menu: ${someday ? 'Sameday' : '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'
}
`;
$('#checkoutModal').modal('show');
$('#cathering_order_photo').attr('src', `/gambar/${el.data('foto') || 'default.jpg'}`);
$('#cathering_order_name').html(`
${el.data('nama_menu')}
${resultKkal}
`);
$('#cathering_order_menu_id').val(el.data('id'));
$('#cathering_order_jenis_menu').val(el.data('jenis_menu'));
$('#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(klasifikasiMenu);
$('#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'));
}
function updateCartCount(count) {
const $cartCount = $('#cartCount');
if (count > 0) {
$cartCount.text(count).show();
let cart = JSON.parse(sessionStorage.getItem('cart') || '[]');
let menuNames = cart.map(item => item.nama_menu).join(', ');
const maxLength = 50;
if (menuNames.length > maxLength) {
menuNames = menuNames.substring(0, maxLength).trim() + '...';
}
$('#menuBtn').removeClass('d-none');
$('#floatingCartButton').removeClass('d-none');
$('#floatingCartCount').text(cart.length);
$('#floatingCartDesc').text(menuNames);
$("#scroll-top").addClass('d-none');
} else {
$cartCount.hide();
$('#floatingCartButton').addClass('d-none');
$('#menuBtn').addClass('d-none');
}
}
function parseRupiahToNumber(rpText) {
return parseInt(rpText.replace(/[^\d]/g, ''), 10) || 0;
}
$("#checkoutForm").on('submit', function(e){
e.preventDefault();
let order_id = sessionStorage.getItem('order_id') || null;
if(order_id){
Swal.fire({
icon: 'warning',
title: 'Pesanan Belum Selesai',
text: 'Silakan selesaikan pesanan Anda terlebih dahulu sebelum melanjutkan.',
timer: 2500,
}).then(() => {
window.location.href = '/checkout';
});
}
let cart = JSON.parse(sessionStorage.getItem('cart') || '[]');
const now = new Date();
const todayFormatted = now.getFullYear() + '-' + (now.getMonth() + 1).toString().padStart(2, '0') + '-' + now.getDate().toString().padStart(2, '0')
const orders = [{
tgl: todayFormatted,
jumlah: 1,
kategoriPemesanan: $('#apakah_menu_sore').val() === "1" ? 'Makan Sore' : 'Makan Siang'
}];
let idText = $("#cathering_order_menu_id").val();
let idMenu = parseInt(idText.replace(/[^\d]/g, ''), 10);
let foto = $('#cathering_order_photo').attr('src')
let resultFoto = foto.replace('/gambar', '');
let namaMenu = $("#cathering_order_name").text();
let existingItem = cart.find(item => item.id_menu === idMenu);
if(!existingItem){
const orderItem ={
id:Date.now(),
id_menu :idMenu,
nama_menu : $("#cathering_order_name").text(),
harga_karyawan : parseRupiahToNumber($("#cathering_order_price_karyawan").text()),
harga_public : parseRupiahToNumber($("#cathering_order_price_public").text()),
foto: resultFoto,
jenis_menu: $('#cathering_order_jenis_menu').text(),
deskripsi:$("#cathering_order_deskripsi").text(),
apakah_menu_siang: $('#apakah_menu_siang').val() === "1" ? true: false,
apakah_menu_sore: $('#apakah_menu_sore').val() === "1" ? true: false,
apakah_someday: $('#apakah_someday').val() === "1" ? true: false,
tgl_tersedia: $('#tgl_tersedia').val(),
kalori: $('#kalori').text(),
pesanan : orders
}
cart.push(orderItem)
}
sessionStorage.setItem('cart', JSON.stringify(cart))
updateCartCount(cart.length)
modalCheckout.modal('hide')
})
function saveItem(e){
let cart = JSON.parse(sessionStorage.getItem('cart') || '[]');
const orders = [{
tgl: '',
jumlah: 1,
kategoriPemesanan: $(e).data('apakah_menu_sore') ? 'Makan Sore' : 'Makan Siang'
}];
let idMenu = $(e).data('id');
let namaMenu = $(e).data('nama_menu');
let existingItem = cart.find(item => item.id_menu === idMenu);
if(existingItem){
orders.forEach(newOrder => {
const existingOrder =existingItem.pesanan.find(p => p.tgl === newOrder.tgl)
if(existingOrder){
existingOrder.jumlah += newOrder.jumlah;
}else{
existingItem.pesanan.push(newOrder)
}
})
}else{
const orderItem ={
id:Date.now(),
id_menu : idMenu,
nama_menu : namaMenu,
harga_karyawan : $(e).data('harga_karyawan'),
harga_public : $(e).data('harga_public'),
foto: $(e).data('foto'),
jenis_menu: $(e).data('jenis_menu'),
deskripsi: $(e).data('deskripsi'),
apakah_menu_siang: $(e).data('apakah_menu_siang'),
apakah_menu_sore: $(e).data('apakah_menu_sore'),
apakah_someday: $(e).data('apakah_someday'),
tgl_tersedia: $(e).data('tgl_tersedia'),
kalori: $(e).data('kalori'),
pesanan : orders
}
cart.push(orderItem)
}
sessionStorage.setItem('cart', JSON.stringify(cart))
updateCartCount(cart.length)
}
function checkout(){
const cart = JSON.parse(sessionStorage.getItem('cart') || '[]');
if(cart.length > 0){
window.location.href = '/checkout'
}else{
alert("Pilih Menu terlebih dahulu yang ingin dipesan !");
return
}
}
function handleClick(e){
const originalHTML = e.innerHTML;
// Efek klik
e.classList.add('btn-clicked');
setTimeout(() => e.classList.remove('btn-clicked'), 80);
// Ganti isi tombol jadi checklist
e.innerHTML = '
';
// Simulasi proses
setTimeout(() => {
e.innerHTML = originalHTML;
}, 1000);
const order_id = sessionStorage.getItem('order_id') || null;
if(order_id){
Swal.fire({
icon: 'warning',
title: 'Pesanan Belum Selesai',
text: 'Silakan selesaikan pesanan Anda terlebih dahulu sebelum melanjutkan.',
timer: 2500,
}).then(() => {
window.location.href = '/checkout';
});
}else{
saveItem(e)
}
}
function toggleCartList() {
const list = document.getElementById('cartList');
list.classList.toggle('d-none');
const cart = JSON.parse(sessionStorage.getItem('cart') || '[]');
renderCart(cart);
// jika baru dibuka, render & pasang listener
if (!list.classList.contains('d-none')) {
setTimeout(() => document.addEventListener('click', closeOnOutside, { once: true }), 0);
}
}
function renderCart(cart) {
const body = document.getElementById('cartListBody');
body.innerHTML = cart.length
? cart.map((it, i) => `
${it.nama_menu}
`).join('')
: '
Keranjang kosong
';
if (cart.length === 0) {
document.getElementById('cartList').classList.add('d-none');
}
}
function removeItem(index) {
const cart = JSON.parse(sessionStorage.getItem('cart') || '[]');
cart.splice(index, 1);
sessionStorage.setItem('cart', JSON.stringify(cart));
renderCart(cart);
updateCartCount(cart.length);
}
function closeOnOutside(e) {
const list = document.getElementById('cartList');
const removeButton = e.target.closest('button[onclick^="removeItem"]')
if (!list.contains(e.target) && !document.getElementById('menuBtn').contains(e.target) && !removeButton) {
list.classList.add('d-none');
}
}