105 lines
3.5 KiB
PHP
Executable File
105 lines
3.5 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Http\Controllers\User;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Buket;
|
|
use App\Models\Pelanggan;
|
|
use App\Models\TransaksiBuket;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use App\Services\WhatsAppService;
|
|
use Illuminate\Support\Str;
|
|
use App\Http\Requests\User\PesanBuketRequest;
|
|
|
|
class PesanBuketController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
$query = Buket::query();
|
|
|
|
if ($request->filled('keyword')) {
|
|
$search = $request->keyword;
|
|
$query->where(function ($q) use ($search) {
|
|
$q->where('nama', 'like', '%' . $search . '%')
|
|
->orWhere('deskripsi', 'like', '%' . $search . '%');
|
|
});
|
|
}
|
|
|
|
if ($request->filled('kategori') && $request->kategori != '') {
|
|
$query->where('kategori', $request->kategori);
|
|
}
|
|
|
|
if ($request->filled('min_price')) $query->where('harga', '>=', $request->min_price);
|
|
if ($request->filled('max_price')) $query->where('harga', '<=', $request->max_price);
|
|
if ($request->filled('ukuran')) $query->where('ukuran', $request->ukuran);
|
|
|
|
$buket = $query->paginate(8)->withQueryString();
|
|
|
|
if ($request->ajax()) {
|
|
return view('user.components._list', compact('buket'))->render();
|
|
}
|
|
|
|
return view('user/pesan-buket', compact('buket'));
|
|
}
|
|
|
|
public function detail($slug_id)
|
|
{
|
|
$buket = Buket::findOrFail($slug_id);
|
|
|
|
return view('user/detail-buket', compact('buket'));
|
|
}
|
|
public function formulir($slug_id)
|
|
{
|
|
$buket = Buket::findOrFail($slug_id);
|
|
return view('user/pembayaran-buket', compact('buket'));
|
|
}
|
|
public function store(PesanBuketRequest $request)
|
|
{
|
|
$buket = Buket::findOrFail($request->id_buket);
|
|
try {
|
|
DB::beginTransaction();
|
|
$pelanggan = Pelanggan::create($request->only([
|
|
'nama',
|
|
'no_wa'
|
|
]));
|
|
$pathBukti = null;
|
|
if ($request->hasFile('bukti_bayar')) {
|
|
$file = $request->file('bukti_bayar');
|
|
$namaFile = 'bukti_' . time() . '.' .
|
|
$file->getClientOriginalExtension();
|
|
$pathBukti = $file->storeAs(
|
|
'img/payment/buket',
|
|
$namaFile,
|
|
'public'
|
|
);
|
|
}
|
|
$transaksi = TransaksiBuket::create([
|
|
'id_pelanggan' => $pelanggan->id_pelanggan,
|
|
'id_buket' => $request->id_buket,
|
|
'tgl_ambil' => $request->tgl_ambil . ' ' .
|
|
$request->waktu_ambil,
|
|
'request' => $request->request_khusus,
|
|
'ucapan' => $request->ucapan,
|
|
'bukti_bayar' => $pathBukti,
|
|
'status_transaksi' => 'menunggu_verifikasi',
|
|
'total_bayar' => $buket->harga,
|
|
'no_invoice' => 'INV-BUKET-' . strtoupper(Str::random(6)),
|
|
]);
|
|
DB::commit();
|
|
$urlWA = WhatsAppService::getPesananBuketMessage(
|
|
$transaksi,
|
|
$pelanggan
|
|
);
|
|
return redirect()->route('pesan.buket')->with([
|
|
'success' => 'Pesanan Berhasil Dibuat!',
|
|
'waUrl' => $urlWA
|
|
]);
|
|
} catch (\Exception $e) {
|
|
DB::rollBack();
|
|
return back()->with('error', 'Terjadi kesalahan: ' .
|
|
$e->getMessage());
|
|
}
|
|
}
|
|
}
|