Asset::query(), self::PROJECT => Project::query(), self::TASK => Task::query(), self::PLAN => Plan::query(), self::REQUIREMENT => Requirement::query(), self::CONTAINER => Container::query(), self::CONTAINER_FILE => File::query(), self::FOLDER => Folder::query(), }; } public function modelBuilderAllowed(string $id = null): \Illuminate\Database\Eloquent\Builder { return match ($this) { self::ASSET => Asset::query()->allowed(), self::PROJECT => Project::query()->allowed($id), self::TASK => Task::query()->allowed($id), self::PLAN => Plan::query(), self::REQUIREMENT => Requirement::query(), self::CONTAINER => Container::query()->allowed($id), self::CONTAINER_FILE => File::query(), self::FOLDER => Folder::query(), }; } public function nameField(): string { return match ($this) { self::ASSET, self::PROJECT, self::TASK => "name", self::PLAN => "title", self::REQUIREMENT => "title", self::CONTAINER_FILE => 'title', default => "name", }; } public function detectorClassName(): ?string { return match ($this) { ActionObjectType::ASSET => AssetDetector::class, ActionObjectType::PROJECT => ProjectDetector::class, ActionObjectType::REQUIREMENT => RequirementDetector::class, ActionObjectType::TASK => TaskDetector::class, ActionObjectType::CONTAINER => ContainerDetector::class, ActionObjectType::CONTAINER_CONTENT => ContainerContentDetector::class, ActionObjectType::CONTAINER_FILE => FileDetector::class, ActionObjectType::FOLDER => FoldersDetector::class, default => null }; } }