on progress

This commit is contained in:
JokoPrasetio 2025-07-24 05:30:47 +07:00
parent 51f0334568
commit 55aa4456f3
18 changed files with 187 additions and 58 deletions

View File

@ -193,8 +193,8 @@ class CustomerController extends Controller
'jenis_kelamin' => $biodataResult['jenis_kelamin'],
// 'tanggal_lahir' => $biodataResult['tanggal_lahir'],
'no_wa' => $biodataResult['no_whatsapp'],
// 'tinggi_badan' => $biodataResult['tinggi_badan'],
// 'berat_badan' => $biodataResult['berat_badan'],
'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'],
@ -202,7 +202,7 @@ class CustomerController extends Controller
'bagian_instalasi' => $biodataResult['bagian_instalasi'],
'no_ekstensien' => $biodataResult['no_ekstensien'],
'total_harga' => $totalHarga,
'status_order' => "Pending"
'status_order' => "Belum Bayar"
];
$order = Order::create($payloadOrder);
foreach ($dataCart as $cart) {
@ -253,7 +253,8 @@ class CustomerController extends Controller
$order->update([
'bukti_pembayaran' => $path,
'cara_pembayaran' => 'Transfer',
'tgl_pembayaran' => Carbon::now()
'tgl_pembayaran' => Carbon::now(),
'status_order' => "Menunggu Konfirmasi Pembayaran"
]);
DB::commit();
@ -305,6 +306,7 @@ class CustomerController extends Controller
'od.jumlah',
'od.tgl_antar',
'od.harga_satuan',
'od.status_order as status_order_detail',
DB::raw("COALESCE(mm.nama_menu, mpm.nama_paket) as nama_item"),
DB::raw("COALESCE(mm.foto, mpm.foto) as foto"),
)
@ -348,6 +350,7 @@ class CustomerController extends Controller
'foto' => $item->foto,
'jumlah' => $item->jumlah,
'harga_satuan' => $item->harga_satuan,
'status_order' => $item->status_order_detail,
// tambahkan field tambahan jika diperlukan
];
})->values(),

View File

@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Models\Order;
use Illuminate\Http\Request;
class PesananController extends Controller
@ -17,6 +18,12 @@ class PesananController extends Controller
return view('dashboard.pesanan.pending.index', $payload);
}
public function getDataPending(){
$data = Order::where('statusenabled', true)->get();
return $data;
}
/**
* Show the form for creating a new resource.
*/

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

BIN
public/gambar/bihun.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 KiB

BIN
public/gambar/paket1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

BIN
public/gambar/paket2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

View File

