Check active jo before removing it for rider #488

This commit is contained in:
Kendrick Chan 2020-09-16 22:22:26 +08:00
parent 331d483606
commit 8068a662f6
2 changed files with 22 additions and 7 deletions

View file

@ -1113,11 +1113,11 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface
// cancel job order
public function cancelJobOrder(Request $req, int $id, MQTTClient $mclient)
{
// get object data
// get jo data
$em = $this->em;
$obj = $em->getRepository(JobOrder::class)->find($id);
// make sure this object exists
// make sure this exists
if (empty($obj))
throw new NotFoundHttpException('The item does not exist');
@ -1127,7 +1127,11 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface
// get assigned rider. If not null, clear rider's active JO
$rider = $obj->getRider();
if ($rider != null)
$rider->setActiveJobOrder();
{
$active_jo = $rider->getActiveJobOrder();
if ($active_jo != null && $active_jo->getID() == $obj->getID())
$rider->setActiveJobOrder(null);
}
// the event
$event = new JOEvent();
@ -1154,7 +1158,7 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface
'event' => 'cancelled',
'reason' => $cancel_reason,
'jo_id' => $obj->getID(),
'msg' => 'Job order has been cancelled.',
'msg' => 'Job order #' . $obj->getID() . ' has been cancelled.',
];
/*
$mclient->sendEvent($obj, $payload);

View file

@ -1077,7 +1077,12 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
// add event log
$rider = $this->session->getRider();
$rider->setActiveJobOrder(null);
if ($rider != null)
{
$active_jo = $rider->getActiveJobOrder();
if ($active_jo != null && $active_jo->getID() == $jo->getID())
$rider->setActiveJobOrder(null);
}
$event = new JOEvent();
$event->setDateHappen(new DateTime())
@ -1160,7 +1165,7 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
$this->em->persist($event);
// set rider's active JO to null
$rider->setActiveJobOrder(null);
// $rider->setActiveJobOrder(null);
$this->em->flush();
@ -1682,7 +1687,13 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
$rider = $this->session->getRider();
// clear rider's active JO
$rider->setActiveJobOrder(null);
if ($rider != null)
{
$active_jo = $rider->getActiveJobOrder();
if ($active_jo != null && $active_jo->getID() == $jo->getID())
$rider->setActiveJobOrder(null);
}
$event = new JOEvent();
$event->setDateHappen(new DateTime())