64 lines
1.7 KiB
PHP
64 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Pesanan;
|
|
use Illuminate\Http\Request;
|
|
use Barryvdh\DomPDF\Facade\Pdf;
|
|
|
|
class PesananController extends Controller
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->middleware('auth');
|
|
$this->middleware(\App\Http\Middleware\CheckRole::class . ':admin');
|
|
}
|
|
|
|
public function index()
|
|
{
|
|
$query = Pesanan::with(['user', 'barang']);
|
|
|
|
// Filter berdasarkan tanggal
|
|
if (request('start_date')) {
|
|
$query->whereDate('created_at', '>=', request('start_date'));
|
|
}
|
|
if (request('end_date')) {
|
|
$query->whereDate('created_at', '<=', request('end_date'));
|
|
}
|
|
|
|
// Filter berdasarkan status
|
|
if (request('status')) {
|
|
$query->where('status', request('status'));
|
|
}
|
|
|
|
$pesanan = $query->latest()->paginate(10);
|
|
return view('admin.pesanan.index', compact('pesanan'));
|
|
}
|
|
|
|
public function show(Pesanan $pesanan)
|
|
{
|
|
$pesanan->load(['user', 'barang']);
|
|
return view('admin.pesanan.show', compact('pesanan'));
|
|
}
|
|
|
|
public function updateStatus(Request $request, Pesanan $pesanan)
|
|
{
|
|
$request->validate([
|
|
'status' => 'required|in:pending,diproses,dikirim,selesai,dibatalkan',
|
|
]);
|
|
|
|
$pesanan->update([
|
|
'status' => $request->status,
|
|
]);
|
|
|
|
return redirect()->route('admin.pesanan.show', $pesanan)
|
|
->with('success', 'Status pesanan berhasil diperbarui');
|
|
}
|
|
|
|
public function cetakResi(Pesanan $pesanan)
|
|
{
|
|
$pdf = PDF::loadView('admin.pesanan.resi', compact('pesanan'));
|
|
return $pdf->stream('resi-' . $pesanan->id . '.pdf');
|
|
}
|
|
}
|