@ -57,6 +57,7 @@ document.addEventListener('DOMContentLoaded', () => {
renderCartSummary();
showStep(currentStep);
isiKonfirmasi();
toggleCustomerFields()
document.getElementById('no_order_display').textContent = order_id
});
@ -111,8 +112,8 @@ if (typeof checkout_biodata === 'object') {
}
$('#nama_pemesan').val(checkout_biodata.nama_pemesan);
// $('#tanggal_lahir').val(checkout_biodata.tanggal_lahir);
// $('#tinggi_badan').val(checkout_biodata.tinggi_badan);
// $('#berat_badan').val(checkout_biodata.berat_badan);
$('#tinggi_badan').val(checkout_biodata.tinggi_badan);
$('#berat_badan').val(checkout_biodata.berat_badan);
$('#no_whatsapp').val(checkout_biodata.no_whatsapp);
$('#nama_pasien').val(checkout_biodata.nama_pasien);
$('#ruang_perawatan').val(checkout_biodata.ruang_perawatan);
@ -128,8 +129,8 @@ function isiKonfirmasi() {
nama_pemesan: $('#nama_pemesan').val(),
jenis_kelamin: $('input[name="jenis_kelamin"]:checked').val(),
// tanggal_lahir: $('#tanggal_lahir').val(),
// tinggi_badan: $('#tinggi_badan').val(),
// berat_badan: $('#berat_badan').val(),
tinggi_badan: $('#tinggi_badan').val(),
berat_badan: $('#berat_badan').val(),
no_whatsapp: $('#no_whatsapp').val(),
nama_pasien: $('#nama_pasien').val(),
ruang_perawatan: $('#ruang_perawatan').val(),

View File

@ -9,6 +9,49 @@
function fetchMenu(filter = {}) {
const containerGuest = $("#order_guest_id");
if(filter.jenis_menu === "konsultasi"){
const jadwalList = [
{
nama_dokter: "dr. Andi exp, Sp.A",
spesialis: "Spesialis Anak",
hari: "Senin - Rabu",
jam: "08.00 - 11.00"
},
{
nama_dokter: "dr. Siti exp, Sp.GK",
spesialis: "Spesialis Gizi Klinik",
hari: "Kamis - Jumat",
jam: "09.00 - 12.00"
},
{
nama_dokter: "dr. Dimas exp, Sp.PD",
spesialis: "Spesialis Penyakit Dalam",
hari: "Sabtu",
jam: "10.00 - 13.00"
}
];
let html = `
<div class="container">
<h4 class="mb-4">Jadwal Konsultasi</h4>
<div class="list-group">
`;
jadwalList.forEach(jadwal => {
html += `
<div class="list-group-item border rounded-3 mb-3 p-3 shadow-sm">
<h5 class="mb-1">${jadwal.nama_dokter}</h5>
<p class="mb-1 text-muted">${jadwal.spesialis}</p>
<p class="mb-1"><strong>Hari:</strong> ${jadwal.hari}</p>
<p class="mb-2"><strong>Jam:</strong> ${jadwal.jam}</p>
</div>
`;
});
html += `</div></div>`;
return containerGuest.html(html);
}
let params = new URLSearchParams({
page: filter.page || 1,
per_page: filter.per_page || 12,
@ -17,10 +60,12 @@
}).toString();
containerGuest.html('<p class="text-muted">Memuat data....</p>');
fetch(`/datamenu?${params}`)
.then(res => res.json())
.then(res => {
if (!res.status){
return containerGuest.html('<p class="text-danger">Gagal Memuat Data...</p>');
}
@ -35,7 +80,7 @@
const menus = res.data.data || [];
if (menus.length === 0){
return containerGuest.html('<p class="text-muted">Pencarian tidak ditemukan.</p>');
return containerGuest.html('<p class="text-muted">.</p>');
}
let html = '<div class="container"><div class="row row-cols-1 row-cols-md-2 g-4">';
menus.forEach(menu => {
@ -199,7 +244,9 @@
}];
let idText = $("#cathering_order_menu_id").text().trim();
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 && item.nama_menu === namaMenu);
@ -220,7 +267,7 @@
nama_menu : $("#cathering_order_name").text(),
harga_karyawan : parseRupiahToNumber($("#cathering_order_price_karyawan").text()),
harga_kp : parseRupiahToNumber($("#cathering_order_price_keluarga_pasien").text()),
foto: $('#cathering_order_photo').attr('src'),
foto: resultFoto,
jenis_menu: $('#cathering_order_jenis_menu').text(),
deskripsi:$("#cathering_order_deskripsi").text(),
pesanan : orders

View File

@ -1,6 +1,6 @@
datatablePending.bootstrapTable({
url: "/",
url: "/dashboard/datatable/pending",
showColumns: true,
showColumnsToggleAll: true,
showRefresh: true,
@ -22,19 +22,68 @@
columns: [
{
title: "Action",
field:'order_id',
formatter: function(value, row) {
const rowData = row; // jika butuh ID atau status dari baris
return `
<div class="d-flex flex-wrap gap-2 justify-content-center">
<button class="btn btn-sm btn-success" onclick="approveOrder('${rowData.id}')">
<i class="fa fa-check me-1"></i>
</button>
${row?.status_order === "Lunas" ? '' : `
<button class="btn btn-sm btn-danger" onclick="rejectOrder('${rowData.id}')">
<i class="fa fa-times me-1"></i>
</button>
<button class="btn btn-sm btn-warning text-dark" onclick="approveProgress('${rowData.id}')">
<i class="fa fa-utensils me-1"></i>
</button>
`}
</div>
`;
},
hozAlign: "center",
headerSort: false
},
{
title: "No.Order",
field:'no_order'
},
{
title: "Nama Menu",
title: "Pemesan",
field:'nama_pemesan',
},
{
title: "Jenis Menu",
title: "Kategori Customer",
field: 'jenis_customer'
},
{
title: "Harga",
title: "Total Harga Pesanan",
field:'total_harga',
formatter: function(value, row){
return 'Rp ' + parseInt(row.total_harga).toLocaleString('id-ID')
}
},
{
title: "Deskripsi",
},
title: "Status Pembayaran",
field: 'status_order',
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';
}
return `<span class="badge ${badgeClass} px-3 py-1">${status}</span>`;
}
}
],
});

View File

