getById($stop); return $this->json($departures->getForStop($stop)); } /** * @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 ->getManyById($request->query->get('stop')) ->flatMap([ $departures, 'getForStop' ]) ->sortBy(function (Departure $departure) { return $departure->getEstimated(); }); return $this->json($stops->values()->slice(0, (int)$request->query->get('limit', 8))); } }