first(new IdFilter($stop)); return $this->json($departures->current(collect($stop), ...$this->getModifiersFromRequest($request))); } /** * @Route("/", methods={"GET"}) * @SWG\Response( * description="Gets departures from given stops.", * response=200, * @SWG\Schema(type="array", @SWG\Items(ref=@Model(type=Departure::class))) * ) * * @SWG\Parameter( * name="stop", * description="Stop identifiers.", * type="array", * in="query", * @SWG\Items(type="string") * ) * * @SWG\Parameter( * name="limit", * description="Max departures count.", * type="integer", * in="query" * ) */ public function stops(DepartureRepository $departures, StopRepository $stops, Request $request) { $stops = $stops->all(new IdFilter($request->query->get('stop', []))); $result = $departures->current($stops, ...$this->getModifiersFromRequest($request)); return $this->json( $result->values()->slice(0, (int)$request->query->get('limit', 8)), 200, [], $this->serializerContextFactory->create(Departure::class, ['Default']) ); } private function getModifiersFromRequest(Request $request) { if ($request->query->has('limit')) { yield Limit::count($request->query->getInt('limit')); } } }