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
|
label: Get Ongoing Job Order
|
||||||
- id: mobile_jo.cancel
|
- id: mobile_jo.cancel
|
||||||
label: Cancel Job Order
|
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\JOEventType;
|
||||||
use App\Ramcar\HubCriteria;
|
use App\Ramcar\HubCriteria;
|
||||||
use App\Ramcar\ModeOfPayment;
|
use App\Ramcar\ModeOfPayment;
|
||||||
|
use App\Ramcar\APIRiderStatus;
|
||||||
|
|
||||||
use App\Service\InvoiceGeneratorInterface;
|
use App\Service\InvoiceGeneratorInterface;
|
||||||
use App\Service\RisingTideGateway;
|
use App\Service\RisingTideGateway;
|
||||||
|
|
@ -38,6 +39,7 @@ use App\Service\HubFilterLogger;
|
||||||
use App\Service\HubFilteringGeoChecker;
|
use App\Service\HubFilteringGeoChecker;
|
||||||
use App\Service\MapTools;
|
use App\Service\MapTools;
|
||||||
use App\Service\MobileAPIHandler;
|
use App\Service\MobileAPIHandler;
|
||||||
|
use App\Service\RiderTracker;
|
||||||
|
|
||||||
use App\Entity\JobOrder;
|
use App\Entity\JobOrder;
|
||||||
use App\Entity\CustomerVehicle;
|
use App\Entity\CustomerVehicle;
|
||||||
|
|
@ -434,99 +436,44 @@ class JobOrderController extends APIController
|
||||||
return new APIResponse(true, 'Job order cancelled', $data);
|
return new APIResponse(true, 'Job order cancelled', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: modify for MobileUser
|
public function getJOHistory(Request $req, EntityManagerInterface $em, MobileAPIHandler $mah,
|
||||||
public function getJOHistory(Request $req, EntityManagerInterface $em)
|
RiderTracker $rt)
|
||||||
{
|
{
|
||||||
$res = $this->checkParamsAndKey($req, $em, []);
|
$this->denyAccessUnlessGranted('mobile_jo.get.history', null, 'No access.');
|
||||||
if ($res->isError())
|
|
||||||
return $res->getReturnResponse();
|
|
||||||
|
|
||||||
// get customer
|
$required_params = [];
|
||||||
$cust = $this->session->getCustomer();
|
$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)
|
if ($cust == null)
|
||||||
{
|
return new APIResponse(false, 'No customer information found');
|
||||||
$res->setError(true)
|
|
||||||
->setErrorMessage('No customer information found');
|
|
||||||
return $res->getReturnResponse();
|
|
||||||
}
|
|
||||||
|
|
||||||
// get job orders
|
// get job orders
|
||||||
$all_jo_data = [];
|
$all_jo_data = [];
|
||||||
$jos = $cust->getJobOrders();
|
$jos = $cust->getJobOrders();
|
||||||
foreach ($jos as $jo)
|
foreach ($jos as $jo)
|
||||||
{
|
{
|
||||||
$status = $jo->getStatus();
|
$all_jo_data[] = $this->generateJobOrderData($req, $jo, $rt, $mah);
|
||||||
|
|
||||||
$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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// return data
|
// return data
|
||||||
$data = [
|
$data = [
|
||||||
'job_orders' => $all_jo_data
|
'job_orders' => $all_jo_data
|
||||||
];
|
];
|
||||||
$res->setData($data);
|
|
||||||
|
|
||||||
// response
|
return new APIResponse(true, 'Job order history found', $data);
|
||||||
return $res->getReturnResponse();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: modify for MobileUser
|
// 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
|
// check JO status
|
||||||
if ($jo->getStatus() == JOStatus::ASSIGNED)
|
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
|
// make invoice json data
|
||||||
$invoice_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