Resolve "CMB - rider cannot go offline if rider has assigned JOs" #1326
1 changed files with 33 additions and 1 deletions
|
|
@ -251,6 +251,17 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
|
||||||
// make rider unavailable
|
// make rider unavailable
|
||||||
$rider = $this->session->getRider();
|
$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->setAvailable(false);
|
||||||
$rider->setActive(false);
|
$rider->setActive(false);
|
||||||
|
|
||||||
|
|
@ -314,6 +325,17 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
|
||||||
// set rider to unavailable to take on JOs
|
// set rider to unavailable to take on JOs
|
||||||
$rider = $this->session->getRider();
|
$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);
|
$rider->setAvailable(false);
|
||||||
|
|
||||||
$this->em->flush();
|
$this->em->flush();
|
||||||
|
|
@ -1007,7 +1029,7 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
|
||||||
|
|
||||||
$jo->requeue();
|
$jo->requeue();
|
||||||
|
|
||||||
// TODO: do we leave JO as assigned to rider?
|
$jo->clearRider();
|
||||||
|
|
||||||
// add event log
|
// add event log
|
||||||
$rider = $this->session->getRider();
|
$rider = $this->session->getRider();
|
||||||
|
|
@ -1018,6 +1040,9 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
|
||||||
->setRider($rider);
|
->setRider($rider);
|
||||||
$this->em->persist($event);
|
$this->em->persist($event);
|
||||||
|
|
||||||
|
// set rider's active JO to null
|
||||||
|
$rider->setActiveJobOrder();
|
||||||
|
|
||||||
$this->em->flush();
|
$this->em->flush();
|
||||||
|
|
||||||
// send mqtt event
|
// send mqtt event
|
||||||
|
|
@ -1028,6 +1053,13 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
|
||||||
];
|
];
|
||||||
$this->mclient->sendEvent($jo, $payload);
|
$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;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue