From aa6ec44e27c202dd36cc4a0ac22cbb5ba6892d12 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Wed, 26 Aug 2020 07:35:30 +0000 Subject: [PATCH] Add checking if rider is available. #478 --- src/Service/RiderCache.php | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/Service/RiderCache.php b/src/Service/RiderCache.php index cdd18864..af5ca716 100644 --- a/src/Service/RiderCache.php +++ b/src/Service/RiderCache.php @@ -2,6 +2,8 @@ namespace App\Service; +use Doctrine\ORM\EntityManagerInterface; + use App\Service\RedisClientProvider; use App\Entity\Rider; @@ -10,12 +12,14 @@ class RiderCache protected $redis; protected $loc_key; protected $status_key; + protected $em; - public function __construct(RedisClientProvider $redis_prov, $loc_key, $status_key) + public function __construct(EntityManagerInterface $em, RedisClientProvider $redis_prov, $loc_key, $status_key) { $this->redis = $redis_prov->getRedisClient(); $this->loc_key = $loc_key; $this->status_key = $status_key; + $this->em = $em; } public function addActiveRider($id, $lat, $lng) @@ -46,10 +50,15 @@ class RiderCache $lng = $data[1][0]; $lat = $data[1][1]; - $locs[$id] = [ - 'longitude' => $lng, - 'latitude' => $lat, - ]; + // get rider details so we can check for availability + $rider = $this->getRiderDetails($id); + if ($rider != null) + { + $locs[$id] = [ + 'longitude' => $lng, + 'latitude' => $lat, + ]; + } } // error_log(print_r($all_riders, true)); @@ -73,4 +82,17 @@ class RiderCache { $this->redis->hincrby($this->status_key, $id, -1); } + + protected function getRiderDetails($id) + { + $rider = $this->em->getRepository(Rider::class)->find($id); + if ($rider == null) + return null; + + // return only if available + if ($rider->isAvailable()) + return $rider; + + return null; + } }