79 lines
1.7 KiB
PHP
79 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Concerns\HasUuids;
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
|
|
class AssetMovement extends Model
|
|
{
|
|
use HasFactory, HasUuids;
|
|
|
|
protected $fillable = [
|
|
'asset_id',
|
|
'from_location_id',
|
|
'to_location_id',
|
|
'from_department_id',
|
|
'to_department_id',
|
|
'from_asset_user_id',
|
|
'to_asset_user_id',
|
|
'notes',
|
|
'moved_by',
|
|
'performed_at',
|
|
'status',
|
|
'requested_by',
|
|
'approved_by',
|
|
'approved_at',
|
|
'rejected_by',
|
|
'rejected_at',
|
|
'decision_notes',
|
|
];
|
|
|
|
protected $casts = [
|
|
'performed_at' => 'datetime',
|
|
'approved_at' => 'datetime',
|
|
'rejected_at' => 'datetime',
|
|
];
|
|
|
|
public function asset()
|
|
{
|
|
return $this->belongsTo(Asset::class);
|
|
}
|
|
|
|
public function fromLocation()
|
|
{
|
|
return $this->belongsTo(AssetLocation::class, 'from_location_id');
|
|
}
|
|
|
|
public function toLocation()
|
|
{
|
|
return $this->belongsTo(AssetLocation::class, 'to_location_id');
|
|
}
|
|
|
|
public function fromDepartment()
|
|
{
|
|
return $this->belongsTo(Department::class, 'from_department_id');
|
|
}
|
|
|
|
public function toDepartment()
|
|
{
|
|
return $this->belongsTo(Department::class, 'to_department_id');
|
|
}
|
|
|
|
public function fromUser()
|
|
{
|
|
return $this->belongsTo(AssetUser::class, 'from_asset_user_id');
|
|
}
|
|
|
|
public function toUser()
|
|
{
|
|
return $this->belongsTo(AssetUser::class, 'to_asset_user_id');
|
|
}
|
|
|
|
public function approval()
|
|
{
|
|
return $this->morphOne(AssetApprovalRequest::class, 'approvable');
|
|
}
|
|
}
|