/
denispirit
/
gruzovozoff
Обзор
Документация
Войти
/
denispirit
/
gruzovozoff
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
app/Models/Order.php
100 строк
2 KB
denispirit
итоговый проект Грузовозофф
27 фев 2026, 09:30
27 фев 2026, 09:30
377ca07
Код
Авторство
О чём код?
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasOne; class Order extends Model { use HasFactory; // Типы грузов const CARGO_TYPES = [ 'хрупкое', 'скоропортящееся', 'требуется рефрижератор', 'животные', 'жидкость', 'мебель', 'мусор' ]; // Статусы заказов const STATUS_NEW = 'Новая'; const STATUS_IN_PROGRESS = 'В работе'; const STATUS_CANCELED = 'Отменена'; const STATUS_COMPLETED = 'Выполнено'; protected $fillable = [ 'user_id', 'date_time', 'weight', 'dimensions', 'address_from', 'address_to', 'cargo_type', 'status', 'admin_notes', ]; protected $casts = [ 'date_time' => 'datetime', 'weight' => 'decimal:2', ]; /** * Получить пользователя, которому принадлежит заказ */ public function user(): BelongsTo { return $this->belongsTo(User::class); } /** * Получить отзыв к заказу */ public function review(): HasOne { return $this->hasOne(Review::class); } /** * Проверить, можно ли оставить отзыв к заказу */ public function canAddReview(): bool { return $this->status === self::STATUS_COMPLETED && !$this->review; } /** * Проверить, является ли груз мусором */ public function isGarbage(): bool { return $this->cargo_type === 'мусор'; } /** * Получить все возможные статусы заказа */ public static function getStatuses(): array { return [ self::STATUS_NEW, self::STATUS_IN_PROGRESS, self::STATUS_CANCELED, self::STATUS_COMPLETED, ]; } /** * Получить все возможные типы груза */ public static function getCargoTypes(): array { return self::CARGO_TYPES; } }