*/ use HasFactory; public const STATUS_DRAFT = 'draft'; public const STATUS_APPROVED = 'approved'; public const STATUS_SUPERSEDED = 'superseded'; protected $fillable = [ 'project_id', 'revision_number', 'change_notes', 'status', 'created_by', 'approved_by', 'approved_at', 'fusion_project_id', 'fusion_document_id', 'fusion_version', ]; protected function casts(): array { return [ 'approved_at' => 'datetime', ]; } public function project(): BelongsTo { return $this->belongsTo(Project::class); } public function creator(): BelongsTo { return $this->belongsTo(User::class, 'created_by'); } public function approver(): BelongsTo { return $this->belongsTo(User::class, 'approved_by'); } public function files(): HasMany { return $this->hasMany(ProjectFile::class, 'revision_id'); } public function costSnapshots(): HasMany { return $this->hasMany(ProjectCostSnapshot::class, 'revision_id'); } public function isApproved(): bool { return $this->status === self::STATUS_APPROVED; } }