Enhance order status update functionality and improve modal button actions for better user experience
This commit is contained in:
parent
c44d3e3d15
commit
19a2c1668d
|
|
@ -34,7 +34,7 @@ public function updateStatus(Request $request, $id)
|
||||||
session()->flash('success', "Booking {$pesanan->no_invoice} telah diterima!");
|
session()->flash('success', "Booking {$pesanan->no_invoice} telah diterima!");
|
||||||
} elseif ($request->jenis === 'selesai') {
|
} elseif ($request->jenis === 'selesai') {
|
||||||
$status = 'selesai';
|
$status = 'selesai';
|
||||||
session()->flash('success', "Pesanan {$pesanan->no_invoice} berhasil diselesaikan!");
|
session()->flash('success', "Booking {$pesanan->no_invoice} berhasil diselesaikan!");
|
||||||
} else {
|
} else {
|
||||||
$status = 'ditolak';
|
$status = 'ditolak';
|
||||||
session()->flash('error', "Booking {$pesanan->no_invoice} telah ditolak!");
|
session()->flash('error', "Booking {$pesanan->no_invoice} telah ditolak!");
|
||||||
|
|
@ -67,6 +67,7 @@ public function updateStatus(Request $request, $id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 6. Susun Pesan WA
|
// 6. Susun Pesan WA
|
||||||
|
$msg = null;
|
||||||
if ($status === 'diterima') {
|
if ($status === 'diterima') {
|
||||||
$msg = "Halo Kak *{$nama}* ,\n\n" .
|
$msg = "Halo Kak *{$nama}* ,\n\n" .
|
||||||
"Booking foto Anda dengan Invoice: *{$invoice}* telah kami *TERIMA*. \n\n" .
|
"Booking foto Anda dengan Invoice: *{$invoice}* telah kami *TERIMA*. \n\n" .
|
||||||
|
|
@ -78,7 +79,7 @@ public function updateStatus(Request $request, $id)
|
||||||
" Tanggal: {$tanggal}\n" .
|
" Tanggal: {$tanggal}\n" .
|
||||||
" Jam: {$jam_mulai} - {$jam_selesai} WIB\n\n" .
|
" Jam: {$jam_mulai} - {$jam_selesai} WIB\n\n" .
|
||||||
"Mohon datang 15 menit sebelum jadwal dimulai ya Kak. Sampai jumpa di studio! ";
|
"Mohon datang 15 menit sebelum jadwal dimulai ya Kak. Sampai jumpa di studio! ";
|
||||||
} else {
|
} elseif ($status === 'ditolak') {
|
||||||
$msg = "Halo Kak *{$nama}*,\n\n" .
|
$msg = "Halo Kak *{$nama}*,\n\n" .
|
||||||
"Mohon maaf, booking foto Anda dengan Invoice *{$invoice}* terpaksa kami *TOLAK* dikarenakan:\n\n" .
|
"Mohon maaf, booking foto Anda dengan Invoice *{$invoice}* terpaksa kami *TOLAK* dikarenakan:\n\n" .
|
||||||
"*[TULIS ALASAN DI SINI]*\n\n" .
|
"*[TULIS ALASAN DI SINI]*\n\n" .
|
||||||
|
|
@ -93,6 +94,9 @@ public function updateStatus(Request $request, $id)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 7. Format Nomor WhatsApp (Sesuaikan kolom: no_hp / no_wa)
|
// 7. Format Nomor WhatsApp (Sesuaikan kolom: no_hp / no_wa)
|
||||||
|
$wa_url = null;
|
||||||
|
|
||||||
|
if ($msg) {
|
||||||
$no_wa = preg_replace('/[^0-9]/', '', $pesanan->pelanggan->no_wa);
|
$no_wa = preg_replace('/[^0-9]/', '', $pesanan->pelanggan->no_wa);
|
||||||
|
|
||||||
if (str_starts_with($no_wa, '0')) {
|
if (str_starts_with($no_wa, '0')) {
|
||||||
|
|
@ -101,9 +105,13 @@ public function updateStatus(Request $request, $id)
|
||||||
$no_wa = '62' . $no_wa;
|
$no_wa = '62' . $no_wa;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$wa_url = "https://wa.me/{$no_wa}?text=" . urlencode($msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'success' => true,
|
'success' => true,
|
||||||
'wa_url' => "https://wa.me/{$no_wa}?text=" . urlencode($msg)
|
'wa_url' => $wa_url
|
||||||
]);
|
]);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
return response()->json(['success' => false, 'message' => $e->getMessage()], 500);
|
return response()->json(['success' => false, 'message' => $e->getMessage()], 500);
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
<div class="modal fade text-left" id="foto{{ $p->id_booking }}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel1"
|
<div class="modal fade text-left" id="foto{{ $p->id_booking }}" tabindex="-1" role="dialog"
|
||||||
aria-hidden="true">
|
aria-labelledby="labelFoto{{ $p->id_booking }}" aria-hidden="true">
|
||||||
<div class="modal-dialog modal-dialog-centered modal-lg" role="document">
|
<div class="modal-dialog modal-dialog-centered modal-lg" role="document">
|
||||||
<div class="modal-content">
|
<div class="modal-content">
|
||||||
|
|
||||||
<div class="modal-header">
|
<div class="modal-header">
|
||||||
<h5 class="modal-title" id="myModalLabel1">Detail Pesanan Foto</h5>
|
<h5 class="modal-title" id="labelFoto{{ $p->id_booking }}">Detail Pesanan Foto</h5>
|
||||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -90,8 +90,7 @@ class="badge {{ $p->status_label->class }}">
|
||||||
<div class="proof-img-wrapper">
|
<div class="proof-img-wrapper">
|
||||||
@if ($p->bukti_bayar)
|
@if ($p->bukti_bayar)
|
||||||
{{-- Klik hanya pada gambar --}}
|
{{-- Klik hanya pada gambar --}}
|
||||||
<img src="{{ asset('storage/' . $p->bukti_bayar) }}" class="proof-img" <img
|
<img src="{{ asset('storage/' . $p->bukti_bayar) }}" class="proof-img"
|
||||||
src="{{ asset('storage/' . $p->bukti_bayar) }}" class="proof-img"
|
|
||||||
style="cursor: pointer;"
|
style="cursor: pointer;"
|
||||||
onclick="showImageFoto('{{ asset('storage/' . $p->bukti_bayar) }}')">
|
onclick="showImageFoto('{{ asset('storage/' . $p->bukti_bayar) }}')">
|
||||||
@else
|
@else
|
||||||
|
|
@ -109,15 +108,22 @@ class="badge {{ $p->status_label->class }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-footer border-top-0 pt-2 px-2">
|
<div class="modal-footer border-top-0 pt-2 px-2">
|
||||||
<div class="d-flex w-100 gap-2">
|
<div class="d-flex w-100 gap-2">
|
||||||
|
@if ($p->status_booking == 'menunggu_verifikasi')
|
||||||
<button type="button" class="btn btn-danger flex-fill tolak"
|
<button type="button" class="btn btn-danger flex-fill tolak"
|
||||||
onclick="prosesTanpaDialog(this, 'tolak', '{{ $p->id_booking }}')">
|
onclick="prosesFoto(this, 'tolak', '{{ $p->id_booking }}', 'foto')">
|
||||||
Tolak Pesanan
|
Tolak Pesanan
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<button type="button" class="btn btn-success flex-fill terima"
|
<button type="button" class="btn btn-success flex-fill terima"
|
||||||
onclick="prosesTanpaDialog(this, 'terima', '{{ $p->id_booking }}')">
|
onclick="prosesFoto(this, 'terima', '{{ $p->id_booking }}', 'foto')">
|
||||||
Terima Pesanan
|
Terima Pesanan
|
||||||
</button>
|
</button>
|
||||||
|
@elseif ($p->status_booking == 'diterima')
|
||||||
|
<button type="button" class="btn btn-primary flex-fill terima"
|
||||||
|
onclick="prosesFoto(this, 'selesai', '{{ $p->id_booking }}', 'foto')">
|
||||||
|
Selesaikan Pesanan
|
||||||
|
</button>
|
||||||
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -126,7 +132,7 @@ class="badge {{ $p->status_label->class }}">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{-- MODAL GAMBAR --}}
|
{{-- MODAL GAMBAR --}}
|
||||||
<div class="modal fade" id="modalImagePreviewFoto" tabindex="-1" aria-hidden="true">
|
<div class="modal fade" id="modalImagePreviewFoto" tabindex="-1" aria-hidden="true" style="z-index: 1060 !important;">
|
||||||
<div class="modal-dialog modal-dialog-centered modal-lg">
|
<div class="modal-dialog modal-dialog-centered modal-lg">
|
||||||
<div class="modal-content bg-transparent border-0 shadow-none">
|
<div class="modal-content bg-transparent border-0 shadow-none">
|
||||||
{{-- Tombol close putih agar terlihat di background gelap --}}
|
{{-- Tombol close putih agar terlihat di background gelap --}}
|
||||||
|
|
@ -158,7 +164,7 @@ function showImageFoto(src) {
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
function prosesTanpaDialog(btn, jenis, id) {
|
function prosesFoto(btn, jenis, id) {
|
||||||
// 1. Efek Loading pada tombol yang diklik
|
// 1. Efek Loading pada tombol yang diklik
|
||||||
const originalText = btn.innerHTML;
|
const originalText = btn.innerHTML;
|
||||||
btn.innerHTML = '<span class="spinner-border spinner-border-sm"></span>';
|
btn.innerHTML = '<span class="spinner-border spinner-border-sm"></span>';
|
||||||
|
|
@ -183,8 +189,9 @@ function prosesTanpaDialog(btn, jenis, id) {
|
||||||
.then(data => {
|
.then(data => {
|
||||||
if (data.success) {
|
if (data.success) {
|
||||||
// 3. Langsung buka WhatsApp di tab baru
|
// 3. Langsung buka WhatsApp di tab baru
|
||||||
|
if (data.wa_url) {
|
||||||
window.open(data.wa_url, '_blank');
|
window.open(data.wa_url, '_blank');
|
||||||
// 4. Reload halaman utama untuk update status di tabel
|
}
|
||||||
location.reload();
|
location.reload();
|
||||||
} else {
|
} else {
|
||||||
alert("Error: " + data.message);
|
alert("Error: " + data.message);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue