Files
backend/app/Models/Mission.php
2026-06-10 14:37:36 +03:30

72 lines
1.7 KiB
PHP

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\MorphToMany;
class Mission extends Model
{
use HasFactory;
protected $guarded = [];
protected $hidden = ['pivot'];
protected $casts = [
'start_time' => 'datetime',
'finish_time' => 'datetime',
];
protected function requestedMachines(): Attribute
{
return Attribute::make(
get: fn($value) => json_decode($value)
);
}
public function histories(): HasMany
{
return $this->hasMany(MissionHistory::class);
}
public function roadPatrol(): HasOne
{
return $this->hasOne(RoadPatrol::class);
}
public function roadItems(): HasMany
{
return $this->hasMany(RoadItemsProject::class);
}
public function rahdaran(): MorphToMany
{
return $this->morphToMany(Rahdaran::class,
'rahdarable',
'rahdarables',
'rahdarable_id',
'rahdar_id',
)->withPivot('is_driver');
}
public function machine(): BelongsTo
{
return $this->belongsTo(CMMSMachine::class, 'machine_id');
}
public function getMissionAreaForFms(): array
{
return collect($this->area['coordinates'])
->map(fn ($point) => [
'Latitude' => $point[1], // lat
'Longitude' => $point[0], // lng
])
->values()
->toArray();
}
}