Modify getJOHIstory in JobOrderController . #591
This commit is contained in:
parent
3ebf6b6c96
commit
baaa832794
2 changed files with 140 additions and 79 deletions
|
|
@ -152,3 +152,5 @@ access_keys:
|
|||
label: Get Ongoing Job Order
|
||||
- id: mobile_jo.cancel
|
||||
label: Cancel Job Order
|
||||
- id: mobile_jo.get.history
|
||||
label: Get Job Order History
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ use App\Ramcar\TradeInType;
|
|||
use App\Ramcar\JOEventType;
|
||||
use App\Ramcar\HubCriteria;
|
||||
use App\Ramcar\ModeOfPayment;
|
||||
use App\Ramcar\APIRiderStatus;
|
||||
|
||||
use App\Service\InvoiceGeneratorInterface;
|
||||
use App\Service\RisingTideGateway;
|
||||
|
|
@ -38,6 +39,7 @@ use App\Service\HubFilterLogger;
|
|||
use App\Service\HubFilteringGeoChecker;
|
||||
use App\Service\MapTools;
|
||||
use App\Service\MobileAPIHandler;
|
||||
use App\Service\RiderTracker;
|
||||
|
||||
use App\Entity\JobOrder;
|
||||
use App\Entity\CustomerVehicle;
|
||||
|
|
@ -434,99 +436,44 @@ class JobOrderController extends APIController
|
|||
return new APIResponse(true, 'Job order cancelled', $data);
|
||||
}
|
||||
|
||||
// TODO: modify for MobileUser
|
||||
public function getJOHistory(Request $req, EntityManagerInterface $em)
|
||||
public function getJOHistory(Request $req, EntityManagerInterface $em, MobileAPIHandler $mah,
|
||||
RiderTracker $rt)
|
||||
{
|
||||
$res = $this->checkParamsAndKey($req, $em, []);
|
||||
if ($res->isError())
|
||||
return $res->getReturnResponse();
|
||||
$this->denyAccessUnlessGranted('mobile_jo.get.history', null, 'No access.');
|
||||
|
||||
// get customer
|
||||
$cust = $this->session->getCustomer();
|
||||
$required_params = [];
|
||||
$msg = $this->checkRequiredParameters($req, $required_params);
|
||||
if ($msg)
|
||||
return new APIResponse(false, $msg);
|
||||
|
||||
// get capi user to link to mobile user
|
||||
$user_id = $this->getUser()->getID();
|
||||
|
||||
// get mobile user
|
||||
$mobile_user = $mah->findMobileUser($user_id);
|
||||
|
||||
if ($mobile_user == null)
|
||||
return new APIResponse(false, 'No mobile user found.');
|
||||
|
||||
// customer
|
||||
$cust = $mobile_user->getCustomer();
|
||||
if ($cust == null)
|
||||
{
|
||||
$res->setError(true)
|
||||
->setErrorMessage('No customer information found');
|
||||
return $res->getReturnResponse();
|
||||
}
|
||||
return new APIResponse(false, 'No customer information found');
|
||||
|
||||
// get job orders
|
||||
$all_jo_data = [];
|
||||
$jos = $cust->getJobOrders();
|
||||
foreach ($jos as $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;
|
||||
}
|
||||
|
||||
$all_jo_data[] = $jo_data;
|
||||
$all_jo_data[] = $this->generateJobOrderData($req, $jo, $rt, $mah);
|
||||
}
|
||||
|
||||
// return data
|
||||
$data = [
|
||||
'job_orders' => $all_jo_data
|
||||
];
|
||||
$res->setData($data);
|
||||
|
||||
// response
|
||||
return $res->getReturnResponse();
|
||||
return new APIResponse(true, 'Job order history found', $data);
|
||||
}
|
||||
|
||||
// TODO: modify for MobileUser
|
||||
|
|
@ -1300,7 +1247,8 @@ class JobOrderController extends APIController
|
|||
}
|
||||
}
|
||||
|
||||
protected function processMQTTEvents($jo, $payload, $mclient, $rah)
|
||||
protected function processMQTTEvents(JobOrder $jo, $payload, MQTTClient $mclient,
|
||||
RiderAssignmentHandlerInterface$rah)
|
||||
{
|
||||
// check JO status
|
||||
if ($jo->getStatus() == JOStatus::ASSIGNED)
|
||||
|
|
@ -1318,7 +1266,7 @@ class JobOrderController extends APIController
|
|||
}
|
||||
}
|
||||
|
||||
protected function makeInvoiceData($invoice, $mah, $req)
|
||||
protected function makeInvoiceData(Invoice $invoice, MobileAPIHandler$mah, Request $req)
|
||||
{
|
||||
// make invoice json data
|
||||
$invoice_data = [
|
||||
|
|
@ -1385,4 +1333,115 @@ class JobOrderController extends APIController
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function generateJobOrderData($req, $jo, $rt, $mah)
|
||||
{
|
||||
$status = $jo->getStatus();
|
||||
$dest = $jo->getCoordinates();
|
||||
|
||||
$jo_data = [
|
||||
'id' => $jo->getID(),
|
||||
'date_create' => $jo->getDateCreate()->format('M d, Y'),
|
||||
'service_type' => $jo->getServiceType(),
|
||||
'destination' => [
|
||||
'long' => $dest->getLongitude(),
|
||||
'lat' => $dest->getLatitude(),
|
||||
],
|
||||
'delivery_address' => $jo->getDeliveryAddress(),
|
||||
'delivery_instructions' => $jo->getDeliveryInstructions(),
|
||||
'jo_status' => $status,
|
||||
'status' => $this->generateAPIRiderStatus($status),
|
||||
];
|
||||
|
||||
// customer vehicle and warranty
|
||||
$cv = $jo->getCustomerVehicle();
|
||||
|
||||
// get latest warranty using plate number
|
||||
$warranty = $mah->findWarranty($cv->getPlateNumber());
|
||||
|
||||
$jo_data['customer_vehicle'] = [
|
||||
'id' => $cv->getID(),
|
||||
'plate_number' => $cv->getPlateNumber(),
|
||||
'warranty' => $warranty,
|
||||
];
|
||||
|
||||
// rider
|
||||
$rider = $jo->getRider();
|
||||
if ($rider != null)
|
||||
{
|
||||
// default image url
|
||||
$url_prefix = $req->getSchemeAndHttpHost();
|
||||
$image_url = $url_prefix . '/assets/images/user.gif';
|
||||
if ($rider->getImageFile() != null)
|
||||
$image_url = $url_prefix . '/uploads/' . $rider->getImageFile();
|
||||
|
||||
$coord = $rt->getRiderLocation($rider->getID());
|
||||
|
||||
$jo_data['rider'] = [
|
||||
'id' => $rider->getID(),
|
||||
'name' => $rider->getFullName(),
|
||||
'plate_num' => $rider->getPlateNumber(),
|
||||
'contact_num' => $rider->getContactNumber(),
|
||||
'image_url' => $image_url,
|
||||
'location' => [
|
||||
'long' => $coord->getLongitude(),
|
||||
'lat' => $coord->getLatitude()
|
||||
]
|
||||
];
|
||||
}
|
||||
else
|
||||
{
|
||||
$jo_data['rider'] = null;
|
||||
}
|
||||
|
||||
// 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;
|
||||
}
|
||||
|
||||
protected function generateAPIRiderStatus($status)
|
||||
{
|
||||
switch ($status)
|
||||
{
|
||||
case JOStatus::PENDING:
|
||||
return APIRiderStatus::OUTLET_ASSIGN;
|
||||
case JOStatus::RIDER_ASSIGN:
|
||||
return APIRiderStatus::RIDER_ASSIGN;
|
||||
case JOStatus::ASSIGNED:
|
||||
case JOStatus::IN_TRANSIT:
|
||||
case JOStatus::IN_PROGRESS:
|
||||
return APIRiderStatus::RIDER_PICK_UP;
|
||||
}
|
||||
return 'unknown';
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue