Add checks to rider app API for JO status and delivery status #802

This commit is contained in:
Ramon Gutierrez 2024-05-30 17:15:47 +08:00
parent b19d9c203a
commit 4b19cff996

View file

@ -413,7 +413,9 @@ class RiderAppController extends ApiController
return new APIResponse(false, $msg);
// 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
@ -466,7 +468,9 @@ class RiderAppController extends ApiController
return new APIResponse(true, $msg);
// 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
$jo->requeue();
@ -527,7 +531,9 @@ class RiderAppController extends ApiController
$jo = $rider->getCurrentJobOrder();
// 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
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB);
@ -570,7 +576,9 @@ class RiderAppController extends ApiController
$jo = $rider->getCurrentJobOrder();
// 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
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB_PRE_JO);
@ -613,7 +621,9 @@ class RiderAppController extends ApiController
$jo = $rider->getCurrentJobOrder();
// 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
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB_PRE_JO);
@ -656,7 +666,9 @@ class RiderAppController extends ApiController
$jo = $rider->getCurrentJobOrder();
// 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
$jo->setDeliveryStatus(DeliveryStatus::RIDER_START);
@ -700,7 +712,9 @@ class RiderAppController extends ApiController
$jo->setStatus(JOStatus::IN_PROGRESS);
// 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
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE);
@ -761,7 +775,9 @@ class RiderAppController extends ApiController
$jo = $rider->getCurrentJobOrder();
// 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
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB);
@ -854,7 +870,9 @@ class RiderAppController extends ApiController
return new APIResponse(false, $msg);
// 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
// if so, serial is a required parameter
@ -1002,7 +1020,9 @@ class RiderAppController extends ApiController
$jo = $rider->getCurrentJobOrder();
// 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
$jo->setDeliveryStatus(DeliveryStatus::RIDER_ARRIVE_HUB_POST_JO);
@ -1046,7 +1066,9 @@ class RiderAppController extends ApiController
$jo = $rider->getCurrentJobOrder();
// 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
$jo->setDeliveryStatus(DeliveryStatus::RIDER_DEPART_HUB_POST_JO);
@ -1265,7 +1287,9 @@ class RiderAppController extends ApiController
$jo = $em->getRepository(JobOrder::class)->find($jo_id);
// 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
$ti_items = [];
@ -1376,7 +1400,9 @@ class RiderAppController extends ApiController
return new APIResponse(false, $msg);
// 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
$stype_id = $req->request->get('stype_id');
@ -1740,22 +1766,40 @@ class RiderAppController extends ApiController
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.
// check delivery status
switch ($jo->getDeliveryStatus())
{
case DeliveryStatus::CANCELLED:
$allowed = false;
break;
}
// check JO status as well
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.');
$allowed = false;
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)