55 lines
1.4 KiB
PHP
55 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Order;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\View\View;
|
|
|
|
class OrderController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of orders.
|
|
*/
|
|
public function index(Request $request): View
|
|
{
|
|
$query = Order::with('items')->latest();
|
|
|
|
if ($request->filled('status')) {
|
|
$query->where('status', $request->input('status'));
|
|
}
|
|
|
|
$orders = $query->paginate(20)->withQueryString();
|
|
|
|
return view('admin.orders.index', compact('orders'));
|
|
}
|
|
|
|
/**
|
|
* Display order details.
|
|
*/
|
|
public function show(Order $order): View
|
|
{
|
|
$order->load('items.product');
|
|
|
|
return view('admin.orders.show', compact('order'));
|
|
}
|
|
|
|
/**
|
|
* Update order status.
|
|
*/
|
|
public function updateStatus(Request $request, Order $order): RedirectResponse
|
|
{
|
|
$validated = $request->validate([
|
|
'status' => 'required|string|in:pending,processing,printed,shipped,completed,cancelled',
|
|
]);
|
|
|
|
$order->update(['status' => $validated['status']]);
|
|
|
|
return redirect()->route('admin.orders.show', $order)
|
|
->with('success', "Bestelling #{$order->order_number} status is gewijzigd naar '{$validated['status']}'!");
|
|
}
|
|
}
|
|
|