diff --git a/app/Http/Controllers/Admin/AdminBookingController.php b/app/Http/Controllers/Admin/AdminBookingController.php
index 905747c..5f33e9a 100644
--- a/app/Http/Controllers/Admin/AdminBookingController.php
+++ b/app/Http/Controllers/Admin/AdminBookingController.php
@@ -21,6 +21,14 @@ public function index()
public function show(string $id)
{
$booking = Booking::findOrFail($id);
+
+ // 🔁 Auto-cancel: Jika status 'waiting' dan lebih dari 24 jam
+ if ($booking->status === 'waiting' && $booking->created_at->lt(now()->subDay())) {
+ $booking->update(['status' => 'cancelled']);
+ // Refresh agar status baru terbaca
+ $booking->refresh();
+ }
+
$expectedDpAmount = $booking->total_price * self::DP_PERCENTAGE;
return view('admin.bookings.show', compact('booking', 'expectedDpAmount'));
diff --git a/resources/views/admin/bookings/index.blade.php b/resources/views/admin/bookings/index.blade.php
index bdf16c2..bf36572 100644
--- a/resources/views/admin/bookings/index.blade.php
+++ b/resources/views/admin/bookings/index.blade.php
@@ -45,15 +45,29 @@
@php
- $badgeColor = match ($booking->status) {
+ // Cek apakah status waiting tapi sudah expired
+ $isExpired = $booking->status === 'waiting' && $booking->created_at->lt(now()->subDay());
+ $displayStatus = $isExpired ? 'cancelled' : $booking->status;
+
+ $badgeColor = match ($displayStatus) {
'waiting' => 'bg-yellow-100 text-yellow-800 border-yellow-200',
'booked' => 'bg-green-100 text-green-800 border-green-200',
'completed' => 'bg-blue-100 text-blue-800 border-blue-200',
+ 'cancelled' => 'bg-red-100 text-red-800 border-red-200',
default => 'bg-gray-100 text-gray-800 border-gray-200'
};
+
+ $label = match ($displayStatus) {
+ 'waiting' => 'Menunggu DP',
+ 'booked' => 'Sudah Dibooking',
+ 'completed' => 'Selesai',
+ 'cancelled' => 'Dibatalkan',
+ default => ucfirst($displayStatus)
+ };
@endphp
-
- {{ ucfirst($booking->status === 'waiting' ? 'Menunggu DP' : ($booking->status === 'booked' ? 'Sudah Dibooking' : 'Selesai')) }}
+
+ {{ $label }}
|
diff --git a/resources/views/admin/bookings/show.blade.php b/resources/views/admin/bookings/show.blade.php
index 163aedf..3b02d6c 100644
--- a/resources/views/admin/bookings/show.blade.php
+++ b/resources/views/admin/bookings/show.blade.php
@@ -106,7 +106,45 @@ class="inline-flex items-center gap-2 bg-gray-200 hover:bg-gray-300 text-gray-80
-
+
+
+
+ Status Pesanan
+ @php
+ $badgeColor = match ($booking->status) {
+ 'waiting' => 'bg-yellow-100 text-yellow-800 border-yellow-200',
+ 'booked' => 'bg-green-100 text-green-800 border-green-200',
+ 'completed' => 'bg-blue-100 text-blue-800 border-blue-200',
+ 'cancelled' => 'bg-red-100 text-red-800 border-red-200',
+ default => 'bg-gray-100 text-gray-800 border-gray-200'
+ };
+ @endphp
+
+ {{ ucfirst(
+ $booking->status === 'waiting' ? 'Menunggu DP' :
+ ($booking->status === 'booked' ? 'Sudah Dibooking' :
+ ($booking->status === 'completed' ? 'Selesai' : 'Dibatalkan'))
+ ) }}
+
+
+
+ @if($booking->status === 'waiting' && $booking->created_at->gt(now()->subDay()))
+
+ Waktu untuk bayar DP:
+ Memuat...
+ Booking akan dibatalkan otomatis jika DP tidak dibayar.
+
+ @endif
+
+
+ @if($booking->status === 'cancelled')
+
+ Booking dibatalkan karena melewati batas waktu pembayaran DP.
+
+ @endif
+
+
+
@if($booking->status === 'waiting')
Nominal DP yang harus dibayar:
@@ -116,61 +154,43 @@ class="inline-flex items-center gap-2 bg-gray-200 hover:bg-gray-300 text-gray-80
@endif
-
-
- Tindakan Cepat
+
+
+ Tindakan Cepat
+
+
- Klik untuk memperbarui status terbaru
-
-
-
- Status Pesanan
- @php
- $badgeColor = match ($booking->status) {
- 'waiting' => 'bg-yellow-100 text-yellow-800 border-yellow-200',
- 'booked' => 'bg-green-100 text-green-800 border-green-200',
- 'completed' => 'bg-blue-100 text-blue-800 border-blue-200',
- default => 'bg-gray-100 text-gray-800 border-gray-200'
- };
- @endphp
-
- {{ ucfirst($booking->status === 'waiting' ? 'Menunggu DP' : ($booking->status === 'booked' ? 'Sudah Dibooking' : 'Selesai')) }}
-
+
+ @if($booking->status === 'waiting')
+ @php
+ $dpAmount = number_format($expectedDpAmount, 0, ',', '.');
+ $message = "Halo kak {$booking->contact_name},\n\n"
+ . "Terima kasih, pesanan untuk sesi {$booking->session_name} pada tanggal "
+ . \Carbon\Carbon::parse($booking->booking_date)->translatedFormat('d F Y') . " pukul {$booking->booking_time} telah kami terima.\n"
+ . "Mohon transfer DP Rp{$dpAmount} untuk mengamankan jadwal.\n"
+ . "Balas dengan bukti transfer ya. Terima kasih!";
+ $whatsappNumber = preg_replace('/[^0-9]/', '', $booking->whatsapp_number);
+ $url = 'https://wa.me/' . $whatsappNumber . '?text=' . urlencode($message);
+ @endphp
+
+
+ Kirim Konfirmasi via WhatsApp
+
+ @endif
-
- @if($booking->status === 'waiting')
- @php
- $dpAmount = number_format($expectedDpAmount, 0, ',', '.');
- $message = "Halo kak {$booking->contact_name},
-"
- . "Terima kasih, pesanan untuk sesi {$booking->session_name} pada tanggal "
- . \Carbon\Carbon::parse($booking->booking_date)->translatedFormat('d F Y') . " pukul {$booking->booking_time} telah kami terima.
-"
- . "Mohon transfer DP Rp{$dpAmount} untuk mengamankan jadwal.
-"
- . "Balas dengan bukti transfer ya. Terima kasih!";
- $whatsappNumber = preg_replace('/[^0-9]/', '', $booking->whatsapp_number);
- $url = 'https://wa.me/' . $whatsappNumber . '?text=' . urlencode($message);
- @endphp
-
-
- Kirim Konfirmasi via WhatsApp
-
- @endif
-
@if($booking->status === 'waiting')
@@ -283,21 +303,63 @@ class="rounded-lg border w-full mt-1 shadow-sm">
@endif
-
-
-
+ @if(!in_array($booking->status, ['completed', 'cancelled']))
+
+
+
+ @endif
+
+ @if($booking->status === 'waiting' && $booking->created_at->gt(now()->subDay()))
+
+ @endif
+
|