Merge branch '437-cmb-rider-cannot-go-offline-if-rider-has-assigned-jos' into '424-cmb-release'

Resolve "CMB - rider cannot go offline if rider has assigned JOs"

See merge request jankstudio/resq!515
This commit is contained in:
Korina Cordero 2020-07-21 07:14:17 +00:00
commit 34b71fe9e7

View file

@ -251,6 +251,17 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
// make rider unavailable
$rider = $this->session->getRider();
// check if rider has assigned JOs
$assigned_jos = $this->em->getRepository(JobOrder::class)->findBy(['rider' => $rider->getID(), 'status' => JOStatus::ASSIGNED]);
if ($assigned_jos != null)
{
$data = [
'title' => 'Failed Logout',
'error' => 'Rider has assigned job orders.'
];
return $data;
}
$rider->setAvailable(false);
$rider->setActive(false);
@ -314,6 +325,17 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
// set rider to unavailable to take on JOs
$rider = $this->session->getRider();
// check if rider has assigned JOs
$assigned_jos = $this->em->getRepository(JobOrder::class)->findBy(['rider' => $rider->getID(), 'status' => JOStatus::ASSIGNED]);
if ($assigned_jos != null)
{
$data = [
'title' => 'Failed Go Offline',
'error' => 'Rider has assigned job orders.'
];
return $data;
}
$rider->setAvailable(false);
$this->em->flush();
@ -1007,7 +1029,7 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
$jo->requeue();
// TODO: do we leave JO as assigned to rider?
$jo->clearRider();
// add event log
$rider = $this->session->getRider();
@ -1018,6 +1040,9 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
->setRider($rider);
$this->em->persist($event);
// set rider's active JO to null
$rider->setActiveJobOrder();
$this->em->flush();
// send mqtt event
@ -1028,6 +1053,13 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
];
$this->mclient->sendEvent($jo, $payload);
// need to send another mqtt event saying rider is available
// to change icon on dashboard
$channel = 'rider/' . $rider->getID() . '/status';
$rider_status = 'available';
$this->mclient->publish($channel, $rider_status);
return $data;
}