/
denispirit
/
gruzovozoff
Обзор
Документация
Войти
/
denispirit
/
gruzovozoff
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
app/Http/Controllers/OrderController.php
95 строк
3 KB
denispirit
итоговый проект Грузовозофф
27 фев 2026, 09:30
27 фев 2026, 09:30
377ca07
Код
Авторство
О чём код?
<?php namespace App\Http\Controllers; use App\Models\Order; use App\Models\Review; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; class OrderController extends Controller { /** * Показать список заказов пользователя */ public function index() { $orders = Order::where('user_id', Auth::id()) ->orderBy('created_at', 'desc') ->paginate(10); return view('orders.index', compact('orders')); } /** * Показать форму создания заказа */ public function create() { $cargoTypes = Order::getCargoTypes(); return view('orders.create', compact('cargoTypes')); } /** * Сохранение нового заказа */ public function store(Request $request) { $validated = $request->validate([ 'date_time' => ['required', 'date', 'after:now'], 'weight' => ['required', 'numeric', 'min:0.1', 'max:10000'], 'dimensions' => ['required', 'string', 'max:255'], 'address_from' => ['required', 'string', 'max:500'], 'address_to' => ['required', 'string', 'max:500'], 'cargo_type' => ['required', 'in:' . implode(',', Order::getCargoTypes())], ]); $order = Order::create([ 'user_id' => Auth::id(), 'date_time' => $validated['date_time'], 'weight' => $validated['weight'], 'dimensions' => $validated['dimensions'], 'address_from' => $validated['address_from'], 'address_to' => $validated['address_to'], 'cargo_type' => $validated['cargo_type'], 'status' => Order::STATUS_NEW, ]); // Уведомление о повышенной стоимости для мусора if ($order->isGarbage()) { return redirect()->route('orders.index') ->with('success', 'Заявка создана успешно!') ->with('info', 'Обратите внимание: при выборе типа груза "Мусор" стоимость заказа увеличивается из-за необходимости утилизации.'); } return redirect()->route('orders.index')->with('success', 'Заявка создана успешно!'); } /** * Добавление отзыва к заказу */ public function addReview(Request $request, Order $order) { // Проверяем, что заказ принадлежит пользователю и выполнен if ($order->user_id !== Auth::id()) { abort(403, 'Доступ запрещен.'); } if (!$order->canAddReview()) { return back()->with('error', 'Невозможно оставить отзыв для этого заказа.'); } $validated = $request->validate([ 'rating' => ['required', 'integer', 'min:1', 'max:5'], 'comment' => ['required', 'string', 'max:1000'], ]); Review::create([ 'order_id' => $order->id, 'rating' => $validated['rating'], 'comment' => $validated['comment'], ]); return back()->with('success', 'Отзыв успешно добавлен!'); } }