Add new API calls. #612

This commit is contained in:
Korina Cordero 2021-08-11 10:20:53 +00:00
parent 1a72f5c95a
commit 973c56ae85
3 changed files with 254 additions and 11 deletions

View file

@ -64,3 +64,34 @@ rapi_available:
path: /rapi/available
controller: App\Controller\RAPIController::available
methods: [POST]
rapi_hub_depart:
path: /rapi/hub_depart
controller: App\Controller\RAPIController::hubDepart
methods: [POST]
rapi_pre_hub_depart:
path: /rapi/pre_hub_depart
controller: App\Controller\RAPIController::preHubDepart
methods: [POST]
rapi_pre_hub_arrive:
path: /rapi/pre_hub_arrive
controller: App\Controller\RAPIController::preHubArrive
methods: [POST]
rapi_post_hub_depart:
path: /rapi/post_hub_depart
controller: App\Controller\RAPIController::postHubDepart
methods: [POST]
rapi_post_hub_arrive:
path: /rapi/post_hub_arrive
controller: App\Controller\RAPIController::postHubArrive
methods: [POST]
rapi_jo_start:
path: /rapi/start
controller: App\Controller\RAPIController::startJobOrder
methods: [POST]

View file

@ -4,16 +4,24 @@ namespace App\Ramcar;
class JOEventType extends NameValue
{
const CREATE = 'create';
const HUB_ASSIGN = 'hub_assign';
const RIDER_ASSIGN = 'rider_assign';
const CANCEL = 'cancel';
const FULFILL = 'fulfill';
const OPEN_EDIT = 'open_edit';
const REQUEUE = 'requeue';
const RIDER_ACCEPT = 'accept';
const RIDER_ARRIVE = 'arrive';
const RIDER_EDIT = 'rider_edit';
const CREATE = 'create';
const HUB_ASSIGN = 'hub_assign';
const RIDER_ASSIGN = 'rider_assign';
const CANCEL = 'cancel';
const FULFILL = 'fulfill';
const OPEN_EDIT = 'open_edit';
const REQUEUE = 'requeue';
const RIDER_ACCEPT = 'accept';
const RIDER_ARRIVE = 'arrive';
const RIDER_EDIT = 'rider_edit';
const RIDER_DEPART_HUB = 'rider_depart_hub';
const RIDER_ARRIVE_HUB_PRE_JO = 'rider_arrive_hub_pre_jo';
const RIDER_DEPART_HUB_PRE_JO = 'rider_depart_hub_pre_jo';
const RIDER_START = 'rider_start';
const RIDER_END = 'rider_end';
const RIDER_ARRIVE_HUB_POST_JO = 'rider_arrive_hub_post_jo';
const RIDER_DEPART_HUB_POST_JO = 'rider_depart_hub_post_jo';
const RIDER_ARRIVE_HUB = 'rider_arrive_hub';
const COLLECTION = [
'create' => 'Created',

View file

@ -544,8 +544,20 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface
->setTypeID(JOEventType::FULFILL)
->setJobOrder($jo)
->setRider($rider);
$this->em->persist($event);
$timestamp_event = new JOEvent();
$timestamp_event->setDateHappen(new DateTime())
->setTypeID(JOEventType::RIDER_END)
->setJobOrder($jo)
->setRider($rider);
$this->em->persist($event);
$this->em->persist($timestamp_event);
// NOTE: fix for the rider being assigned to other JO
// while on another JO.
// TODO: comment this out. Rider needs to be set to unavailable
// when rider accepts the JO
// tag rider as unavailable
$rider->setAvailable(false);
@ -845,6 +857,198 @@ class ResqRiderAPIHandler implements RiderAPIHandlerInterface
return $data;
}
public function hubDepart(Request $req)
{
$required_params = [
'jo_id'
];
$data = $this->checkParamsAndKey($req, $required_params);
if (isset($data['error']))
return $data;
// find job order.
// NOTE: Not using getActiveJobOrder since unsure if it is really being set
$jo_id = $req->request->get('jo_id');
$jo = $this->em->getRepository(JobOrder::class)->find($jo_id);
if ($jo == null)
{
$data = [
'error' => 'No job order found.'
];
return $data;
}
// create time stamp event for JO event
$rider = $this->session->getRider();
$event = new JOEvent();
$event->setDateHappen(new DateTime())
->setTypeID(JOEventType::RIDER_DEPART_HUB)
->setJobOrder($jo)
->setRider($rider);
return $data;
}
public function preHubArrive(Request $req)
{
$required_params = [
'jo_id'
];
$data = $this->checkParamsAndKey($req, $required_params);
if (isset($data['error']))
return $data;
// find job order.
// NOTE: Not using getActiveJobOrder since unsure if it is really being set
$jo_id = $req->request->get('jo_id');
$jo = $this->em->getRepository(JobOrder::class)->find($jo_id);
if ($jo == null)
{
$data = [
'error' => 'No job order found.'
];
return $data;
}
// create time stamp event for JO event
$rider = $this->session->getRider();
$event = new JOEvent();
$event->setDateHappen(new DateTime())
->setTypeID(JOEventType::RIDER_ARRIVE_HUB_PRE_JO)
->setJobOrder($jo)
->setRider($rider);
return $data;
}
public function preHubDepart(Request $req)
{
$required_params = [
'jo_id'
];
$data = $this->checkParamsAndKey($req, $required_params);
if (isset($data['error']))
return $data;
// find job order.
// NOTE: Not using getActiveJobOrder since unsure if it is really being set
$jo_id = $req->request->get('jo_id');
$jo = $this->em->getRepository(JobOrder::class)->find($jo_id);
if ($jo == null)
{
$data = [
'error' => 'No job order found.'
];
return $data;
}
// create time stamp event for JO event
$rider = $this->session->getRider();
$event = new JOEvent();
$event->setDateHappen(new DateTime())
->setTypeID(JOEventType::RIDER_DEPART_HUB_PRE_JO)
->setJobOrder($jo)
->setRider($rider);
return $data;
}
public function startJobOrder(Request $req)
{
$required_params = [
'jo_id'
];
$data = $this->checkParamsAndKey($req, $required_params);
if (isset($data['error']))
return $data;
// find job order.
// NOTE: Not using getActiveJobOrder since unsure if it is really being set
$jo_id = $req->request->get('jo_id');
$jo = $this->em->getRepository(JobOrder::class)->find($jo_id);
if ($jo == null)
{
$data = [
'error' => 'No job order found.'
];
return $data;
}
// create time stamp event for JO event
$rider = $this->session->getRider();
$event = new JOEvent();
$event->setDateHappen(new DateTime())
->setTypeID(JOEventType::RIDER_START)
->setJobOrder($jo)
->setRider($rider);
return $data;
}
public function postHubArrive(Request $req)
{
$required_params = [
'jo_id'
];
$data = $this->checkParamsAndKey($req, $required_params);
if (isset($data['error']))
return $data;
// find job order.
// NOTE: Not using getActiveJobOrder since unsure if it is really being set
$jo_id = $req->request->get('jo_id');
$jo = $this->em->getRepository(JobOrder::class)->find($jo_id);
if ($jo == null)
{
$data = [
'error' => 'No job order found.'
];
return $data;
}
// create time stamp event for JO event
$rider = $this->session->getRider();
$event = new JOEvent();
$event->setDateHappen(new DateTime())
->setTypeID(JOEventType::RIDER_ARRIVE_HUB_POST_JO)
->setJobOrder($jo)
->setRider($rider);
return $data;
}
public function postHubDepart(Request $req)
{
$required_params = [
'jo_id'
];
$data = $this->checkParamsAndKey($req, $required_params);
if (isset($data['error']))
return $data;
// find job order.
// NOTE: Not using getActiveJobOrder since unsure if it is really being set
$jo_id = $req->request->get('jo_id');
$jo = $this->em->getRepository(JobOrder::class)->find($jo_id);
if ($jo == null)
{
$data = [
'error' => 'No job order found.'
];
return $data;
}
// create time stamp event for JO event
$rider = $this->session->getRider();
$event = new JOEvent();
$event->setDateHappen(new DateTime())
->setTypeID(JOEventType::RIDER_DEPART_HUB_POST_JO)
->setJobOrder($jo)
->setRider($rider);
return $data;
}
protected function checkMissingParameters(Request $req, $params = [])
{
$missing = [];