TIF_NGANJUK_E41220418/app/Http/Controllers/User/PesanBuketController.php

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());
}
}
}