add PesananBuketRequest and PesananFotoRequest for improved validation and structure in PesananBuketController and PesananFotoController
This commit is contained in:
parent
ff929d6905
commit
120aa03fc9
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\TransaksiBuket;
|
use App\Models\TransaksiBuket;
|
||||||
|
use App\Services\WhatsAppService; // Import Service
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class PesananBuketController extends Controller
|
class PesananBuketController extends Controller
|
||||||
|
|
@ -19,61 +20,21 @@ public function index()
|
||||||
public function updateStatus(Request $request, $id)
|
public function updateStatus(Request $request, $id)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$pesanan = \App\Models\TransaksiBuket::with(['pelanggan', 'buket'])->findOrFail($id);
|
$pesanan = TransaksiBuket::with(['pelanggan', 'buket'])->findOrFail($id);
|
||||||
if ($request->jenis === 'terima') {
|
$status = $request->jenis === 'terima' ? 'diterima' : ($request->jenis === 'selesai' ? 'selesai' : 'ditolak');
|
||||||
$status = 'diterima';
|
$labels = [
|
||||||
session()->flash('success', "Pesanan {$pesanan->no_invoice} telah diterima!");
|
'diterima' => 'telah diterima',
|
||||||
} elseif ($request->jenis === 'selesai') {
|
'selesai' => 'berhasil diselesaikan',
|
||||||
$status = 'selesai';
|
'ditolak' => 'telah ditolak'
|
||||||
session()->flash('success', "Pesanan {$pesanan->no_invoice} berhasil diselesaikan!");
|
];
|
||||||
} else {
|
$sessionKey = $status === 'ditolak' ? 'error' : 'success';
|
||||||
$status = 'ditolak';
|
$sessionMsg = "Pesanan {$pesanan->no_invoice} " . $labels[$status] . "!";
|
||||||
session()->flash('error', "Pesanan {$pesanan->no_invoice} telah ditolak!");
|
session()->flash($sessionKey, $sessionMsg);
|
||||||
}
|
|
||||||
$pesanan->update(['status_transaksi' => $status]);
|
$pesanan->update(['status_transaksi' => $status]);
|
||||||
$nama = $pesanan->pelanggan->nama;
|
$waUrl = WhatsAppService::getBuketNotification($pesanan, $status);
|
||||||
$produk = $pesanan->buket->nama;
|
|
||||||
$tgl_obj = \Carbon\Carbon::parse($pesanan->tgl_ambil)->locale('id');
|
|
||||||
$tanggal = $tgl_obj->translatedFormat('l, d F Y');
|
|
||||||
$waktu = $tgl_obj->format('H:i');
|
|
||||||
$total = number_format($pesanan->total_bayar, 0, ',', '.');
|
|
||||||
$req = $pesanan->request ?? '-';
|
|
||||||
$ucapan = $pesanan->ucapan ?? '-';
|
|
||||||
$invoice = $pesanan->no_invoice;
|
|
||||||
$msg = null;
|
|
||||||
if ($status === 'diterima') {
|
|
||||||
$msg = "Halo Kak *{$nama}*,\n\n" .
|
|
||||||
"Pesanan Anda dengan Nomor Invoice: *{$invoice}* telah kami *TERIMA* dan masuk dalam daftar proses pengerjaan.\n\n" .
|
|
||||||
"*Rincian Pesanan:*\n" .
|
|
||||||
"- *Produk:* {$produk}\n" .
|
|
||||||
"- *Total Bayar:* Rp {$total}\n" .
|
|
||||||
"- *Request:* {$req}\n" .
|
|
||||||
"- *Ucapan:* \"{$ucapan}\"\n" .
|
|
||||||
"- *Waktu Pengambilan:* {$tanggal} pukul {$waktu} WIB\n\n" .
|
|
||||||
"Mohon simpan rincian ini dan ditunggu info selanjutnya ya Kak. Terima kasih!";
|
|
||||||
} elseif ($status === 'ditolak') {
|
|
||||||
$msg = "Halo Kak *{$nama}*,\n\n" .
|
|
||||||
"Mengenai pesanan Anda dengan Nomor Invoice: *{$invoice}* terpaksa kami *TOLAK* dikarenakan:\n\n" .
|
|
||||||
"*[TULIS ALASAN DI SINI]*\n\n" .
|
|
||||||
"*Rincian Pesanan:*\n" .
|
|
||||||
"- *Produk:* {$produk}\n" .
|
|
||||||
"- *Total Bayar:* Rp {$total}\n" .
|
|
||||||
"- *Waktu Pengambilan:* {$tanggal}\n\n" .
|
|
||||||
"Admin kami akan segera menghubungi Kakak terkait proses pengembalian dana. Mohon maaf atas ketidaknyamanannya.";
|
|
||||||
}
|
|
||||||
$wa_url = null;
|
|
||||||
if ($msg) {
|
|
||||||
$no_wa = preg_replace('/[^0-9]/', '', $pesanan->pelanggan->no_wa);
|
|
||||||
if (str_starts_with($no_wa, '0')) {
|
|
||||||
$no_wa = '62' . substr($no_wa, 1);
|
|
||||||
} elseif (str_starts_with($no_wa, '8')) {
|
|
||||||
$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' => $wa_url
|
'wa_url' => $waUrl
|
||||||
]);
|
]);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
return response()->json(['success' => false, 'message' => $e->getMessage()], 500);
|
return response()->json(['success' => false, 'message' => $e->getMessage()], 500);
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\BookingFoto;
|
use App\Models\BookingFoto;
|
||||||
|
use App\Services\WhatsAppService; // Import Service
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class PesananFotoController extends Controller
|
class PesananFotoController extends Controller
|
||||||
|
|
@ -24,72 +25,21 @@ public function index()
|
||||||
public function updateStatus(Request $request, $id)
|
public function updateStatus(Request $request, $id)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$pesanan = \App\Models\BookingFoto::with(['pelanggan', 'paketFoto', 'detailAdditional.additional'])->findOrFail($id);
|
$pesanan = BookingFoto::with(['pelanggan', 'paketFoto', 'detailAdditional.additional'])->findOrFail($id);
|
||||||
if ($request->jenis === 'terima') {
|
$status = $request->jenis === 'terima' ? 'diterima' : ($request->jenis === 'selesai' ? 'selesai' : 'ditolak');
|
||||||
$status = 'diterima';
|
$labels = [
|
||||||
session()->flash('success', "Booking {$pesanan->no_invoice} telah diterima!");
|
'diterima' => 'telah diterima',
|
||||||
} elseif ($request->jenis === 'selesai') {
|
'selesai' => 'berhasil diselesaikan',
|
||||||
$status = 'selesai';
|
'ditolak' => 'telah ditolak'
|
||||||
session()->flash('success', "Booking {$pesanan->no_invoice} berhasil diselesaikan!");
|
];
|
||||||
} else {
|
$sessionKey = $status === 'ditolak' ? 'error' : 'success';
|
||||||
$status = 'ditolak';
|
$sessionMsg = "Booking {$pesanan->no_invoice} " . $labels[$status] . "!";
|
||||||
session()->flash('error', "Booking {$pesanan->no_invoice} telah ditolak!");
|
session()->flash($sessionKey, $sessionMsg);
|
||||||
}
|
|
||||||
$pesanan->update(['status_booking' => $status]);
|
$pesanan->update(['status_booking' => $status]);
|
||||||
$nama = $pesanan->pelanggan->nama;
|
$waUrl = WhatsAppService::getFotoNotification($pesanan, $status);
|
||||||
$paket = $pesanan->paketFoto->nama;
|
|
||||||
$tgl_obj = \Carbon\Carbon::parse($pesanan->tgl_booking)->locale('id');
|
|
||||||
$tanggal = $tgl_obj->translatedFormat('l, d F Y');
|
|
||||||
$jam_mulai = \Carbon\Carbon::parse($pesanan->jam_mulai)->format('H:i');
|
|
||||||
$jam_selesai = \Carbon\Carbon::parse($pesanan->jam_selesai)->format('H:i');
|
|
||||||
$total = number_format($pesanan->total_bayar, 0, ',', '.');
|
|
||||||
$invoice = $pesanan->no_invoice;
|
|
||||||
$list_additional = "";
|
|
||||||
if ($pesanan->detailAdditional->count() > 0) {
|
|
||||||
foreach ($pesanan->detailAdditional as $item) {
|
|
||||||
$list_additional .= "- " . $item->additional->nama . " (x" . $item->qty . ")\n";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$list_additional = "- Tidak ada additional\n";
|
|
||||||
}
|
|
||||||
$msg = null;
|
|
||||||
if ($status === 'diterima') {
|
|
||||||
$msg = "Halo Kak *{$nama}* ,\n\n" .
|
|
||||||
"Booking foto Anda dengan Invoice: *{$invoice}* telah kami *TERIMA*. \n\n" .
|
|
||||||
"*Rincian Booking:*\n" .
|
|
||||||
"- *Paket:* {$paket}\n" .
|
|
||||||
"*Additional:*\n{$list_additional}" .
|
|
||||||
"- *Total Bayar:* Rp {$total}\n\n" .
|
|
||||||
"*Jadwal Sesi Foto:*\n" .
|
|
||||||
" Tanggal: {$tanggal}\n" .
|
|
||||||
" Jam: {$jam_mulai} - {$jam_selesai} WIB\n\n" .
|
|
||||||
"Mohon datang 15 menit sebelum jadwal dimulai ya Kak. Sampai jumpa di studio! ";
|
|
||||||
} elseif ($status === 'ditolak') {
|
|
||||||
$msg = "Halo Kak *{$nama}*,\n\n" .
|
|
||||||
"Mohon maaf, booking foto Anda dengan Invoice *{$invoice}* terpaksa kami *TOLAK* dikarenakan:\n\n" .
|
|
||||||
"*[TULIS ALASAN DI SINI]*\n\n" .
|
|
||||||
"*Rincian Booking:*\n" .
|
|
||||||
"- *Paket:* {$paket}\n" .
|
|
||||||
"*Additional:*\n{$list_additional}" .
|
|
||||||
"- *Total Bayar:* Rp {$total}\n" .
|
|
||||||
"*Jadwal Sesi Foto:*\n" .
|
|
||||||
" Tanggal: {$tanggal}\n" .
|
|
||||||
" Jam: {$jam_mulai} - {$jam_selesai} WIB\n\n" .
|
|
||||||
"Admin kami akan segera menghubungi Kakak untuk info pengembalian dana atau penjadwalan ulang. Terima kasih. ";
|
|
||||||
}
|
|
||||||
$wa_url = null;
|
|
||||||
if ($msg) {
|
|
||||||
$no_wa = preg_replace('/[^0-9]/', '', $pesanan->pelanggan->no_wa);
|
|
||||||
if (str_starts_with($no_wa, '0')) {
|
|
||||||
$no_wa = '62' . substr($no_wa, 1);
|
|
||||||
} elseif (str_starts_with($no_wa, '8')) {
|
|
||||||
$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' => $wa_url
|
'wa_url' => $waUrl
|
||||||
]);
|
]);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
return response()->json(['success' => false, 'message' => $e->getMessage()], 500);
|
return response()->json(['success' => false, 'message' => $e->getMessage()], 500);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue