Files
asset-management-system/app/Models/AssetMovement.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');
}
}