@ -73,7 +73,7 @@
const harga = parseInt(item.harga_satuan);
const jumlah = parseInt(item.jumlah);
const total = harga * jumlah;
console.log(item);
itemHTML += `
<div class="card mb-2 shadow-sm">
<div class="row g-0">
@ -87,6 +87,11 @@
<p class="mb-1 small">Harga: <strong>${harga.toLocaleString('id-ID')}</strong></p>
<p class="mb-1 small">Jumlah: <strong>${jumlah}</strong></p>
<p class="mb-0 small">Total: <strong class="text-success">Rp ${total.toLocaleString('id-ID')}</strong></p>
<p class="badge text-white
${item?.status_order === 'Pending'? 'bg-primary'
: data.status_order === 'Belum Bayar' ? '' : 'bg-success'}">
${item?.status_order}
</p>
</div>
</div>
</div>
@ -95,7 +100,7 @@
html += `
<div class="card mt-5 shadow-sm border-0 rounded-4">
<div class="card-body p-2">
<div class="card-body px-3 py-4">
<div class="text-center mb-4">
<h4 class="fw-bold text-success">Pesanan Anda Ditemukan</h4>
<p class="text-muted small">Berikut adalah detail pesanan dengan No Order: <strong>${data?.no_order}</p>
@ -124,14 +129,12 @@
<div class="bg-light p-3 rounded shadow-sm small">
<div class="fw-semibold text-secondary mb-1">Status</div>
<span class="badge
${!data?.bukti_bayar
? 'bg-warning text-dark'
: data?.status_order !== 'Selesai'
? 'bg-primary'
: 'bg-success'}">
${!data?.bukti_bayar
? 'Belum Bayar'
: data?.status_order || '-'}
${data?.status_order === "Menunggu Konfirmasi Pembayaran"
? 'bg-primary'
: data?.status_order === "Belum Bayar"
? "bg-warning"
: "bg-success"}">
${data?.status_order}
</span>
</div>
</div>
@ -187,17 +190,15 @@
<h6>Total Seluruh Pesanan: <strong class="text-success">Rp ${parseInt(data?.total_harga).toLocaleString('id-ID')}</strong></h6>
</div>
</div>
${data?.bukti_bayar ? `
<div class="text-center mb-4">
${data?.status_order === "Belum Bayar"
? `<div class="text-center mb-4">
<button class="btn btn-warning fw-bold text-dark">Belum Melakukan Pembayaran</button>
</div>` :
`<div class="text-center mb-4">
<h6 class="fw-semibold mb-2">Bukti Pembayaran</h6>
<img src="/storage/${data?.bukti_bayar}" alt="Bukti Pembayaran" class="img-fluid rounded shadow-sm" style="max-width: 300px;">
</div>
` :
`<div class="text-center mb-4">
<button class="btn btn-warning fw-bold text-dark">Belum Melakukan Pembayaran</button>
</div>`}
<div class="text-center">
<a href="/" class="btn btn-outline-success btn-sm px-4 rounded-pill">
<i class="fa fa-arrow-left me-1"></i> Kembali ke Beranda

View File

@ -41,22 +41,23 @@
<label class="form-label">Nama Pemesan</label>
<input type="text" class="form-control" name="nama_pemesan" id="nama_pemesan" required>
</div>
<div class="col-md-6">
<label class="form-label">No. Whatsapp</label>
<input type="number" class="form-control" name="no_whatsapp" id="no_whatsapp" required>
</div>
{{-- <div class="col-md-6">
<label class="form-label">Tanggal Lahir</label>
<input type="date" class="form-control" name="tanggal_lahir" id="tanggal_lahir">
</div> --}}
{{-- <div class="col-md-6">
<div class="col-md-6">
<label class="form-label">Tinggi Badan</label>
<input type="number" class="form-control" name="tinggi_badan" id="tinggi_badan">
</div>
<div class="col-md-6">
<label class="form-label">Berat Badan</label>
<input type="number" class="form-control" name="berat_badan" id="berat_badan">
</div> --}}
<div class="col-md-6">
<label class="form-label">No. Whatsapp</label>
<input type="number" class="form-control" name="no_whatsapp" id="no_whatsapp" required>
</div>
{{-- Pasien --}}
<div class="col-md-6 pasien">

View File

@ -12,49 +12,68 @@
<div class="row justify-content-center">
<div class="col-md-8 text-center">
<h6 class="fw-bold">Detail Pembayaran</h6>
<ul class="list-group list-group-flush mb-3">
<li class="list-group-item d-flex justify-content-between">
<span>No Order</span>
<div>
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="copyNoOrder()">
<i class="fa fa-copy me-1"></i> Salin
</button>
<strong id="no_order_display"></strong>
<div class="col-12 col-md-8">
<div class="text-center mb-3">
<h6 class="fw-bold">Detail Pembayaran</h6>
</div>
<ul class="list-group list-group-flush mb-3 shadow-sm rounded overflow-hidden">
<!-- No Order -->
<li class="list-group-item">
<div class="d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center gap-2">
<span>No Order</span>
<div class="d-flex flex-column flex-sm-row align-items-start align-items-sm-center gap-2 text-end">
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="copyNoOrder()">
<i class="fa fa-copy me-1"></i> Salin
</button>
<strong id="no_order_display" class="text-break"></strong>
</div>
</div>
</li>
<!-- Bank -->
<li class="list-group-item d-flex justify-content-between">
<span>Bank</span>
<strong>Bank BCA</strong>
</li>
<!-- Nama Rekening -->
<li class="list-group-item d-flex justify-content-between">
<span>Nama Rekening</span>
<strong>RSAB Harapan Kita</strong>
</li>
<li class="list-group-item d-flex justify-content-between">
<!-- No Rek -->
<li class="list-group-item">
<div class="d-flex flex-column flex-sm-row justify-content-between align-items-start align-items-sm-center gap-2">
<span>No Rekening:</span>
<div>
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="copyNoRek()">
<i class="fa fa-copy me-1"></i> Salin
</button>
<strong id="noRekText">1234-5678-9101</strong>
<div class="d-flex flex-column flex-sm-row align-items-start align-items-sm-center gap-2 text-end">
<button type="button" class="btn btn-sm btn-outline-secondary" onclick="copyNoRek()">
<i class="fa fa-copy me-1"></i> Salin
</button>
<strong id="noRekText">1234-5678-9101</strong>
</div>
</div>
</li>
<!-- Nominal -->
<li class="list-group-item d-flex justify-content-between">
<span>Nominal yang harus dibayar</span>
<strong id="no_order_price"></strong>
</li>
<!-- Batas Waktu -->
<li class="list-group-item d-flex justify-content-between">
<span>Batas Waktu Pembayaran</span>
<strong>12/07/2025 15:30</strong>
</li>
</ul>
<p class="text-muted">Mohon untuk melakukan pembayaran sebelum batas waktu yang tertera, lalu unggah bukti pembayaran sebagai konfirmasi</p>
<p class="text-muted small text-center px-2">
Mohon untuk melakukan pembayaran sebelum batas waktu yang tertera, lalu unggah bukti pembayaran sebagai konfirmasi.
</p>
</div>
</div>
<div class="row justify-content-center mt-4">
<div class="col-md-8">
<input type="hidden" id="no_order_result" name="no_order_result">

View File

@ -15,7 +15,7 @@ aria-hidden="true"
<div class="container">
<div class="row mt-3">
<div class="col-md-4 text-center mb-3 mb-md-0">
<img alt="Foto Menu" id="cathering_order_photo" lass="img-fluid rounded shadow" style="max-width: 250px; height: auto;">
<img alt="Foto Menu" id="cathering_order_photo" lass="img-fluid rounded shadow" style="max-height: 170px; width: auto;">
</div>
<div class="col-md-8">
<h5 id="cathering_order_name" class="mb-2"></h5>

View File

@ -13,7 +13,7 @@
<li class="nav-item "><a class="nav-link text-black" href="#" data-filter="minuman">Minuman</a></li>
<li class="nav-item"><a class="nav-link text-black" href="#" data-filter="snack">Snack</a></li>
<li class="nav-item"><a class="nav-link text-black" href="#" data-filter="paket">Paket</a></li>
<li class="nav-item"><a class="nav-link text-black" href="#" data-filter="">Jadwal Konsultasi Gizi</a></li>
<li class="nav-item"><a class="nav-link text-black" href="#" data-filter="konsultasi">Jadwal Konsultasi Gizi</a></li>
</ul>
</div>
<div class="col-md-6">

View File

@ -23,6 +23,7 @@ Route::group(['middleware' => ['auth']], function(){
Route::get('/', [DashboardController::class, 'index']);
Route::resource('/klasifikasi-menu', KlasifikasiMenuController::class);
Route::get('/pending', [PesananController::class, 'index']);
Route::get('datatable/pending', [PesananController::class, 'getDataPending']);
});
Route::post('/logout', [AuthController::class, 'logout']);
});