Merge branch '793-prevent-jo-progression-on-rider-app-after-cancellation' into '783-rider-app-trade-in-support'
Resolve "Prevent JO progression on rider app after cancellation" See merge request jankstudio/resq!904
This commit is contained in:
commit
c03025748f
1 changed files with 67 additions and 0 deletions
|
|
@ -411,6 +411,9 @@ class RiderAppController extends ApiController
|
||||||
if (!empty($msg))
|
if (!empty($msg))
|
||||||
return new APIResponse(false, $msg);
|
return new APIResponse(false, $msg);
|
||||||
|
|
||||||
|
// check if JO can be modified first
|
||||||
|
$this->allowJOProgress($jo, $rider);
|
||||||
|
|
||||||
// TODO: refactor this into a jo handler class, so we don't have to repeat for control center
|
// TODO: refactor this into a jo handler class, so we don't have to repeat for control center
|
||||||
|
|
||||||
// set jo status to in transit
|
// set jo status to in transit
|
||||||
|
|
@ -461,6 +464,9 @@ class RiderAppController extends ApiController
|
||||||
// TODO: this is a workaround for requeue, because rider app gets stuck in accept / decline screen
|
// TODO: this is a workaround for requeue, because rider app gets stuck in accept / decline screen
|
||||||
return new APIResponse(true, $msg);
|
return new APIResponse(true, $msg);
|
||||||
|
|
||||||
|
// check if JO can be modified first
|
||||||
|
$this->allowJOProgress($jo, $rider);
|
||||||
|
|
||||||
// requeue it, instead of cancelling it
|
// requeue it, instead of cancelling it
|
||||||
$jo->requeue();
|
$jo->requeue();
|
||||||
|
|
||||||
|
|
@ -519,6 +525,9 @@ class RiderAppController extends ApiController
|
||||||
// get rider's current job order
|
// get rider's current job order
|
||||||
$jo = $rider->getCurrentJobOrder();
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
|
// check if JO can be modified first
|
||||||
|
$this->allowJOProgress($jo, $rider);
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB);
|
||||||
|
|
||||||
|
|
@ -559,6 +568,9 @@ class RiderAppController extends ApiController
|
||||||
// get rider's current job order
|
// get rider's current job order
|
||||||
$jo = $rider->getCurrentJobOrder();
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
|
// check if JO can be modified first
|
||||||
|
$this->allowJOProgress($jo, $rider);
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB_PRE_JO);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB_PRE_JO);
|
||||||
|
|
||||||
|
|
@ -599,6 +611,9 @@ class RiderAppController extends ApiController
|
||||||
// get rider's current job order
|
// get rider's current job order
|
||||||
$jo = $rider->getCurrentJobOrder();
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
|
// check if JO can be modified first
|
||||||
|
$this->allowJOProgress($jo, $rider);
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB_PRE_JO);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB_PRE_JO);
|
||||||
|
|
||||||
|
|
@ -639,6 +654,9 @@ class RiderAppController extends ApiController
|
||||||
// get rider's current job order
|
// get rider's current job order
|
||||||
$jo = $rider->getCurrentJobOrder();
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
|
// check if JO can be modified first
|
||||||
|
$this->allowJOProgress($jo, $rider);
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_START);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_START);
|
||||||
|
|
||||||
|
|
@ -680,6 +698,9 @@ class RiderAppController extends ApiController
|
||||||
// set jo status to in progress
|
// set jo status to in progress
|
||||||
$jo->setStatus(JOStatus::IN_PROGRESS);
|
$jo->setStatus(JOStatus::IN_PROGRESS);
|
||||||
|
|
||||||
|
// check if JO can be modified first
|
||||||
|
$this->allowJOProgress($jo, $rider);
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE);
|
||||||
|
|
||||||
|
|
@ -738,6 +759,9 @@ class RiderAppController extends ApiController
|
||||||
// get rider's current job order
|
// get rider's current job order
|
||||||
$jo = $rider->getCurrentJobOrder();
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
|
// check if JO can be modified first
|
||||||
|
$this->allowJOProgress($jo, $rider);
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB);
|
||||||
|
|
||||||
|
|
@ -828,6 +852,9 @@ class RiderAppController extends ApiController
|
||||||
if (!empty($msg))
|
if (!empty($msg))
|
||||||
return new APIResponse(false, $msg);
|
return new APIResponse(false, $msg);
|
||||||
|
|
||||||
|
// check if JO can be modified first
|
||||||
|
$this->allowJOProgress($jo, $rider);
|
||||||
|
|
||||||
// need to check if service type is battery sales
|
// need to check if service type is battery sales
|
||||||
// if so, serial is a required parameter
|
// if so, serial is a required parameter
|
||||||
$serial = $req->request->get('serial', '');
|
$serial = $req->request->get('serial', '');
|
||||||
|
|
@ -973,6 +1000,9 @@ class RiderAppController extends ApiController
|
||||||
// get rider's current job order
|
// get rider's current job order
|
||||||
$jo = $rider->getCurrentJobOrder();
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
|
// check if JO can be modified first
|
||||||
|
$this->allowJOProgress($jo, $rider);
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB_POST_JO);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB_POST_JO);
|
||||||
|
|
||||||
|
|
@ -1014,6 +1044,9 @@ class RiderAppController extends ApiController
|
||||||
// get rider's current job order
|
// get rider's current job order
|
||||||
$jo = $rider->getCurrentJobOrder();
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
|
// check if JO can be modified first
|
||||||
|
$this->allowJOProgress($jo, $rider);
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB_POST_JO);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB_POST_JO);
|
||||||
|
|
||||||
|
|
@ -1217,9 +1250,22 @@ class RiderAppController extends ApiController
|
||||||
if (empty($jo_id) || $jo_id == null)
|
if (empty($jo_id) || $jo_id == null)
|
||||||
return new APIResponse(false, 'Missing parameter(s): jo_id');
|
return new APIResponse(false, 'Missing parameter(s): jo_id');
|
||||||
|
|
||||||
|
// get capi user
|
||||||
|
$capi_user = $this->getUser();
|
||||||
|
if ($capi_user == null)
|
||||||
|
return new APIResponse(false, 'User not found.');
|
||||||
|
|
||||||
|
// get rider id from capi user metadata
|
||||||
|
$rider = $this->getRiderFromCAPI($capi_user, $em);
|
||||||
|
if ($rider == null)
|
||||||
|
return new APIResponse(false, 'No rider found.');
|
||||||
|
|
||||||
// get the job order
|
// get the job order
|
||||||
$jo = $em->getRepository(JobOrder::class)->find($jo_id);
|
$jo = $em->getRepository(JobOrder::class)->find($jo_id);
|
||||||
|
|
||||||
|
// check if JO can be modified first
|
||||||
|
$this->allowJOProgress($jo, $rider);
|
||||||
|
|
||||||
// check if we have trade in items
|
// check if we have trade in items
|
||||||
$ti_items = [];
|
$ti_items = [];
|
||||||
if (isset($items['trade_in_items']))
|
if (isset($items['trade_in_items']))
|
||||||
|
|
@ -1328,6 +1374,9 @@ class RiderAppController extends ApiController
|
||||||
if (!empty($msg))
|
if (!empty($msg))
|
||||||
return new APIResponse(false, $msg);
|
return new APIResponse(false, $msg);
|
||||||
|
|
||||||
|
// check if JO can be modified first
|
||||||
|
$this->allowJOProgress($jo, $rider);
|
||||||
|
|
||||||
// check service type
|
// check service type
|
||||||
$stype_id = $req->request->get('stype_id');
|
$stype_id = $req->request->get('stype_id');
|
||||||
if (!ServiceType::validate($stype_id))
|
if (!ServiceType::validate($stype_id))
|
||||||
|
|
@ -1690,6 +1739,24 @@ class RiderAppController extends ApiController
|
||||||
return $msg;
|
return $msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function allowJOProgress(JobOrder $jo, $rider)
|
||||||
|
{
|
||||||
|
// TODO: add more statuses to block if needed, hence. this is a failsafe in case MQTT is not working.
|
||||||
|
switch ($jo->getStatus())
|
||||||
|
{
|
||||||
|
case JOStatus::CANCELLED:
|
||||||
|
// if this is the rider's current JO, set to null
|
||||||
|
if ($rider->getCurrentJobOrder() === $jo) {
|
||||||
|
$rider->setCurrentJobOrder();
|
||||||
|
}
|
||||||
|
|
||||||
|
return new APIResponse(false, 'Job order can no longer be modified.');
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected function debugRequest(Request $req)
|
protected function debugRequest(Request $req)
|
||||||
{
|
{
|
||||||
$all = $req->request->all();
|
$all = $req->request->all();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue