development #11

Merged
Joko merged 3 commits from development into production 2025-08-22 03:38:26 +00:00
6 changed files with 110 additions and 48 deletions

View File

@ -279,21 +279,23 @@ class CustomerController extends Controller
'no_wa' => $biodataResult['no_whatsapp'],
'tinggi_badan' => $biodataResult['tinggi_badan'],
'berat_badan' => $biodataResult['berat_badan'],
'nama_pasien' => $biodataResult['nama_pasien'],
'ruang_perawatan' => $biodataResult['ruang_perawatan'],
'no_kamar_perawatan' => $biodataResult['no_kamar'],
'kelas_perawatan' => $biodataResult['kelas_perawatan'],
'bagian_instalasi' => $biodataResult['bagian_instalasi'],
'no_ekstensien' => $biodataResult['no_ekstensien'],
'total_harga' => $totalHarga,
'status_order' => "Belum Bayar",
'email' => $biodataResult['email'],
'alamat' => $biodataResult['alamat'],
'entry_at' => Carbon::now()->format('Y-m-d H:i:s.u'),
];
if($jenisCustomer === "Karyawan RSAB Harapan Kita"){
$nip_pns = Karyawan::where('namalengkap',$biodataResult['nama_pemesan'])->first()->nip_pns;
$payloadOrder['nip'] = $nip_pns ?? null;
$payloadOrder['bagian_instalasi'] = $biodataResult['ruang_perawatan'] ?? null;
$payloadOrder['no_ekstensien'] = $biodataResult['ruang_perawatan'] ?? null;
}else if($jenisCustomer === "Keluarga Pasien / Penunggu Pasien"){
$payloadOrder['nama_pasien'] = $biodataResult['nama_pasien'] ?? null;
$payloadOrder['ruang_perawatan'] = $biodataResult['ruang_perawatan'] ?? null;
$payloadOrder['no_kamar_perawatan'] = $biodataResult['no_kamar'] ?? null;
$payloadOrder['kelas_perawatan'] = $biodataResult['kelas_perawatan'] ?? null;
}else{
$payloadOrder['alamat'] = $biodataResult['alamat'] ?? null;
}
$order = Order::create($payloadOrder);
foreach ($dataCart as $cart) {

View File

@ -9,24 +9,34 @@ $(document).ready(function(){
fetchMenu(filterState)
$('#tabJenisMenu .nav-link').on('click', function(e){
$('#tabJenisMenu .btn').on('click', function(e) {
e.preventDefault();
const jenis = $(this).data('filter')
$('#tabJenisMenu .nav-link').removeClass('active text-success').addClass('text-black');
const jenis = $(this).data('filter');
$(this).closest('.nav-link').removeClass('text-black').addClass('active text-success');
// reset semua button jadi outline-success
$('#tabJenisMenu .btn')
.removeClass('btn-success active')
.addClass('btn-outline-success');
// set button yang dipilih jadi active
$(this)
.removeClass('btn-outline-success')
.addClass('btn-success active');
// reset datepicker & label
datePicker.clear();
document.getElementById('tanggalTerpilihLabel').classList.add('d-none'); // Sembunyikan label
document.getElementById('tanggalTerpilihLabel').textContent = '';
document.getElementById('resetTanggal').classList.add('d-none');
filterState.jenis_menu = jenis
fetchMenu(filterState)
})
$('#tanggalTerpilihLabel').addClass('d-none').text('');
$('#resetTanggal').addClass('d-none');
// set filter state
filterState.jenis_menu = jenis;
fetchMenu(filterState);
});
$(".alert-link").on('click', function(e){
e.preventDefault();
$('#tabJenisMenu .nav-link').removeClass('active text-success').addClass('text-black');
$('#tabJenisMenu .nav-link[data-filter="konsultasi" ]').removeClass('text-black').addClass('active text-success');
$('#tabJenisMenu .btn').removeClass('btn-success active').addClass('btn-outline-success');
$('#tabJenisMenu .btn[data-filter="konsultasi" ]').removeClass('btn-outline-success').addClass('btn-success active');
if (typeof datePicker !== 'undefined') {
datePicker.clear();
@ -52,7 +62,7 @@ $(document).ready(function(){
}, 300)
})
})
function changePerPage(select) {

View File

@ -146,7 +146,7 @@
zoomable: true,
autoplayVideos: true
});
return
return
}
@ -546,14 +546,8 @@
$("#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)]
}
let kalori = String(kaloriRaw);
const someday = el.data('apakah_someday');
const siang = el.data('apakah_menu_siang');
const sore = el.data('apakah_menu_sore');
@ -562,9 +556,7 @@
<span class="badge bg-secondary me-1 mb-1">${tag}</span>
`).join('');
const resultKkal = kalori.length > 0
? kalori.map(kkal => `<small class="badge bg-success me-1 mb-1 fs-6">${kkal ? kkal + ' kal' : ''}</small>`).join('')
: '';
const resultKkal = kalori ? `<small class="badge bg-success me-1 mb-1 fs-6">${kalori + ' kal'}</small>` : '';
const tglMenuTersedia = `
<div class="mb-1 small text-muted">
@ -593,12 +585,20 @@
$('#cathering_order_photo').attr('src', `/gambar/${el.data('foto') || 'default.jpg'}`);
$('#cathering_order_name').html(`
<div>${el.data('nama_menu')}
${resultKkal}
</div>`);
<div>${el.data('nama_menu')}</div>`);
$("#kalori_detail").html(resultKkal)
$('#kalori_checkout').val(el.data('id'));
$('#cathering_order_menu_id').val(el.data('id'));
$('#cathering_order_jenis_menu').val(el.data('jenis_menu'));
$('#cathering_order_deskripsi').text(el.data('deskripsi') || '');
let deskripsi = el.data('deskripsi');
if (deskripsi) {
$('#cathering_order_deskripsi').html(
`<span class="fw-semibold text-dark">Deskripsi:</span> ${deskripsi}`
);
} else {
$('#cathering_order_deskripsi').html('');
}
$('#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);
@ -675,6 +675,8 @@
let existingItem = cart.find(item => item.id_menu === idMenu);
if(!existingItem){
let kaloriText = $('#kalori_detail').text().trim(); // misal "250 kal"
let kaloriOnly = kaloriText ? kaloriText.replace(' kal', '').trim() : '';
const orderItem ={
id:Date.now(),
id_menu :idMenu,
@ -688,7 +690,7 @@
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(),
kalori: kaloriOnly,
pesanan : orders
}
cart.push(orderItem)

View File

@ -18,19 +18,43 @@
</div>
<div class="col-md-8">
<h5 id="cathering_order_name" class="mb-2 fw-bold"></h5>
<div id="kalori_detail" class="mb-2"></div>
<div id="tgl_menu_tersedia" class="mb-2"></div>
<div class="row text-muted small mb-2">
<div class="col-6">Harga Karyawan:</div>
<div class="col-6 text-end"><span class="fw-semibold" id="cathering_order_price_karyawan"></span></div>
<div class="col-6">Harga Public:</div>
<div class="col-6 text-end"><span class="fw-semibold" id="cathering_order_price_public"></span></div>
</div>
<div class="card shadow-sm border-0 rounded-3 p-3 bg-light">
<div class="d-flex justify-content-between align-items-center small mb-2 d-none">
<span class="text-muted">
<i class="bi bi-person-badge"></i> Harga Karyawan:
</span>
<span class="fw-bold text-success" id="cathering_order_price_karyawan"></span>
</div>
<div class="d-flex justify-content-between align-items-center">
<span class="">
<i class="bi bi-cash-coin"></i> Harga:
</span>
<span class="fw-bold fs-5 text-primary" id="cathering_order_price_public"></span>
</div>
</div>
<p id="cathering_order_deskripsi"
class="text-muted small mb-2 mt-2"
style="
max-width: 100%;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
">
</p>
<p id="cathering_order_deskripsi" class="text-muted small mb-2"></p>
<div id="tag_klasifikasi_menu" class="mb-2"></div>
<div id="kalori_menu" class="mb-2"></div>
<input type="hidden" id="cathering_order_menu_id">
<input type="hidden" id="cathering_order_jenis_menu">
</div>

View File

@ -4,7 +4,30 @@
<section class="section py-3 bg-light">
<div class="container">
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 mb-2">
<div class="col-12 mb-2 text-center">
<div class="btn-group flex-wrap nav-tabs" role="group" id="tabJenisMenu">
<button type="button" class="btn btn-success active" data-filter="makanan">
<i class="bi bi-egg-fried me-1"></i> Makanan
</button>
<button type="button" class="btn btn-outline-success" data-filter="minuman">
<i class="bi bi-cup-straw me-1"></i> Minuman
</button>
<button type="button" class="btn btn-outline-success" data-filter="snack">
<i class="bi bi-cookie me-1"></i> Snack
</button>
<button type="button" class="btn btn-outline-success" data-filter="paket">
<i class="bi bi-gift me-1"></i> Paket
</button>
<button type="button" class="btn btn-outline-success" data-filter="konsultasi">
<i class="bi bi-person-heart me-1"></i> Konsultasi Gizi
</button>
<button type="button" class="btn btn-outline-success" data-filter="cara_pesan">
<i class="bi bi-journal-text me-1"></i> Cara Pesan
</button>
</div>
</div>
{{-- <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12 mb-2 ">
<ul class="nav nav-tabs" id="tabJenisMenu">
<li class="nav-item"><a class="nav-link active text-success" href="#" data-filter="makanan">Makanan</a></li>
<li class="nav-item "><a class="nav-link text-black" href="#" data-filter="minuman">Minuman</a></li>
@ -13,7 +36,7 @@
<li class="nav-item"><a class="nav-link text-black" href="#" data-filter="konsultasi">Jadwal Konsultasi Gizi</a></li>
<li class="nav-item"><a class="nav-link text-black" href="#" data-filter="cara_pesan">Cara Pesan</a></li>
</ul>
</div>
</div> --}}
</div>
<!-- Filter Pencarian + Tanggal -->
@ -144,7 +167,7 @@
} else {
label.textContent = `Menampilkan menu tersedia dari ${formatTanggal(start)} hingga ${formatTanggal(end)}`;
}
const activeFilter = document.querySelector('#tabJenisMenu .nav-link.active')?.dataset?.filter || null;
const activeFilter = document.querySelector('#tabJenisMenu .btn.btn-success.active')?.dataset?.filter || null;
// Baru kirim ke fetchMenu jika dua tanggal sudah dipilih
fetchMenu({ jenis_menu: activeFilter, tanggal_awal: startDay, tanggal_akhir: endDay });

View File

@ -8,6 +8,7 @@
<title>{{ $title }} | Order Gizi RSAB HK</title>
<meta name="description" content="">
<meta name="keywords" content="">
{{-- <link rel="icon" type="image/png" href="{{ asset('logo/logo_rsabhk.png') }}" sizes="16x16"> --}}
<!-- Fonts -->
<link href="https://fonts.googleapis.com" rel="preconnect">