distinct(Anime::ATTRIBUTE_YEAR) ->orderBy(Anime::ATTRIBUTE_YEAR) ->pluck(Anime::ATTRIBUTE_YEAR) ); } /** * Display a listing of anime of year by season. * * @param YearShowRequest $request * @param string $year * @return JsonResponse */ public function show(YearShowRequest $request, string $year): JsonResponse { $query = new Query($request->validated()); $includeCriteria = $query->getIncludeCriteria(AnimeCollection::$wrap); $allowedIncludePaths = collect($includeCriteria?->getPaths()); $anime = new AnimeCollection( Anime::query() ->where(Anime::ATTRIBUTE_YEAR, $year) ->with($allowedIncludePaths->all()) ->orderBy(Anime::ATTRIBUTE_NAME) ->get(), $query ); $anime = collect($anime->toArray($request)); $anime = $anime->groupBy(fn (AnimeResource $anime) => Str::lower($anime->season->localize())); return new JsonResponse($anime); } /** * Get the underlying schema. * * @return Schema */ public function schema(): Schema { return new AnimeSchema(); } }