From 43d184409c49b8d34ef9849e230bb7814f837320 Mon Sep 17 00:00:00 2001 From: p8pepe Date: Fri, 11 Sep 2015 13:26:13 +0200 Subject: [PATCH] Search-api fixes --- app/config/services.yml | 6 +++++- features/bootstrap/PublicTransportUserContext.php | 7 ++----- src/AppBundle/Controller/ApiController.php | 7 ++----- src/Cocoders/CityBike/DockingStations.php | 2 -- src/Cocoders/CityBike/FoundDockingStations.php | 3 +-- .../File/CityBike/DockingStationsFileRepository.php | 5 ----- src/Cocoders/InMemory/CityBike/DockingStations.php | 5 ----- .../InMemory/CityBike/FoundDockingStations.php | 11 ++++++++++- 8 files changed, 20 insertions(+), 26 deletions(-) diff --git a/app/config/services.yml b/app/config/services.yml index 6288e73..129b198 100644 --- a/app/config/services.yml +++ b/app/config/services.yml @@ -38,4 +38,8 @@ services: class: AppBundle\Command\UpdateAvailableBikesFromProviderCommand tags: - { name: console.command } - arguments: [@cocoders.trm24.parser, @cocoders.use_case.update_available_bikes] \ No newline at end of file + arguments: [@cocoders.trm24.parser, @cocoders.use_case.update_available_bikes] + + cocoders.found_docking_stations: + class: Cocoders\InMemory\CityBike\FoundDockingStations + arguments: ["@cocoders.repository.docking_station"] \ No newline at end of file diff --git a/features/bootstrap/PublicTransportUserContext.php b/features/bootstrap/PublicTransportUserContext.php index c494e8e..5a22e7e 100755 --- a/features/bootstrap/PublicTransportUserContext.php +++ b/features/bootstrap/PublicTransportUserContext.php @@ -31,7 +31,7 @@ class PublicTransportUserContext implements Context, SnippetAcceptingContext public function __construct() { $this->dockingStations = new \Cocoders\InMemory\CityBike\DockingStations(); - $this->foundDockingStations = new \Cocoders\InMemory\CityBike\FoundDockingStations(); + $this->foundDockingStations = new \Cocoders\InMemory\CityBike\FoundDockingStations($this->dockingStations); } /** @@ -39,8 +39,6 @@ public function __construct() */ public function thereAreSuchDockingStations(TableNode $table) { - $this->dockingStations->removeAll(); - foreach ($table->getHash() as $row) { $dockingStation = new \Cocoders\CityBike\DockingStation( $row['id'], @@ -60,10 +58,9 @@ public function thereAreSuchDockingStations(TableNode $table) */ public function iAmSearchingNearestBikeDockingStationsFromMyPosisitonWhichIs($positionString) { - $dockingStations = $this->dockingStations->findAll(); $this->nearestDockingStations = $this ->foundDockingStations - ->search(Position::fromString($positionString), $dockingStations) + ->search(Position::fromString($positionString)) ; } diff --git a/src/AppBundle/Controller/ApiController.php b/src/AppBundle/Controller/ApiController.php index 23e09a8..893c49d 100644 --- a/src/AppBundle/Controller/ApiController.php +++ b/src/AppBundle/Controller/ApiController.php @@ -3,7 +3,6 @@ namespace AppBundle\Controller; use Cocoders\CityBike\Position; -use Cocoders\InMemory\CityBike\FoundDockingStations; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\JsonResponse; @@ -15,10 +14,8 @@ class ApiController extends Controller */ public function indexAction($lat, $long) { - $dockingStationsService = new FoundDockingStations(); - - $foundDockingStations = $dockingStationsService - ->search(new Position($lat, $long), $this->get('cocoders.repository.docking_station')->findAll()); + $foundDockingStations = $this->get('cocoders.found_docking_stations') + ->search(new Position($lat, $long)); return new JsonResponse($foundDockingStations); } diff --git a/src/Cocoders/CityBike/DockingStations.php b/src/Cocoders/CityBike/DockingStations.php index 8d5dd75..a9dfc85 100755 --- a/src/Cocoders/CityBike/DockingStations.php +++ b/src/Cocoders/CityBike/DockingStations.php @@ -19,6 +19,4 @@ public function findAll(); * @return DockingStation */ public function find($id); - - public function removeAll(); } diff --git a/src/Cocoders/CityBike/FoundDockingStations.php b/src/Cocoders/CityBike/FoundDockingStations.php index 021ef74..72e819d 100755 --- a/src/Cocoders/CityBike/FoundDockingStations.php +++ b/src/Cocoders/CityBike/FoundDockingStations.php @@ -6,9 +6,8 @@ interface FoundDockingStations { /** * @param Position $startPosition - * @param DockingStation[] $dockingStations * @return FoundDockingStation[] */ - public function search(Position $startPosition, $dockingStations); + public function search(Position $startPosition); } diff --git a/src/Cocoders/File/CityBike/DockingStationsFileRepository.php b/src/Cocoders/File/CityBike/DockingStationsFileRepository.php index 99625bb..0f0d73d 100644 --- a/src/Cocoders/File/CityBike/DockingStationsFileRepository.php +++ b/src/Cocoders/File/CityBike/DockingStationsFileRepository.php @@ -45,9 +45,4 @@ public function find($id) { return $this->stationsRepo->findById($id); } - - public function removeAll() - { - $this->stationsRepo->clear(); - } } diff --git a/src/Cocoders/InMemory/CityBike/DockingStations.php b/src/Cocoders/InMemory/CityBike/DockingStations.php index 5a539eb..ac1dd7a 100755 --- a/src/Cocoders/InMemory/CityBike/DockingStations.php +++ b/src/Cocoders/InMemory/CityBike/DockingStations.php @@ -39,9 +39,4 @@ public function find($id) } return null; } - - public function removeAll() - { - $this->stations = []; - } } diff --git a/src/Cocoders/InMemory/CityBike/FoundDockingStations.php b/src/Cocoders/InMemory/CityBike/FoundDockingStations.php index 3a47127..5452941 100755 --- a/src/Cocoders/InMemory/CityBike/FoundDockingStations.php +++ b/src/Cocoders/InMemory/CityBike/FoundDockingStations.php @@ -3,20 +3,29 @@ namespace Cocoders\InMemory\CityBike; use Cocoders\CityBike\DockingStation; +use Cocoders\CityBike\DockingStations as DockingStationsRepository; use Cocoders\CityBike\FoundDockingStation; use Cocoders\CityBike\FoundDockingStations as FoundDockingStationsInterface; use Cocoders\CityBike\Position; final class FoundDockingStations implements FoundDockingStationsInterface { + private $dockingStationsRepository; + + public function __construct(DockingStationsRepository $dockingStations) + { + $this->dockingStationsRepository = $dockingStations; + } /** * @param Position $startPosition * @param DockingStation[] $dockingStations * @return FoundDockingStation[] */ - public function search(Position $startPosition, $dockingStations) + public function search(Position $startPosition) { + $dockingStations = $this->dockingStationsRepository->findAll(); $foundDockingStations = []; + foreach ($dockingStations as $dockingStation) { $foundDockingStations[] = FoundDockingStation::fromDockingStationAndDistance( $dockingStation,