diff --git a/config/services.yaml b/config/services.yaml index 65b9d67e..e3591e0d 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -87,6 +87,11 @@ services: $password: "%env(REDIS_CLIENT_PASSWORD)%" $env_flag: "dev" + # rider tracker service + App\Service\RiderTracker: + arguments: + $redis_client: "@App\\Service\\RedisClientProvider" + Catalyst\APIBundle\Security\APIKeyUserProvider: arguments: $em: "@doctrine.orm.entity_manager" diff --git a/src/Controller/HomeController.php b/src/Controller/HomeController.php index 96380a23..860526eb 100644 --- a/src/Controller/HomeController.php +++ b/src/Controller/HomeController.php @@ -5,13 +5,37 @@ namespace App\Controller; use Catalyst\MenuBundle\Annotation\Menu; use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Doctrine\ORM\EntityManagerInterface; + +use App\Service\RiderTracker; + +use App\Entity\Rider; + + class HomeController extends Controller { /** * @Menu(selected="home") */ - public function index() + public function index(EntityManagerInterface $em, RiderTracker $rider_tracker) { - return $this->render('home.html.twig'); + // get all riders + $riders = $em->getRepository(Rider::class)->findAll(); + + $locations = []; + foreach ($riders as $rider) + { + // get location for each rider + $rider_id = $rider->getID(); + $coordinates = $rider_tracker->getRiderLocation($rider_id); + + // use rider id as key + $locations[$rider_id] = $coordinates; + + } + + $params['riders'] = $locations; + + return $this->render('home.html.twig', $params); } } diff --git a/templates/home.html.twig b/templates/home.html.twig index 6e41f1ef..1641cec3 100644 --- a/templates/home.html.twig +++ b/templates/home.html.twig @@ -28,13 +28,15 @@
-
-
-
-
+
+
+
+
+
+
-
+
@@ -61,8 +63,35 @@ function initMap() { mapTypeId: 'roadmap', zoom: 13 }); + + {% if riders %} + {% for object in riders %} + var lat = {{ object.getLatitude }}; + var lng = {{ object.getLongitude }}; + + var marker = new google.maps.Marker({ + position: { + lat: lat, + lng: lng + }, + }); + + marker.setMap(map); + {% endfor %} + {% endif %} } +function renewMarkers() { + $.ajax('{{ path('home') }}', { + success: function() { + // clear the markers + // set the markers again + }, + }); +} + +setInterval(renewMarkers, 60 * 1000); + // END google maps stuff