53 lines
1.4 KiB
PHP
53 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
|
use MatanYadaev\EloquentSpatial\Objects\Point;
|
|
use MatanYadaev\EloquentSpatial\Traits\HasSpatial;
|
|
|
|
class TripStop extends Model
|
|
{
|
|
use HasFactory, HasSpatial;
|
|
|
|
public const STATUS_PENDING = 'pending';
|
|
|
|
public const STATUS_ARRIVED = 'arrived';
|
|
|
|
public const STATUS_COMPLETED = 'completed';
|
|
|
|
public const STATUS_SKIPPED = 'skipped';
|
|
|
|
protected $fillable = [
|
|
'trip_id', 'drop_off_point_id', 'sequence',
|
|
'scheduled_arrival', 'actual_arrival', 'actual_departure',
|
|
'status', 'total_scans', 'estimated_load_added_kg',
|
|
'skip_reason', 'coordinates_at_arrival', 'notes',
|
|
];
|
|
|
|
protected function casts(): array
|
|
{
|
|
return [
|
|
'scheduled_arrival' => 'datetime',
|
|
'actual_arrival' => 'datetime',
|
|
'actual_departure' => 'datetime',
|
|
'coordinates_at_arrival' => Point::class,
|
|
'total_scans' => 'integer',
|
|
'estimated_load_added_kg' => 'integer',
|
|
'sequence' => 'integer',
|
|
];
|
|
}
|
|
|
|
public function trip(): BelongsTo
|
|
{
|
|
return $this->belongsTo(Trip::class);
|
|
}
|
|
|
|
public function dropOffPoint(): BelongsTo
|
|
{
|
|
return $this->belongsTo(DropOffPoint::class);
|
|
}
|
|
}
|