ultimatepos/Modules/Maintenance/Models/FieldMission.php

93 lines
2.1 KiB
PHP

<?php
namespace Modules\Maintenance\Models;
use App\Business;
use App\BusinessLocation;
use App\User;
use Illuminate\Database\Eloquent\Model;
class FieldMission extends Model
{
protected $table = 'maintenance_field_missions';
protected $fillable = [
'business_id',
'mission_number',
'mission_type',
'source_type',
'source_id',
'title',
'description',
'equipment_id',
'destination_location_id',
'destination_site',
'status',
'planned_departure_at',
'planned_return_at',
'actual_departure_at',
'actual_return_at',
'lead_user_id',
'total_labor_cost',
'total_expense_cost',
'total_cost',
'notes',
'created_by',
];
protected $casts = [
'planned_departure_at' => 'datetime',
'planned_return_at' => 'datetime',
'actual_departure_at' => 'datetime',
'actual_return_at' => 'datetime',
'total_labor_cost' => 'integer',
'total_expense_cost' => 'integer',
'total_cost' => 'integer',
];
public function business()
{
return $this->belongsTo(Business::class);
}
public function equipment()
{
return $this->belongsTo(Equipment::class, 'equipment_id');
}
public function destinationLocation()
{
return $this->belongsTo(BusinessLocation::class, 'destination_location_id');
}
public function leadUser()
{
return $this->belongsTo(User::class, 'lead_user_id');
}
public function creator()
{
return $this->belongsTo(User::class, 'created_by');
}
public function crewMembers()
{
return $this->hasMany(MissionCrewMember::class, 'mission_id');
}
public function items()
{
return $this->hasMany(MissionItem::class, 'mission_id');
}
public function expenses()
{
return $this->hasMany(MissionExpense::class, 'mission_id');
}
public function activeMission(): bool
{
return ! in_array($this->status, ['closed', 'cancelled'], true);
}
}