NIM_E31222518/app/Http/Controllers/Admin/PesananController.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');
}
}