Asset::query(), self::PROJECT => Project::query(), self::TASK => Task::query(), self::PLAN => Plan::query(), self::REQUIREMENT => Requirement::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(), }; } public function nameField(): string { return match ($this) { self::ASSET, self::PROJECT, self::TASK => "name", self::PLAN, self::REQUIREMENT => "title", default => "name", }; } public function detectorClassName(): ?string { return match ($this) { ActionObjectType::PROJECT => ProjectDetector::class, ActionObjectType::REQUIREMENT => RequirementDetector::class, ActionObjectType::TASK => TaskDetector::class, default => null }; } }