AcademyPromptTemplate::class, AcademyAnalyticsContentType::LESSON => AcademyLesson::class, AcademyAnalyticsContentType::COURSE => AcademyCourse::class, AcademyAnalyticsContentType::PROMPT_PACK => AcademyPromptPack::class, AcademyAnalyticsContentType::CHALLENGE => AcademyChallenge::class, default => null, }; if ($modelClass === null) { return null; } return $modelClass::query()->find($contentId); } public function exists(string $contentType, int $contentId): bool { return $this->resolve($contentType, $contentId) instanceof Model; } public function title(string $contentType, ?int $contentId): string { if (! $contentId) { return match ($contentType) { AcademyAnalyticsContentType::HOME => 'Academy Home', AcademyAnalyticsContentType::SEARCH => 'Academy Search', AcademyAnalyticsContentType::UPGRADE => 'Academy Upgrade', default => 'Unknown Academy Content', }; } $content = $this->resolve($contentType, $contentId); if (! $content instanceof Model) { return 'Unknown Academy Content'; } return (string) ($content->title ?? $content->name ?? sprintf('%s #%d', $contentType, $contentId)); } public function accessLevel(string $contentType, ?int $contentId): ?string { if (! $contentId) { return null; } $content = $this->resolve($contentType, $contentId); return $content instanceof Model ? (string) ($content->access_level ?? '') : null; } }