ViewTextbook.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. <?php
  2. namespace App\Filament\Resources\TextbookResource\Pages;
  3. use App\Filament\Resources\TextbookResource;
  4. use App\Models\SourcePaper;
  5. use App\Services\TextbookApiService;
  6. use Filament\Resources\Pages\ViewRecord;
  7. class ViewTextbook extends ViewRecord
  8. {
  9. protected static string $resource = TextbookResource::class;
  10. protected string $view = 'filament.resources.textbook-resource.view';
  11. public array $catalogTree = [];
  12. public array $linkedPapers = [];
  13. public function mount(int|string $record): void
  14. {
  15. parent::mount($record);
  16. $apiService = app(TextbookApiService::class);
  17. $this->catalogTree = $apiService->getTextbookCatalog((int) $this->record->id, 'tree');
  18. $seriesName = $this->record->series->name ?? null;
  19. $this->linkedPapers = SourcePaper::query()
  20. ->when($seriesName, fn ($query) => $query->where('textbook_series', $seriesName))
  21. ->latest('updated_at')
  22. ->take(8)
  23. ->get()
  24. ->map(fn ($paper) => [
  25. 'id' => $paper->id,
  26. 'title' => $paper->title ?: $paper->full_title ?: '未命名卷子',
  27. 'chapter' => $paper->chapter,
  28. 'grade' => $paper->grade,
  29. 'term' => $paper->term,
  30. 'source_type' => $paper->source_type,
  31. 'updated_at' => $paper->updated_at,
  32. ])
  33. ->toArray();
  34. }
  35. }