Загрузка данных
<?php
namespace App\Http\Controllers;
use App\Models\RepairOrder;
use App\Models\User;
use App\Models\Car;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class RepairOrderController extends Controller
{
// Список всех заказов
public function index(Request $request)
{
$query = RepairOrder::with(['user', 'car']);
// Поиск
if ($search = $request->input('search')) {
$query->where(function ($q) use ($search) {
$q->where('order_number', 'like', "%{$search}%")
->orWhereHas('user', function ($q2) use ($search) {
$q2->where('first_name', 'like', "%{$search}%")
->orWhere('last_name', 'like', "%{$search}%")
->orWhere('email', 'like', "%{$search}%");
})
->orWhereHas('car', function ($q2) use ($search) {
$q2->where('brand', 'like', "%{$search}%")
->orWhere('model', 'like', "%{$search}%")
->orWhere('license_plate', 'like', "%{$search}%");
});
});
}
$repairOrders = $query->paginate(6);
return view('repair-orders.index', compact('repairOrders'));
}
// Показать форму создания
public function create()
{
$users = User::all();
$cars = Car::all();
return view('repair-orders.create', compact('users', 'cars'));
}
// Сохранить новый заказ
public function store(Request $request)
{
$validated = $request->validate([
'user_id' => 'required|exists:users,id',
'car_id' => 'required|exists:cars,id',
'status' => 'required|in:pending,in_progress,completed,cancelled',
'problem_description' => 'nullable|string',
'order_date' => 'required|date',
]);
$validated['order_number'] = 'ORD-' . date('Ymd') . '-' . rand(1000, 9999);
$validated['admin_id'] = Auth::id();
$validated['total_labor_cost'] = 0;
$validated['total_parts_cost'] = 0;
$validated['total_amount'] = 0;
RepairOrder::create($validated);
return redirect()->route('repair-orders.index')->with('success', 'Заказ-наряд создан');
}
// Показать один заказ
public function show(string $id)
{
$repairOrder = RepairOrder::with(['user', 'car'])->findOrFail($id);
return view('repair-orders.show', compact('repairOrder'));
}
// Показать форму редактирования
public function edit(string $id)
{
$repairOrder = RepairOrder::findOrFail($id);
$users = User::all();
$cars = Car::all();
return view('repair-orders.edit', compact('repairOrder', 'users', 'cars'));
}
// Обновить заказ
public function update(Request $request, string $id)
{
$validated = $request->validate([
'user_id' => 'required|exists:users,id',
'car_id' => 'required|exists:cars,id',
'status' => 'required|in:pending,in_progress,completed,cancelled',
'problem_description' => 'nullable|string',
'order_date' => 'required|date',
]);
$repairOrder = RepairOrder::findOrFail($id);
$repairOrder->update($validated);
return redirect()->route('repair-orders.index')->with('success', 'Заказ-наряд обновлён');
}
// Удалить заказ
public function destroy(string $id)
{
$repairOrder = RepairOrder::findOrFail($id);
$repairOrder->delete();
return redirect()->route('repair-orders.index')->with('success', 'Заказ-наряд удалён');
}
}