Merge branch '592-add-get-jo-details-call-for-mobile-api' into 'master-fix'
Resolve "Add get JO details call for mobile API" See merge request jankstudio/resq!709
This commit is contained in:
commit
6daaa4fd4a
2 changed files with 118 additions and 0 deletions
|
|
@ -180,3 +180,8 @@ api_warr_serial_register:
|
||||||
path: /api/warranty/{serial}
|
path: /api/warranty/{serial}
|
||||||
controller: App\Controller\APIController::warrantyRegister
|
controller: App\Controller\APIController::warrantyRegister
|
||||||
methods: [POST]
|
methods: [POST]
|
||||||
|
|
||||||
|
api_jo_info:
|
||||||
|
path: /api/job_order/{id}/info
|
||||||
|
controller: App\Controller\APIController::getJobOrderInfo
|
||||||
|
methods: [GET]
|
||||||
|
|
|
||||||
|
|
@ -1827,6 +1827,118 @@ class APIController extends Controller implements LoggedController
|
||||||
return $res->getReturnResponse();
|
return $res->getReturnResponse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// we can't use param converter for now because we want to output the proper 404
|
||||||
|
public function getJobOrderInfo($id, Request $req, EntityManagerInterface $em)
|
||||||
|
{
|
||||||
|
// check required parameters and api key
|
||||||
|
$res = $this->checkParamsAndKey($req, $em, []);
|
||||||
|
if ($res->isError())
|
||||||
|
return $res->getReturnResponse();
|
||||||
|
|
||||||
|
// get customer
|
||||||
|
$cust = $this->session->getCustomer();
|
||||||
|
if ($cust == null)
|
||||||
|
{
|
||||||
|
$res->setError(true)
|
||||||
|
->setErrorMessage('No customer information found');
|
||||||
|
return $res->getReturnResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
// get job order data
|
||||||
|
$jo = $em->getRepository(JobOrder::class)->find($id);
|
||||||
|
if ($jo == null)
|
||||||
|
{
|
||||||
|
$res->setError(true)
|
||||||
|
->setErrorMessage('No job order information found');
|
||||||
|
return $res->getReturnResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if job order belongs to customer / user
|
||||||
|
if ($cust->getID() != $jo->getCustomer()->getID())
|
||||||
|
{
|
||||||
|
$res->setError(true)
|
||||||
|
->setErrorMessage('No job order information found');
|
||||||
|
return $res->getReturnResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
// put into job order data array
|
||||||
|
$jo_data = $this->generateJobOrderData($jo);
|
||||||
|
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'job_order' => $jo_data
|
||||||
|
];
|
||||||
|
$res->setData($data);
|
||||||
|
|
||||||
|
return $res->getReturnResponse();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function generateJobOrderData($jo)
|
||||||
|
{
|
||||||
|
$status = $jo->getStatus();
|
||||||
|
|
||||||
|
$jo_data = [
|
||||||
|
'id' => $jo->getID(),
|
||||||
|
'date_create' => $jo->getDateCreate()->format('M d, Y'),
|
||||||
|
'service_type' => $jo->getServiceType(),
|
||||||
|
'status' => $status,
|
||||||
|
];
|
||||||
|
|
||||||
|
// customer vehicle and warranty
|
||||||
|
$cv = $jo->getCustomerVehicle();
|
||||||
|
|
||||||
|
// get latest warranty using plate number
|
||||||
|
$warranty = $this->findWarranty($cv->getPlateNumber());
|
||||||
|
|
||||||
|
$jo_data['customer_vehicle'] = [
|
||||||
|
'id' => $cv->getID(),
|
||||||
|
'plate_number' => $cv->getPlateNumber(),
|
||||||
|
'warranty' => $warranty,
|
||||||
|
];
|
||||||
|
|
||||||
|
// rider
|
||||||
|
$rider = $jo->getRider();
|
||||||
|
if ($rider != null)
|
||||||
|
{
|
||||||
|
$jo_data['rider'] = $rider->getFullName();
|
||||||
|
}
|
||||||
|
|
||||||
|
// invoice items
|
||||||
|
$items = [];
|
||||||
|
$jo_items = $jo->getInvoice()->getItems();
|
||||||
|
foreach ($jo_items as $item)
|
||||||
|
{
|
||||||
|
$items[] = [
|
||||||
|
'id' => $item->getID(),
|
||||||
|
'title' => $item->getTitle(),
|
||||||
|
'qty' => $item->getQuantity(),
|
||||||
|
'price' => $item->getPrice(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$jo_data['items'] = $items;
|
||||||
|
|
||||||
|
|
||||||
|
// dates depending on status
|
||||||
|
switch ($status)
|
||||||
|
{
|
||||||
|
case JOStatus::FULFILLED:
|
||||||
|
if ($jo->getDateFulfill() == null)
|
||||||
|
$jo_data['date_fulfilled'] = '';
|
||||||
|
else
|
||||||
|
$jo_data['date_fulfilled'] = $jo->getDateFulfill()->format('M d, Y');
|
||||||
|
break;
|
||||||
|
case JOStatus::CANCELLED:
|
||||||
|
$date_cancel = $jo->getDateCancel();
|
||||||
|
if ($date_cancel == null)
|
||||||
|
$date_cancel = new DateTime();
|
||||||
|
$jo_data['date_cancelled'] = $date_cancel->format('M d, Y');
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $jo_data;
|
||||||
|
}
|
||||||
|
|
||||||
public function getJOHistory(Request $req)
|
public function getJOHistory(Request $req)
|
||||||
{
|
{
|
||||||
$em = $this->getDoctrine()->getManager();
|
$em = $this->getDoctrine()->getManager();
|
||||||
|
|
@ -1848,6 +1960,7 @@ class APIController extends Controller implements LoggedController
|
||||||
$jos = $cust->getJobOrders();
|
$jos = $cust->getJobOrders();
|
||||||
foreach ($jos as $jo)
|
foreach ($jos as $jo)
|
||||||
{
|
{
|
||||||
|
// TODO: use generateJobOrderData method
|
||||||
$status = $jo->getStatus();
|
$status = $jo->getStatus();
|
||||||
|
|
||||||
$jo_data = [
|
$jo_data = [
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue