Add acceptJobOrder. #617
This commit is contained in:
parent
fc7151be88
commit
b6f840f5d7
1 changed files with 86 additions and 0 deletions
|
|
@ -30,6 +30,17 @@ use App\Service\InvoiceGeneratorInterface;
|
||||||
use App\Service\RisingTideGateway;
|
use App\Service\RisingTideGateway;
|
||||||
use App\Service\RiderTracker;
|
use App\Service\RiderTracker;
|
||||||
|
|
||||||
|
use App\Ramcar\ServiceType;
|
||||||
|
use App\Ramcar\TradeInType;
|
||||||
|
use App\Ramcar\JOStatus;
|
||||||
|
use App\Ramcar\JOEventType;
|
||||||
|
use App\Ramcar\InvoiceStatus;
|
||||||
|
use App\Ramcar\ModeOfPayment;
|
||||||
|
use App\Ramcar\InvoiceCriteria;
|
||||||
|
use App\Ramcar\WarrantySource;
|
||||||
|
|
||||||
|
use DateTime;
|
||||||
|
|
||||||
// third party API for rider
|
// third party API for rider
|
||||||
class RiderController extends APIController
|
class RiderController extends APIController
|
||||||
{
|
{
|
||||||
|
|
@ -372,6 +383,50 @@ class RiderController extends APIController
|
||||||
|
|
||||||
public function acceptJobOrder(Request $req, EntityManagerInterface $em)
|
public function acceptJobOrder(Request $req, EntityManagerInterface $em)
|
||||||
{
|
{
|
||||||
|
$required_params = ['jo_id'];
|
||||||
|
|
||||||
|
// get capi user to link to rider api user
|
||||||
|
$capi_user_id = $this->getUser()->getID();
|
||||||
|
|
||||||
|
// check if capi user already has a rider api user
|
||||||
|
$rapi_session = $em->getRepository(RiderAPISession::class)->findOneBy(['capi_user_id' => $capi_user_id]);
|
||||||
|
|
||||||
|
// are we logged in?
|
||||||
|
if (!$rapi_session->hasRider())
|
||||||
|
return new APIResponse(false, 'No logged in rider.');
|
||||||
|
|
||||||
|
$rider = $rapi_session->getRider();
|
||||||
|
|
||||||
|
$msg = $this->checkJO($req, $required_params, $jo, $rider);
|
||||||
|
if (!empty($msg))
|
||||||
|
return new APIResponse(false, $msg);
|
||||||
|
|
||||||
|
// TODO: refactor this into a jo handler class, so we don't have to repeat for control center
|
||||||
|
|
||||||
|
// set jo status to in transit
|
||||||
|
$jo->setStatus(JOStatus::IN_TRANSIT);
|
||||||
|
|
||||||
|
// TODO: send mqtt event (?)
|
||||||
|
|
||||||
|
// set rider's current job order
|
||||||
|
$rider->setCurrentJobOrder($jo);
|
||||||
|
|
||||||
|
// set rider to unavailable
|
||||||
|
$rider->setAvailable(false);
|
||||||
|
|
||||||
|
// add event log
|
||||||
|
$event = new JOEvent();
|
||||||
|
$event->setDateHappen(new DateTime())
|
||||||
|
->setTypeID(JOEventType::RIDER_ACCEPT)
|
||||||
|
->setJobOrder($jo)
|
||||||
|
->setRider($rider);
|
||||||
|
$em->persist($event);
|
||||||
|
|
||||||
|
$em->flush();
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
return new APIResponse(true, 'Job order accepted.', $data);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function cancelJobOrder(Request $req, EntityManagerInterface $em)
|
public function cancelJobOrder(Request $req, EntityManagerInterface $em)
|
||||||
|
|
@ -455,4 +510,35 @@ class RiderController extends APIController
|
||||||
|
|
||||||
return $missing;
|
return $missing;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function checkJO(Request $req, $required_params, &$jo = null, $rider)
|
||||||
|
{
|
||||||
|
// set jo status to in transit
|
||||||
|
$msg = '';
|
||||||
|
$missing = $this->checkMissingParameters($req, $required_params);
|
||||||
|
if (count($missing) > 0)
|
||||||
|
{
|
||||||
|
$params = implode(', ', $missing);
|
||||||
|
$msg = 'Missing parameter(s): ' . $params;
|
||||||
|
return $msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if we have an active JO
|
||||||
|
$jo = $rider->getActiveJobOrder();
|
||||||
|
if ($jo == null)
|
||||||
|
{
|
||||||
|
$msg = 'No active job order.';
|
||||||
|
return $msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if the jo_id sent is the same as our active jo
|
||||||
|
if ($req->request->get('jo_id') != $jo->getID())
|
||||||
|
{
|
||||||
|
$msg = 'Job order selected is not active job order.';
|
||||||
|
return $msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $msg;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue