belongsTo(Vehicle::class); } public function package() { return $this->belongsTo(Package::class); } public function vehicleTagLogs() { return $this->hasMany(VehicleTagLog::class); } public function scanHistories() { return $this->hasMany(ScanHistory::class); } /** * Marcar tag como asignado a un vehículo */ public function markAsAssigned(int $vehicleId, string $folio): void { $this->update([ 'vehicle_id' => $vehicleId, 'folio' => $folio, 'status' => self::STATUS_ASSIGNED, ]); } /** * Verificar si el tag está disponible */ public function isAvailable(): bool { return $this->status === self::STATUS_AVAILABLE; } /** * Verificar si el tag está asignado */ public function isAssigned(): bool { return $this->status === self::STATUS_ASSIGNED; } /** * Verificar si el tag está cancelado */ public function isCancelled(): bool { return $this->status === self::STATUS_CANCELLED; } /** * Verificar si el tag está perdido */ public function isLost(): bool { return $this->status === self::STATUS_LOST; } }