Add completeJobOrder and setActiveJobOrder API calls. #421

This commit is contained in:
Korina Cordero 2020-06-02 09:25:43 +00:00
parent 79b19a61f6
commit 0e69eb4943
4 changed files with 135 additions and 2 deletions

View file

@ -100,4 +100,12 @@ cmb_rapi_jo_start:
controller: App\Controller\CMBRAPIController::startJobOrder
methods: [POST]
cmb_rapi_jo_complete:
path: /cmbrapi/jobordercomplete
controller: App\Controller\CMBRAPIController::completeJobOrder
methods: [POST]
cmb_rapi_jo_set_active:
path: /cmbrapi/joborderactive
controller: App\Controller\CMBRAPIController::setActiveJobOrder
methods: [POST]

View file

@ -459,5 +459,49 @@ class CMBRAPIController extends Controller
return $res->getReturnResponse();
}
public function completeJobOrder(Request $req, RiderAPIHandlerInterface $rapi_handler)
{
$res = new APIResult();
$data = $rapi_handler->completeJobOrder($req);
if (isset($data['error']))
{
$message = $data['error'];
$res->setError(true)
->setErrorMessage($message);
}
else
{
$res->setData($data);
}
// response
return $res->getReturnResponse();
}
public function setActiveJobOrder(Request $req, RiderAPIHandlerInterface $rapi_handler)
{
$res = new APIResult();
$data = $rapi_handler->setActiveJobOrder($req);
if (isset($data['error']))
{
$message = $data['error'];
$res->setError(true)
->setErrorMessage($message);
}
else
{
$res->setData($data);
}
// response
return $res->getReturnResponse();
}
}

View file

@ -14,7 +14,8 @@ class CMBJOEventType extends NameValue
const RIDER_ACCEPT = 'accept';
const RIDER_IN_TRANSIT = 'rider_in_transit';
const RIDER_ARRIVE = 'arrive';
const RIDER_START = 'rider_start';
const RIDER_START = 'rider_start';
const RIDER_COMPLETE = 'rider_complete';
const RIDER_EDIT = 'rider_edit';
const COLLECTION = [
@ -28,7 +29,8 @@ class CMBJOEventType extends NameValue
'accept' => 'Rider Accept',
'rider_in_transit' => 'Rider in Transit',
'arrive' => 'Rider Arrive',
'start' => 'Rider Start',
'rider_start' => 'Rider Start',
'rider_complete' => 'Rider Complete',
'rider_edit' => 'Rider Edit',
];
}

View file

@ -1276,6 +1276,85 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
return $data;
}
public function completeJobOrder(Request $req)
{
$required_params = ['jo_id'];
$data = $this->checkJO($req, $required_params, $jo);
if (isset($data['error']))
return $data;
// add event log
$rider = $this->session->getRider();
$event = new JOEvent();
$event->setDateHappen(new DateTime())
->setTypeID(CMBJOEventType::RIDER_COMPLETE)
->setJobOrder($jo)
->setRider($rider);
$this->em->persist($event);
$this->em->flush();
return $data;
}
public function setActiveJobOrder(Request $req)
{
$required_params = [
'jo_id'
];
$data = $this->checkParamsAndKey($req, $required_params);
if (isset($data['error']))
return $data;
// are we logged in?
if (!$this->session->hasRider())
{
$data = [
'error' => 'No logged in rider.'
];
return $data;
}
$rider = $this->session->getRider();
// get jo
$jo_id = $req->request->get('jo_id');
$jo = $this->em->getRepository(JobOrder::class)->find($jo_id);
if ($jo == null)
{
$data = [
'job_order' => null
];
}
else
{
if ($jo->getRider() == null)
{
$data = [
'error' => 'Job order selected has no rider assigned.'
];
return $data;
}
// check if rider is assigned to JO
if ($rider->getID() != $jo->getRider()->getID())
{
$data = [
'error' => 'Job order selected is not assigned to rider.'
];
return $data;
}
$rider->setActiveJobOrder($jo);
$this->em->persist($rider);
$this->em->flush();
}
return $data;
}
protected function checkMissingParameters(Request $req, $params = [])
{
$missing = [];