Merge branch '802-fix-jos-being-able-to-proceed-after-cancellation' into 'master'
Add checks to rider app API for JO status and delivery status #802 Closes #802 See merge request jankstudio/resq!915
This commit is contained in:
commit
c60a39c13e
1 changed files with 66 additions and 22 deletions
|
|
@ -413,7 +413,9 @@ class RiderAppController extends ApiController
|
||||||
return new APIResponse(false, $msg);
|
return new APIResponse(false, $msg);
|
||||||
|
|
||||||
// check if JO can be modified first
|
// check if JO can be modified first
|
||||||
$this->checkJOProgressionAllowed($jo, $rider);
|
if (!$this->checkJOProgressionAllowed($em, $jo, $rider)) {
|
||||||
|
return new APIResponse(false, 'Job order can no longer be modified.');
|
||||||
|
}
|
||||||
|
|
||||||
// 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
|
||||||
|
|
||||||
|
|
@ -466,7 +468,9 @@ class RiderAppController extends ApiController
|
||||||
return new APIResponse(true, $msg);
|
return new APIResponse(true, $msg);
|
||||||
|
|
||||||
// check if JO can be modified first
|
// check if JO can be modified first
|
||||||
$this->checkJOProgressionAllowed($jo, $rider);
|
if (!$this->checkJOProgressionAllowed($em, $jo, $rider)) {
|
||||||
|
return new APIResponse(false, 'Job order can no longer be modified.');
|
||||||
|
}
|
||||||
|
|
||||||
// requeue it, instead of cancelling it
|
// requeue it, instead of cancelling it
|
||||||
$jo->requeue();
|
$jo->requeue();
|
||||||
|
|
@ -527,7 +531,9 @@ class RiderAppController extends ApiController
|
||||||
$jo = $rider->getCurrentJobOrder();
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
// check if JO can be modified first
|
// check if JO can be modified first
|
||||||
$this->checkJOProgressionAllowed($jo, $rider);
|
if (!$this->checkJOProgressionAllowed($em, $jo, $rider)) {
|
||||||
|
return new APIResponse(false, 'Job order can no longer be modified.');
|
||||||
|
}
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB);
|
||||||
|
|
@ -570,7 +576,9 @@ class RiderAppController extends ApiController
|
||||||
$jo = $rider->getCurrentJobOrder();
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
// check if JO can be modified first
|
// check if JO can be modified first
|
||||||
$this->checkJOProgressionAllowed($jo, $rider);
|
if (!$this->checkJOProgressionAllowed($em, $jo, $rider)) {
|
||||||
|
return new APIResponse(false, 'Job order can no longer be modified.');
|
||||||
|
}
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB_PRE_JO);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB_PRE_JO);
|
||||||
|
|
@ -613,7 +621,9 @@ class RiderAppController extends ApiController
|
||||||
$jo = $rider->getCurrentJobOrder();
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
// check if JO can be modified first
|
// check if JO can be modified first
|
||||||
$this->checkJOProgressionAllowed($jo, $rider);
|
if (!$this->checkJOProgressionAllowed($em, $jo, $rider)) {
|
||||||
|
return new APIResponse(false, 'Job order can no longer be modified.');
|
||||||
|
}
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB_PRE_JO);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB_PRE_JO);
|
||||||
|
|
@ -656,7 +666,9 @@ class RiderAppController extends ApiController
|
||||||
$jo = $rider->getCurrentJobOrder();
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
// check if JO can be modified first
|
// check if JO can be modified first
|
||||||
$this->checkJOProgressionAllowed($jo, $rider);
|
if (!$this->checkJOProgressionAllowed($em, $jo, $rider)) {
|
||||||
|
return new APIResponse(false, 'Job order can no longer be modified.');
|
||||||
|
}
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_START);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_START);
|
||||||
|
|
@ -700,7 +712,9 @@ class RiderAppController extends ApiController
|
||||||
$jo->setStatus(JOStatus::IN_PROGRESS);
|
$jo->setStatus(JOStatus::IN_PROGRESS);
|
||||||
|
|
||||||
// check if JO can be modified first
|
// check if JO can be modified first
|
||||||
$this->checkJOProgressionAllowed($jo, $rider);
|
if (!$this->checkJOProgressionAllowed($em, $jo, $rider)) {
|
||||||
|
return new APIResponse(false, 'Job order can no longer be modified.');
|
||||||
|
}
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE);
|
||||||
|
|
@ -761,7 +775,9 @@ class RiderAppController extends ApiController
|
||||||
$jo = $rider->getCurrentJobOrder();
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
// check if JO can be modified first
|
// check if JO can be modified first
|
||||||
$this->checkJOProgressionAllowed($jo, $rider);
|
if (!$this->checkJOProgressionAllowed($em, $jo, $rider)) {
|
||||||
|
return new APIResponse(false, 'Job order can no longer be modified.');
|
||||||
|
}
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB);
|
||||||
|
|
@ -854,7 +870,9 @@ class RiderAppController extends ApiController
|
||||||
return new APIResponse(false, $msg);
|
return new APIResponse(false, $msg);
|
||||||
|
|
||||||
// check if JO can be modified first
|
// check if JO can be modified first
|
||||||
$this->checkJOProgressionAllowed($jo, $rider);
|
if (!$this->checkJOProgressionAllowed($em, $jo, $rider)) {
|
||||||
|
return new APIResponse(false, 'Job order can no longer be modified.');
|
||||||
|
}
|
||||||
|
|
||||||
// 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
|
||||||
|
|
@ -1002,7 +1020,9 @@ class RiderAppController extends ApiController
|
||||||
$jo = $rider->getCurrentJobOrder();
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
// check if JO can be modified first
|
// check if JO can be modified first
|
||||||
$this->checkJOProgressionAllowed($jo, $rider);
|
if (!$this->checkJOProgressionAllowed($em, $jo, $rider)) {
|
||||||
|
return new APIResponse(false, 'Job order can no longer be modified.');
|
||||||
|
}
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB_POST_JO);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB_POST_JO);
|
||||||
|
|
@ -1046,7 +1066,9 @@ class RiderAppController extends ApiController
|
||||||
$jo = $rider->getCurrentJobOrder();
|
$jo = $rider->getCurrentJobOrder();
|
||||||
|
|
||||||
// check if JO can be modified first
|
// check if JO can be modified first
|
||||||
$this->checkJOProgressionAllowed($jo, $rider);
|
if (!$this->checkJOProgressionAllowed($em, $jo, $rider)) {
|
||||||
|
return new APIResponse(false, 'Job order can no longer be modified.');
|
||||||
|
}
|
||||||
|
|
||||||
// set delivery status
|
// set delivery status
|
||||||
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB_POST_JO);
|
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB_POST_JO);
|
||||||
|
|
@ -1265,7 +1287,9 @@ class RiderAppController extends ApiController
|
||||||
$jo = $em->getRepository(JobOrder::class)->find($jo_id);
|
$jo = $em->getRepository(JobOrder::class)->find($jo_id);
|
||||||
|
|
||||||
// check if JO can be modified first
|
// check if JO can be modified first
|
||||||
$this->checkJOProgressionAllowed($jo, $rider);
|
if (!$this->checkJOProgressionAllowed($em, $jo, $rider)) {
|
||||||
|
return new APIResponse(false, 'Job order can no longer be modified.');
|
||||||
|
}
|
||||||
|
|
||||||
// check if we have trade in items
|
// check if we have trade in items
|
||||||
$ti_items = [];
|
$ti_items = [];
|
||||||
|
|
@ -1376,7 +1400,9 @@ class RiderAppController extends ApiController
|
||||||
return new APIResponse(false, $msg);
|
return new APIResponse(false, $msg);
|
||||||
|
|
||||||
// check if JO can be modified first
|
// check if JO can be modified first
|
||||||
$this->checkJOProgressionAllowed($jo, $rider);
|
if (!$this->checkJOProgressionAllowed($em, $jo, $rider)) {
|
||||||
|
return new APIResponse(false, 'Job order can no longer be modified.');
|
||||||
|
}
|
||||||
|
|
||||||
// check service type
|
// check service type
|
||||||
$stype_id = $req->request->get('stype_id');
|
$stype_id = $req->request->get('stype_id');
|
||||||
|
|
@ -1740,22 +1766,40 @@ class RiderAppController extends ApiController
|
||||||
return $msg;
|
return $msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function checkJOProgressionAllowed(JobOrder $jo, $rider)
|
protected function checkJOProgressionAllowed(EntityManagerInterface $em, JobOrder $jo, &$rider)
|
||||||
{
|
{
|
||||||
|
$allowed = true;
|
||||||
|
|
||||||
|
error_log("JO delivery status is " . $jo->getDeliveryStatus() . " (not allowed: " . DeliveryStatus::CANCELLED . ")");
|
||||||
|
error_log("JO status is " . $jo->getStatus() . " (not allowed: " . JOStatus::CANCELLED . ")");
|
||||||
|
|
||||||
// TODO: add more statuses to block if needed, hence. this is a failsafe in case MQTT is not working.
|
// TODO: add more statuses to block if needed, hence. this is a failsafe in case MQTT is not working.
|
||||||
|
// check delivery status
|
||||||
|
switch ($jo->getDeliveryStatus())
|
||||||
|
{
|
||||||
|
case DeliveryStatus::CANCELLED:
|
||||||
|
$allowed = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check JO status as well
|
||||||
switch ($jo->getStatus())
|
switch ($jo->getStatus())
|
||||||
{
|
{
|
||||||
case JOStatus::CANCELLED:
|
case JOStatus::CANCELLED:
|
||||||
// if this is the rider's current JO, set to null
|
$allowed = false;
|
||||||
if ($rider->getCurrentJobOrder() === $jo) {
|
|
||||||
$rider->setCurrentJobOrder();
|
|
||||||
}
|
|
||||||
|
|
||||||
return new APIResponse(false, 'Job order can no longer be modified.');
|
|
||||||
break;
|
break;
|
||||||
default:
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if this is the rider's current JO, set to null
|
||||||
|
if (!$allowed) {
|
||||||
|
if ($rider->getCurrentJobOrder() === $jo) {
|
||||||
|
$rider->setCurrentJobOrder();
|
||||||
|
$em->persist($rider);
|
||||||
|
$em->flush();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $allowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function debugRequest(Request $req)
|
protected function debugRequest(Request $req)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue