diff --git a/app/Http/Controllers/CustomerController.php b/app/Http/Controllers/CustomerController.php index 6cdb056..09b3422 100644 --- a/app/Http/Controllers/CustomerController.php +++ b/app/Http/Controllers/CustomerController.php @@ -107,7 +107,8 @@ class CustomerController extends Controller private static function dataPaketMenuOrder($search = null, $perPage){ - $query = DB::connection('dbOrderGizi')->table('public.master_paket_menu as mpn')->where('mpn.statusenabled', true); + $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 . '%'); @@ -121,11 +122,13 @@ class CustomerController extends Controller 'mpn.harga_karyawan', 'mpn.harga_keluarga_pasien', 'mpn.deskripsi', - 'mpn.status' + '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') diff --git a/app/Http/Controllers/PesananController.php b/app/Http/Controllers/PesananController.php index 08cd52e..4c7646e 100644 --- a/app/Http/Controllers/PesananController.php +++ b/app/Http/Controllers/PesananController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers; use App\Models\Order; +use App\Models\OrderDetail; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; @@ -22,8 +23,45 @@ class PesananController extends Controller public function getDataPending(){ - $data = Order::where('statusenabled', true)->get(); - return $data; + $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) + ->select( + 'o.order_id', + 'o.no_order', + 'o.nama_pemesan', + 'o.jenis_customer', + 'o.total_harga', + 'o.status_order', + 'o.bukti_pembayaran', + 'o.note_dibatalkan', + 'od.status_order as detail_status_order' + )->get()->groupBy('order_id'); + + $grouped = $orders->map(function($items){ + $first = $items->first(); + $totalDetail = $items->count(); + $selesaiDetail = $items->where('detail_status_order', 'Selesai')->count(); + $progress = $totalDetail > 0 ? round(($selesaiDetail / $totalDetail) * 100) : 0; + return [ + 'order_id' => $first->order_id, + 'no_order' => $first->no_order, + 'nama_pemesan' => $first->nama_pemesan, + 'jenis_customer' => $first->jenis_customer, + 'total_harga' => $first->total_harga, + 'status_order' => $first->status_order, + 'bukti_pembayaran' => $first->bukti_pembayaran, + 'progress' => $progress, + 'total_detail' => $totalDetail, + 'selesai_detail' => $selesaiDetail, + 'note_dibatalkan' => $first->note_dibatalkan, + ]; + })->values(); + return response()->json([ + 'status' => true, + 'rows' => $grouped->values(), + 'total' => $grouped->count() + ]); } public function actionOrder(Request $request, string $order_id){ @@ -88,6 +126,18 @@ class PesananController extends Controller return response()->json($data); } + public function updateDetailStatusOrder($order_detail_id){ + $orderDetail = OrderDetail::where('order_detail_id', $order_detail_id)->first(); + $payload = [ + 'status_order' => 'Selesai', + 'modified_at' => Carbon::now(), + ]; + $orderDetail->update($payload); + return response()->json([ + 'status' => true, + ]); + } + /** diff --git a/public/gambar/jbFPdYgWyiUtmMB.png b/public/gambar/jbFPdYgWyiUtmMB.png new file mode 100644 index 0000000..6a397be Binary files /dev/null and b/public/gambar/jbFPdYgWyiUtmMB.png differ diff --git a/public/js/pesanan_pending/action.js b/public/js/pesanan_pending/action.js index 921b7ab..2807b50 100644 --- a/public/js/pesanan_pending/action.js +++ b/public/js/pesanan_pending/action.js @@ -139,6 +139,7 @@ document.getElementById('formActionApproveBillingOrder').addEventListener('submi }); -function approveProgress(e){ +function approveProgress(order_id){ new bootstrap.Modal(modalActionProgressOrder).show(); + fetchDetailOrder(order_id) } diff --git a/public/js/pesanan_pending/action_progres_order.js b/public/js/pesanan_pending/action_progres_order.js new file mode 100644 index 0000000..f4b3c27 --- /dev/null +++ b/public/js/pesanan_pending/action_progres_order.js @@ -0,0 +1,144 @@ +function fetchDetailOrder(order_id){ + fetch(`/dashboard/pending/action-progress-order/${order_id}`) + .then(res => res.json()) + .then(res => { + const data = res; + document.getElementById('pesanan_container').innerHTML ='' + // Generate HTML untuk order_detail + const detailHTML = (data?.order_detail || []).map(detail => { + return ` +
+ Nama Menu: ${detail?.menu?.nama_menu || '-'}
+Jumlah: ${detail?.jumlah || 0}
+Tanggal Pesan: ${detail?.tgl_antar || 0}
+Harga: Rp ${parseInt(detail?.harga_satuan || 0).toLocaleString('id-ID')}
+Status Pesanan: + + ${detail?.status_order} + +
+ +
+ No Order: ${data.no_order}
+Type Pembayaran: ${data.cara_pembayaran}
+Tanggal Pembayaran: ${data.tgl_pembayaran || '-'}
+Total Harga: Rp ${parseInt(data.total_harga).toLocaleString('id-ID')}
+Terjadi kesalahan saat memuat data.
'; + console.error(err); + }); + +} + +// Tambah listener untuk semua switch + +function showToast(message, isError = false) { + const toastId = `toast_${Date.now()}`; + const toastHTML = ` +