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))
|
||||
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
|
||||
|
||||
// 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
|
||||
return new APIResponse(true, $msg);
|
||||
|
||||
// check if JO can be modified first
|
||||
$this->allowJOProgress($jo, $rider);
|
||||
|
||||
// requeue it, instead of cancelling it
|
||||
$jo->requeue();
|
||||
|
||||
|
|
@ -519,6 +525,9 @@ class RiderAppController extends ApiController
|
|||
// get rider's current job order
|
||||
$jo = $rider->getCurrentJobOrder();
|
||||
|
||||
// check if JO can be modified first
|
||||
$this->allowJOProgress($jo, $rider);
|
||||
|
||||
// set delivery status
|
||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB);
|
||||
|
||||
|
|
@ -559,6 +568,9 @@ class RiderAppController extends ApiController
|
|||
// get rider's current job order
|
||||
$jo = $rider->getCurrentJobOrder();
|
||||
|
||||
// check if JO can be modified first
|
||||
$this->allowJOProgress($jo, $rider);
|
||||
|
||||
// set delivery status
|
||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB_PRE_JO);
|
||||
|
||||
|
|
@ -599,6 +611,9 @@ class RiderAppController extends ApiController
|
|||
// get rider's current job order
|
||||
$jo = $rider->getCurrentJobOrder();
|
||||
|
||||
// check if JO can be modified first
|
||||
$this->allowJOProgress($jo, $rider);
|
||||
|
||||
// set delivery status
|
||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB_PRE_JO);
|
||||
|
||||
|
|
@ -639,6 +654,9 @@ class RiderAppController extends ApiController
|
|||
// get rider's current job order
|
||||
$jo = $rider->getCurrentJobOrder();
|
||||
|
||||
// check if JO can be modified first
|
||||
$this->allowJOProgress($jo, $rider);
|
||||
|
||||
// set delivery status
|
||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_START);
|
||||
|
||||
|
|
@ -680,6 +698,9 @@ class RiderAppController extends ApiController
|
|||
// set jo status to in progress
|
||||
$jo->setStatus(JOStatus::IN_PROGRESS);
|
||||
|
||||
// check if JO can be modified first
|
||||
$this->allowJOProgress($jo, $rider);
|
||||
|
||||
// set delivery status
|
||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE);
|
||||
|
||||
|
|
@ -738,6 +759,9 @@ class RiderAppController extends ApiController
|
|||
// get rider's current job order
|
||||
$jo = $rider->getCurrentJobOrder();
|
||||
|
||||
// check if JO can be modified first
|
||||
$this->allowJOProgress($jo, $rider);
|
||||
|
||||
// set delivery status
|
||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB);
|
||||
|
||||
|
|
@ -828,6 +852,9 @@ class RiderAppController extends ApiController
|
|||
if (!empty($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
|
||||
// if so, serial is a required parameter
|
||||
$serial = $req->request->get('serial', '');
|
||||
|
|
@ -973,6 +1000,9 @@ class RiderAppController extends ApiController
|
|||
// get rider's current job order
|
||||
$jo = $rider->getCurrentJobOrder();
|
||||
|
||||
// check if JO can be modified first
|
||||
$this->allowJOProgress($jo, $rider);
|
||||
|
||||
// set delivery status
|
||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB_POST_JO);
|
||||
|
||||
|
|
@ -1014,6 +1044,9 @@ class RiderAppController extends ApiController
|
|||
// get rider's current job order
|
||||
$jo = $rider->getCurrentJobOrder();
|
||||
|
||||
// check if JO can be modified first
|
||||
$this->allowJOProgress($jo, $rider);
|
||||
|
||||
// set delivery status
|
||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB_POST_JO);
|
||||
|
||||
|
|
@ -1217,9 +1250,22 @@ class RiderAppController extends ApiController
|
|||
if (empty($jo_id) || $jo_id == null)
|
||||
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
|
||||
$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
|
||||
$ti_items = [];
|
||||
if (isset($items['trade_in_items']))
|
||||
|
|
@ -1328,6 +1374,9 @@ class RiderAppController extends ApiController
|
|||
if (!empty($msg))
|
||||
return new APIResponse(false, $msg);
|
||||
|
||||
// check if JO can be modified first
|
||||
$this->allowJOProgress($jo, $rider);
|
||||
|
||||
// check service type
|
||||
$stype_id = $req->request->get('stype_id');
|
||||
if (!ServiceType::validate($stype_id))
|
||||
|
|
@ -1690,6 +1739,24 @@ class RiderAppController extends ApiController
|
|||
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)
|
||||
{
|
||||
$all = $req->request->all();
|
||||
|
|
|
|||
Loading…
Reference in a new issue