From b9fdcbbbbb5bbac940b54e8924f20c366e20459b Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 22 Oct 2021 05:49:05 +0000 Subject: [PATCH 01/27] Sort the job orders for job order history from latest to oldest. #632 --- src/Controller/APIController.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index f9f0b596..884928ea 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -2023,7 +2023,10 @@ class APIController extends Controller implements LoggedController // get job orders $all_jo_data = []; - $jos = $cust->getJobOrders(); + // $jos = $cust->getJobOrders(); + $jos = $em->getRepository(JobOrder::class)->findBy([ + 'customer' => $cust, + ], ['date_schedule' => 'DESC']); foreach ($jos as $jo) { // NOTE: use generateJobOrderData method, maybe? From 9c31a573c630d92f9a35a0c6816b45d2858c3328 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 26 Oct 2021 07:26:11 +0000 Subject: [PATCH 02/27] Add checking if hub_id is -1. Add call to get all ongoing job orders. #632 --- config/routes/api.yaml | 20 ++++++++++++++ src/Controller/APIController.php | 45 ++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) diff --git a/config/routes/api.yaml b/config/routes/api.yaml index b880d436..d4cfda3f 100644 --- a/config/routes/api.yaml +++ b/config/routes/api.yaml @@ -185,3 +185,23 @@ api_jo_info: path: /api/job_order/{id}/info controller: App\Controller\APIController::getJobOrderInfo methods: [GET] + +api_ongoing_job_orders: + path: /api/job_orders/ongoing + controller: App\Controller\APIController::getAllOngoingJobOrders + methods: [GET] + +api_ongoing_jo_count: + path: /api/job_orders/ongoing/count + controller: App\Controller\APIController::getOngoingJobOrderCount + methods: [GET] + +api_new_location: + path: /api/new_location + controller: App\Controller\APIController::addLocation + methods: [POST] + +api_locations: + path: /api/locations + controller: App\Controller\APIController::getLocations + methods: [GET] diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 884928ea..eade6ce1 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -2711,6 +2711,14 @@ class APIController extends Controller implements LoggedController $hub = null; $hub_id = $req->request->get('hub_id'); + // check if hub_id is -1 which means user clicked Book Now before 5 PM + // but confirmed the order after 5 PM + if ($hub_id == -1) + { + $res->setError(true) + ->setErrorMessage('Book Now no longer available.'); + return $res->getReturnResponse(); + } if (strlen($hub_id) > 0) $hub = $em->getRepository(Hub::class)->find($hub_id); @@ -3529,6 +3537,43 @@ class APIController extends Controller implements LoggedController return $res->getReturnResponse(); } + public function getAllOngoingJobOrders(Request $req, RiderTracker $rt) + { + $required_params = []; + $em = $this->getDoctrine()->getManager(); + $res = $this->checkParamsAndKey($req, $em, $required_params); + 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(); + } + + $ongoing_jos = $this->getOngoingJobOrders($cust); + + error_log('ongoing jos ' . count($ongoing_jos)); + + // initialize data + $jo_data = []; + foreach ($ongoing_jos as $jo) + { + $jo_data[] = $this->generateJobOrderData($req, $jo, $rt); + } + + $data = [ + 'ongoing_job_orders' => $jo_data, + ]; + + $res->setData($data); + + return $res->getReturnResponse(); + } + protected function updateWarranty($res, $em, $rt, $trans, $req, $serial, $inv_filename = null, $wcard_filename = null, $logger, $log_data, $user_id, $action, $source) { From a8eaad2a828b25fdbcc9fce393c8da8d7d72dc5b Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 26 Oct 2021 07:49:45 +0000 Subject: [PATCH 03/27] Add call to get ongoing job order count. #632 --- src/Controller/APIController.php | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index eade6ce1..bbd4d00f 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -3556,8 +3556,6 @@ class APIController extends Controller implements LoggedController $ongoing_jos = $this->getOngoingJobOrders($cust); - error_log('ongoing jos ' . count($ongoing_jos)); - // initialize data $jo_data = []; foreach ($ongoing_jos as $jo) @@ -3574,6 +3572,34 @@ class APIController extends Controller implements LoggedController return $res->getReturnResponse(); } + public function getOngoingJobOrderCount(Request $req) + { + $required_params = []; + $em = $this->getDoctrine()->getManager(); + $res = $this->checkParamsAndKey($req, $em, $required_params); + 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(); + } + + $ongoing_jos = $this->getOngoingJobOrders($cust); + + $data = [ + 'ongoing_job_order_count' => count($ongoing_jos), + ]; + + $res->setData($data); + + return $res->getReturnResponse(); + } + protected function updateWarranty($res, $em, $rt, $trans, $req, $serial, $inv_filename = null, $wcard_filename = null, $logger, $log_data, $user_id, $action, $source) { From 61b897d8831a1bcc21fafac370f37aa662b18f76 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 26 Oct 2021 09:18:13 +0000 Subject: [PATCH 04/27] Add call to add location for customer. #632 --- src/Controller/APIController.php | 58 ++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index bbd4d00f..5e01ac72 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -66,6 +66,7 @@ use App\Entity\PrivacyPolicy; use App\Entity\Hub; use App\Entity\SAPBattery; use App\Entity\WarrantySerial; +use App\Entity\CustomerMetadata; use DateTime; use DateInterval; @@ -3600,6 +3601,63 @@ class APIController extends Controller implements LoggedController return $res->getReturnResponse(); } + public function addLocation(Request $req) + { + $required_params = [ + 'name', + 'address', + 'longitude', + 'latitude', + ]; + $em = $this->getDoctrine()->getManager(); + $res = $this->checkParamsAndKey($req, $em, $required_params); + 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 the information + $name = $req->request->get('name'); + $address = $req->request->get('address'); + $lng = $req->request->get('longitude'); + $lat = $req->request->get('latitude'); + + $loc_info = [ + 'address' => $address, + 'longitude' => $lng, + 'latitude' => $lat, + ]; + + // check if customer already has existing metadata + $c_meta = $em->getRepository(CustomerMetadata::class)->findOneBy(['customer' => $cust]); + if ($c_meta == null) + { + // create new customer meta + $cust_meta = new CustomerMetadata(); + $cust_meta->setCustomer($cust); + $cust_meta->addMetaInfo($name, $loc_info); + + $em->persist($cust_meta); + } + else + { + // add location to existing customer meta + $c_meta->addMetaInfo($name, $loc_info); + } + + $em->flush(); + + return $res->getReturnResponse(); + + } + protected function updateWarranty($res, $em, $rt, $trans, $req, $serial, $inv_filename = null, $wcard_filename = null, $logger, $log_data, $user_id, $action, $source) { From ca3fbc21c87e1f442279872da26be100eeecf628 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Wed, 27 Oct 2021 02:54:34 +0000 Subject: [PATCH 05/27] Add route for customer vehicle removal. Add call to get locations. #632 --- config/routes/api.yaml | 6 +++ src/Controller/APIController.php | 34 ++++++++++++++ src/Entity/CustomerMetadata.php | 79 ++++++++++++++++++++++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 src/Entity/CustomerMetadata.php diff --git a/config/routes/api.yaml b/config/routes/api.yaml index d4cfda3f..63a05c2f 100644 --- a/config/routes/api.yaml +++ b/config/routes/api.yaml @@ -205,3 +205,9 @@ api_locations: path: /api/locations controller: App\Controller\APIController::getLocations methods: [GET] + +api_cust_vehicle_remove: + path: /api/vehicles/{id}/remove + controller: App\Controller\APIController::removeVehicle + methods: [DELETE] + diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 5e01ac72..7317dc45 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -3648,6 +3648,7 @@ class APIController extends Controller implements LoggedController } else { + // TODO: limit locations to 6. If more than 6, pop the first one out // add location to existing customer meta $c_meta->addMetaInfo($name, $loc_info); } @@ -3655,7 +3656,40 @@ class APIController extends Controller implements LoggedController $em->flush(); return $res->getReturnResponse(); + } + public function getLocations(Request $req) + { + $required_params = []; + $em = $this->getDoctrine()->getManager(); + $res = $this->checkParamsAndKey($req, $em, $required_params); + 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 the customer meta for customer + $locations = []; + $cust_meta = $em->getRepository(CustomerMetadata::class)->findOneBy(['customer' => $cust]); + if ($cust_meta != null) + { + $locations[] = $cust_meta->getAllMetaInfo(); + } + + $data = [ + 'locations' => $locations, + ]; + + $res->setData($data); + + return $res->getReturnResponse(); } protected function updateWarranty($res, $em, $rt, $trans, $req, $serial, $inv_filename = null, $wcard_filename = null, diff --git a/src/Entity/CustomerMetadata.php b/src/Entity/CustomerMetadata.php new file mode 100644 index 00000000..c3fe1509 --- /dev/null +++ b/src/Entity/CustomerMetadata.php @@ -0,0 +1,79 @@ +meta_info = []; + } + + public function getID() + { + return $this->id; + } + + public function setCustomer(Customer $customer) + { + $this->customer = $customer; + return $this; + } + + public function getCustomer() + { + return $this->customer; + } + + public function addMetaInfo($id, $value) + { + $this->meta_info[$id] = $value; + return $this; + } + + public function getMetaInfo($id) + { + // return null if we don't have it + if (!isset($this->meta_info[$id])) + return null; + + return $this->meta_info[$id]; + } + + public function getAllMetaInfo() + { + return $this->meta_info; + } +} From 48aaeddadd68d1ebd4f96b67afa0ff88a3d96020 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Wed, 27 Oct 2021 06:35:40 +0000 Subject: [PATCH 06/27] Add call to remove a vehicle from customer's list of vehicles. #632 --- config/routes/api.yaml | 2 +- src/Controller/APIController.php | 58 +++++++++++++++++++++++++++----- 2 files changed, 50 insertions(+), 10 deletions(-) diff --git a/config/routes/api.yaml b/config/routes/api.yaml index 63a05c2f..5f38b6e4 100644 --- a/config/routes/api.yaml +++ b/config/routes/api.yaml @@ -209,5 +209,5 @@ api_locations: api_cust_vehicle_remove: path: /api/vehicles/{id}/remove controller: App\Controller\APIController::removeVehicle - methods: [DELETE] + methods: [POST] diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 7317dc45..c715db83 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -742,7 +742,9 @@ class APIController extends Controller implements LoggedController // vehicles $cv_list = []; - $cvs = $cust->getVehicles(); + // $cvs = $cust->getVehicles(); + // only get the customer's vehicles whose flag_active is true + $cvs = $em->getRepository(CustomerVehicle::class)->findBy(['flag_active' => true, 'customer' => $cust]); foreach ($cvs as $cv) { $battery_id = null; @@ -3538,10 +3540,9 @@ class APIController extends Controller implements LoggedController return $res->getReturnResponse(); } - public function getAllOngoingJobOrders(Request $req, RiderTracker $rt) + public function getAllOngoingJobOrders(EntityManagerInterface $em, Request $req, RiderTracker $rt) { $required_params = []; - $em = $this->getDoctrine()->getManager(); $res = $this->checkParamsAndKey($req, $em, $required_params); if ($res->isError()) return $res->getReturnResponse(); @@ -3573,10 +3574,9 @@ class APIController extends Controller implements LoggedController return $res->getReturnResponse(); } - public function getOngoingJobOrderCount(Request $req) + public function getOngoingJobOrderCount(EntityManagerInterface $em, Request $req) { $required_params = []; - $em = $this->getDoctrine()->getManager(); $res = $this->checkParamsAndKey($req, $em, $required_params); if ($res->isError()) return $res->getReturnResponse(); @@ -3601,7 +3601,7 @@ class APIController extends Controller implements LoggedController return $res->getReturnResponse(); } - public function addLocation(Request $req) + public function addLocation(EntityManagerInterface $em, Request $req) { $required_params = [ 'name', @@ -3609,7 +3609,6 @@ class APIController extends Controller implements LoggedController 'longitude', 'latitude', ]; - $em = $this->getDoctrine()->getManager(); $res = $this->checkParamsAndKey($req, $em, $required_params); if ($res->isError()) return $res->getReturnResponse(); @@ -3658,10 +3657,9 @@ class APIController extends Controller implements LoggedController return $res->getReturnResponse(); } - public function getLocations(Request $req) + public function getLocations(EntityManagerInterface $em, Request $req) { $required_params = []; - $em = $this->getDoctrine()->getManager(); $res = $this->checkParamsAndKey($req, $em, $required_params); if ($res->isError()) return $res->getReturnResponse(); @@ -3692,6 +3690,48 @@ class APIController extends Controller implements LoggedController return $res->getReturnResponse(); } + public function removeVehicle($id, EntityManagerInterface $em, Request $req) + { + $required_params = []; + $res = $this->checkParamsAndKey($req, $em, $required_params); + 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(); + } + + // find customer vehicle + $cv = $em->getRepository(CustomerVehicle::class)->find($id); + if ($cv == null) + { + $res->setError(true) + ->setErrorMessage('Invalid customer vehicle id'); + return $res->getReturnResponse(); + } + + // confirm that customer vehicle belongs to customer + if ($cv->getCustomer()->getID() != $cust->getID()) + { + $res->setError(true) + ->setErrorMessage('Vehicle does not belong to customer'); + return $res->getReturnResponse(); + } + + // we cannot remove a vehicle from customer if customer vehicle has already has JOs for it. + // instead we set the customer vehicle's flag_active to false + $cv->setActive(false); + $em->flush(); + + // response + return $res->getReturnResponse(); + } + protected function updateWarranty($res, $em, $rt, $trans, $req, $serial, $inv_filename = null, $wcard_filename = null, $logger, $log_data, $user_id, $action, $source) { From e4e412fd14dc0deabb40b874c511e9f89dbc35bb Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Wed, 27 Oct 2021 07:27:15 +0000 Subject: [PATCH 07/27] Fix response to get locations. #632 --- src/Controller/APIController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index c715db83..d14fea91 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -3678,7 +3678,7 @@ class APIController extends Controller implements LoggedController $cust_meta = $em->getRepository(CustomerMetadata::class)->findOneBy(['customer' => $cust]); if ($cust_meta != null) { - $locations[] = $cust_meta->getAllMetaInfo(); + $locations = $cust_meta->getAllMetaInfo(); } $data = [ From c54ee5d7d88ec3a6bb8fa365d8bb073baffe1fd9 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Wed, 27 Oct 2021 07:50:02 +0000 Subject: [PATCH 08/27] Add landmark to location details. #632 --- src/Controller/APIController.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index d14fea91..37388f8b 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -3608,6 +3608,7 @@ class APIController extends Controller implements LoggedController 'address', 'longitude', 'latitude', + 'landmark', ]; $res = $this->checkParamsAndKey($req, $em, $required_params); if ($res->isError()) @@ -3627,11 +3628,13 @@ class APIController extends Controller implements LoggedController $address = $req->request->get('address'); $lng = $req->request->get('longitude'); $lat = $req->request->get('latitude'); + $landmark = $req->request->get('landmark'); $loc_info = [ 'address' => $address, 'longitude' => $lng, 'latitude' => $lat, + 'landmark' => $landmark, ]; // check if customer already has existing metadata From 84844046f1dcc1b85ccce8a5777fe5c66284f647 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Wed, 27 Oct 2021 08:26:19 +0000 Subject: [PATCH 09/27] Add limit to number of locations to be stored. #632 --- src/Controller/APIController.php | 7 ++++++- src/Entity/CustomerMetadata.php | 8 ++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 37388f8b..09e58a5f 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -3650,8 +3650,13 @@ class APIController extends Controller implements LoggedController } else { - // TODO: limit locations to 6. If more than 6, pop the first one out + // limit locations to 6. If more than 6, pop the first one out // add location to existing customer meta + $meta_count = count($c_meta->getAllMetaInfo()); + + if ($meta_count >= 6) + $c_meta->popMetaInfo(); + $c_meta->addMetaInfo($name, $loc_info); } diff --git a/src/Entity/CustomerMetadata.php b/src/Entity/CustomerMetadata.php index c3fe1509..5ef9d518 100644 --- a/src/Entity/CustomerMetadata.php +++ b/src/Entity/CustomerMetadata.php @@ -76,4 +76,12 @@ class CustomerMetadata { return $this->meta_info; } + + public function popMetaInfo() + { + if (count($this->meta_info) > 0) + { + array_shift($this->meta_info); + } + } } From 7001d6a0ed7edbc81ed5c5291cff8e32fd30659e Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Wed, 27 Oct 2021 09:39:28 +0000 Subject: [PATCH 10/27] Fix get locations response. #632 --- src/Controller/APIController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 09e58a5f..ebed3179 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -3686,7 +3686,7 @@ class APIController extends Controller implements LoggedController $cust_meta = $em->getRepository(CustomerMetadata::class)->findOneBy(['customer' => $cust]); if ($cust_meta != null) { - $locations = $cust_meta->getAllMetaInfo(); + $locations[] = $cust_meta->getAllMetaInfo(); } $data = [ From 16c944899f45484aad50b0680cecef1aa35cac4c Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 28 Oct 2021 03:05:05 +0000 Subject: [PATCH 11/27] Add rider rating for jo in job order history. #632 --- src/Controller/APIController.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 93bffd5d..cb152aad 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -2061,6 +2061,9 @@ class APIController extends Controller implements LoggedController $jo_data['rider'] = $rider->getFullName(); } + // rider rating for jo + $jo_data['rider_rating'] = $jo->hasRiderRating(); + // invoice items $items = []; $jo_items = $jo->getInvoice()->getItems(); @@ -2076,7 +2079,6 @@ class APIController extends Controller implements LoggedController $jo_data['items'] = $items; - // dates depending on status switch ($status) { From 158d05d82202f9ad8fb50db51a9dede12ca5085b Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 28 Oct 2021 06:31:27 +0000 Subject: [PATCH 12/27] Add rating and rider rating to JO history response. Fix associations between rider rating and customer, job order, and rider. #632 --- src/Controller/APIController.php | 16 ++++++++++++++-- src/Entity/Customer.php | 8 ++++++++ src/Entity/JobOrder.php | 10 ++++++++++ src/Entity/Rider.php | 7 +++++++ 4 files changed, 39 insertions(+), 2 deletions(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index cb152aad..a1a04590 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -2056,14 +2056,23 @@ class APIController extends Controller implements LoggedController // rider $rider = $jo->getRider(); + + // check if jo has rider rating set to true + $has_rider_rating = $jo->hasRiderRating(); + $rating = 0; if ($rider != null) { $jo_data['rider'] = $rider->getFullName(); + + // find the rider rating if any + if ($has_rider_rating) + $rating = $jo->getRating()->getRating(); } // rider rating for jo - $jo_data['rider_rating'] = $jo->hasRiderRating(); - + $jo_data['has_rider_rating'] = $has_rider_rating; + $jo_data['rider_rating'] = $rating; + // invoice items $items = []; $jo_items = $jo->getInvoice()->getItems(); @@ -3173,6 +3182,9 @@ class APIController extends Controller implements LoggedController $api_version = $this->getParameter('api_version'); $app_version = $req->query->get('version'); + // putting this in for the future, in case we have diverging versions + $os = $req->query->get('os'); + $platform = $req->query->get('platform'); $api_v = explode('.', $api_version); $app_v = explode('.', $app_version); diff --git a/src/Entity/Customer.php b/src/Entity/Customer.php index 4af84d96..de2cd92e 100644 --- a/src/Entity/Customer.php +++ b/src/Entity/Customer.php @@ -222,6 +222,12 @@ class Customer */ protected $car_club_customer_hub; + // ratings made by customer + /** + * @ORM\OneToMany(targetEntity="RiderRating", mappedBy="customer") + */ + protected $ratings; + public function __construct() { $this->numbers = new ArrayCollection(); @@ -259,6 +265,8 @@ class Customer $this->date_create = new DateTime(); $this->create_source = 'unknown'; + + $this->ratings = new ArrayCollection(); } public function getID() diff --git a/src/Entity/JobOrder.php b/src/Entity/JobOrder.php index fcbe5ddc..eace43a1 100644 --- a/src/Entity/JobOrder.php +++ b/src/Entity/JobOrder.php @@ -365,6 +365,12 @@ class JobOrder */ protected $delivery_status; + // rider rating + /** + * @ORM\OneToOne(targetEntity="RiderRating", mappedBy="job_order") + */ + protected $rating; + public function __construct() { $this->date_create = new DateTime(); @@ -1050,4 +1056,8 @@ class JobOrder return $this->delivery_status; } + public function getRating() + { + return $this->rating; + } } diff --git a/src/Entity/Rider.php b/src/Entity/Rider.php index 34f49455..020393da 100644 --- a/src/Entity/Rider.php +++ b/src/Entity/Rider.php @@ -136,6 +136,11 @@ class Rider */ protected $api_user; + /** + * @ORM\OneToMany(targetEntity="RiderRating", mappedBy="rider") + */ + protected $ratings; + public function __construct() { $this->job_orders = new ArrayCollection(); @@ -150,6 +155,8 @@ class Rider $this->active_job_order = null; $this->current_job_order = null; $this->api_user = null; + + $this->ratings = new ArrayCollection(); } public function getID() From 8ebb123064122c2527410e4269d6ceca8dc7992c Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 28 Oct 2021 07:19:32 +0000 Subject: [PATCH 13/27] Add average rating for partners in response for closest partners. #632 --- src/Controller/APIController.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index a1a04590..4e44d602 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -2524,6 +2524,23 @@ class APIController extends Controller implements LoggedController $partners = []; foreach($result as $row) { + // get all the reviews for each partner and average the ratings + $partner_id = $row[0]->getID(); + $partner = $em->getRepository(Partner::class)->find($partner_id); + $partner_reviews = $em->getRepository(Review::class)->findBy(['partner' => $partner]); + + $average_rating = 0; + if (count($partner_reviews) > 0) + { + $rating = 0; + foreach ($partner_reviews as $review) + { + $rating = $rating + $review->getRating(); + } + + $average_rating = $rating / sizeof($partner_reviews); + } + $partners[] = [ 'id' => $row[0]->getID(), 'name' => $row[0]->getName(), @@ -2535,6 +2552,7 @@ class APIController extends Controller implements LoggedController 'longitude' => $row[0]->getCoordinates()->getLongitude(), 'latitude' => $row[0]->getCoordinates()->getLatitude(), 'db_distance' => $row['dist'], + 'rating' => $average_rating, ]; } From 1d93c63da7d05d2909f2c5ba2d99ac5b722fb4c3 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 28 Oct 2021 08:39:12 +0000 Subject: [PATCH 14/27] Add null checking for jo rating even if flag for rider rating is true. #632 --- src/Controller/APIController.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 4e44d602..4b49730d 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -2066,7 +2066,11 @@ class APIController extends Controller implements LoggedController // find the rider rating if any if ($has_rider_rating) - $rating = $jo->getRating()->getRating(); + { + $jo_rating = $jo->getRating(); + if ($jo_rating != null) + $rating = $jo_rating->getRating(); + } } // rider rating for jo From 1f6162cb47fb0c11f84d2130effd1ebb45534160 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 28 Oct 2021 09:43:07 +0000 Subject: [PATCH 15/27] Fix sorting for ongoing job orders. #632 --- src/Controller/APIController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 4b49730d..78659965 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -1545,7 +1545,7 @@ class APIController extends Controller implements LoggedController $ongoing_jos = $em->getRepository(JobOrder::class)->findBy([ 'customer' => $cust, 'status' => [JOStatus::PENDING, JOStatus::RIDER_ASSIGN, JOStatus::IN_TRANSIT, JOStatus::ASSIGNED, JOStatus::IN_PROGRESS], - ]); + ], ['date_schedule' => 'desc']); return $ongoing_jos; } From 918c06725ee9b85b41812f4d9ade7e7f23bd9998 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 29 Oct 2021 05:51:12 +0000 Subject: [PATCH 16/27] Add call to get completed job orders. #632 --- config/routes/api.yaml | 4 +++ src/Controller/APIController.php | 43 ++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/config/routes/api.yaml b/config/routes/api.yaml index 5f38b6e4..32082547 100644 --- a/config/routes/api.yaml +++ b/config/routes/api.yaml @@ -211,3 +211,7 @@ api_cust_vehicle_remove: controller: App\Controller\APIController::removeVehicle methods: [POST] +api_completed_job_orders: + path: /api/job_orders/completed + controller: App\Controller\APIController::getCompletedJobOrders + methods: [GET] diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 78659965..aab904ab 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -3776,6 +3776,49 @@ class APIController extends Controller implements LoggedController return $res->getReturnResponse(); } + public function getCompletedJobOrders(Request $req, EntityManagerInterface $em, RiderTracker $rt) + { + $required_params = []; + $res = $this->checkParamsAndKey($req, $em, $required_params); + 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(); + } + + $completed_jos = $this->getCompletedJOs($cust, $em); + + // initialize data + $jo_data = []; + foreach ($completed_jos as $jo) + { + $jo_data[] = $this->generateJobOrderData($req, $jo, $rt); + } + + $data = [ + 'completed_job_orders' => $jo_data, + ]; + + $res->setData($data); + + return $res->getReturnResponse(); + } + + protected function getCompletedJOs($cust, EntityManagerInterface $em) + { + $completed_jos = $em->getRepository(JobOrder::class)->findBy([ + 'customer' => $cust, + 'status' => [JOStatus::CANCELLED, JOStatus::FULFILLED], + ], ['date_schedule' => 'desc']); + + return $completed_jos; + } protected function updateWarranty($res, $em, $rt, $trans, $req, $serial, $inv_filename = null, $wcard_filename = null, $logger, $log_data, $user_id, $action, $source) { From 4a1ae91b78ae18210522af222e1702fbbdf51b0c Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 29 Oct 2021 06:07:34 +0000 Subject: [PATCH 17/27] Comment out call for completed job orders. Modify getJOHistory to only retrieve cancelled and fulfilled job orders. #632 --- config/routes/api.yaml | 8 ++++---- src/Controller/APIController.php | 7 +++++++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/config/routes/api.yaml b/config/routes/api.yaml index 32082547..5151a2e6 100644 --- a/config/routes/api.yaml +++ b/config/routes/api.yaml @@ -211,7 +211,7 @@ api_cust_vehicle_remove: controller: App\Controller\APIController::removeVehicle methods: [POST] -api_completed_job_orders: - path: /api/job_orders/completed - controller: App\Controller\APIController::getCompletedJobOrders - methods: [GET] +#api_completed_job_orders: +# path: /api/job_orders/completed +# controller: App\Controller\APIController::getCompletedJobOrders +# methods: [GET] diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index aab904ab..c5afc35a 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -2027,8 +2027,10 @@ class APIController extends Controller implements LoggedController // get job orders $all_jo_data = []; // $jos = $cust->getJobOrders(); + // get the fulfilled and cancelled job orders, since ongoing jos are not yet part of history $jos = $em->getRepository(JobOrder::class)->findBy([ 'customer' => $cust, + 'status' => [JOStatus::CANCELLED, JOStatus::FULFILLED] ], ['date_schedule' => 'DESC']); foreach ($jos as $jo) { @@ -3776,6 +3778,9 @@ class APIController extends Controller implements LoggedController return $res->getReturnResponse(); } + // commenting it out. Modify the getJOHistory instead to just get the fulfilled + // and cancelled job orders, since ongoing is not yet part of history + /* public function getCompletedJobOrders(Request $req, EntityManagerInterface $em, RiderTracker $rt) { $required_params = []; @@ -3819,6 +3824,8 @@ class APIController extends Controller implements LoggedController return $completed_jos; } + */ + protected function updateWarranty($res, $em, $rt, $trans, $req, $serial, $inv_filename = null, $wcard_filename = null, $logger, $log_data, $user_id, $action, $source) { From 5c61e5ebead41afdd093c080caf5bc92533f8675 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 29 Oct 2021 08:24:42 +0000 Subject: [PATCH 18/27] Add saving of landmark, if provided. #632 --- src/Controller/APIController.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index c5afc35a..e2e60b22 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -2711,6 +2711,9 @@ class APIController extends Controller implements LoggedController // instructions $instructions = $req->request->get('delivery_instructions', ''); + // landmark + $landmark = $req->request->get('landmark', ''); + // longitude and latitude $long = $req->request->get('long'); $lat = $req->request->get('lat'); @@ -2796,7 +2799,8 @@ class APIController extends Controller implements LoggedController // TODO: error check for valid mode of payment ->setModeOfPayment($req->request->get('mode_of_payment')) ->setAdvanceOrder($flag_advance_order) - ->setStatusAutoAssign(AutoAssignStatus::NOT_ASSIGNED); + ->setStatusAutoAssign(AutoAssignStatus::NOT_ASSIGNED) + ->setLandmark($landmark); // customer // $cust = $this->session->getCustomer(); From 4ce09e967126c8898c1c0060ed6e310b31cad7fa Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Wed, 3 Nov 2021 06:27:36 +0000 Subject: [PATCH 19/27] Change return response for locationSupport. #632 --- src/Controller/APIController.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index e2e60b22..02982abd 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -2288,6 +2288,13 @@ class APIController extends Controller implements LoggedController ]; $res->setData($data); + // check if is_covered is false. If so, we need to set the error part in the response + if (!$is_covered) + { + $res->setError(true) + ->setErrorMessage('Oops! Our service is limited to some areas in Metro Manila, Laguna, and Baguio only. We will update you as soon as we are able to cover your area'); + } + return $res->getReturnResponse(); } From 12c85e5cbbb1ac4b3a64825ae9e0e9ab8a22ae2b Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Wed, 3 Nov 2021 07:02:26 +0000 Subject: [PATCH 20/27] Fix issue when fulfiling a JO in admin panel. #632 --- src/Service/JobOrderHandler/ResqJobOrderHandler.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index ba7125f0..8475484f 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -1045,10 +1045,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface } } - $obj->fulfill(); - if (empty($error_array)) { + $obj->fulfill(); + // the event $event = new JOEvent(); $event->setDateHappen(new DateTime()) @@ -1134,6 +1134,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface if (!empty($phone_number)) $this->sendSMSToCustomer($phone_number); } + + return $error_array; } // cancel job order From 8d5b67b020560e79826cd522e17329c2dc47c759 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Wed, 3 Nov 2021 07:18:57 +0000 Subject: [PATCH 21/27] Fix setting of landmark if no landmark is received. #632 --- src/Controller/APIController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 02982abd..c962a2cd 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -2719,7 +2719,7 @@ class APIController extends Controller implements LoggedController $instructions = $req->request->get('delivery_instructions', ''); // landmark - $landmark = $req->request->get('landmark', ''); + $landmark = $req->request->get('landmark', ' '); // longitude and latitude $long = $req->request->get('long'); From c10864722273c59631f45d1c9457f9120beb1d35 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 18 Nov 2021 06:49:00 +0000 Subject: [PATCH 22/27] Add comment to response for getJOHistory. #632 --- src/Controller/APIController.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index c962a2cd..405e38a8 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -2062,6 +2062,7 @@ class APIController extends Controller implements LoggedController // check if jo has rider rating set to true $has_rider_rating = $jo->hasRiderRating(); $rating = 0; + $comment = ''; if ($rider != null) { $jo_data['rider'] = $rider->getFullName(); @@ -2072,12 +2073,16 @@ class APIController extends Controller implements LoggedController $jo_rating = $jo->getRating(); if ($jo_rating != null) $rating = $jo_rating->getRating(); + + // get comment + $comment = $jo_rating->getComment(); } } // rider rating for jo $jo_data['has_rider_rating'] = $has_rider_rating; $jo_data['rider_rating'] = $rating; + $jo_data['comment'] = $comment; // invoice items $items = []; From 280a7c9c8fb5c9f473014e15e171e2e66e687a40 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Thu, 18 Nov 2021 07:06:29 +0000 Subject: [PATCH 23/27] Fix issue found during testing. #632 --- src/Controller/APIController.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 405e38a8..360f56ad 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -2072,10 +2072,12 @@ class APIController extends Controller implements LoggedController { $jo_rating = $jo->getRating(); if ($jo_rating != null) + { $rating = $jo_rating->getRating(); - // get comment - $comment = $jo_rating->getComment(); + // get comment + $comment = $jo_rating->getComment(); + } } } From 65c0ad1c56ed72fb31772785e3e55a7b4c725485 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Mon, 22 Nov 2021 06:02:50 +0000 Subject: [PATCH 24/27] Add call to get latest job order. #632 --- config/routes/api.yaml | 5 +++ src/Controller/APIController.php | 61 ++++++++++++++++++++++++++------ 2 files changed, 56 insertions(+), 10 deletions(-) diff --git a/config/routes/api.yaml b/config/routes/api.yaml index 5151a2e6..3c4a5b39 100644 --- a/config/routes/api.yaml +++ b/config/routes/api.yaml @@ -211,6 +211,11 @@ api_cust_vehicle_remove: controller: App\Controller\APIController::removeVehicle methods: [POST] +api_latest_job_order: + path: /api/job_order/latest + controller: App\Controller\APIController::getLatestJobOrder + methods: [GET] + #api_completed_job_orders: # path: /api/job_orders/completed # controller: App\Controller\APIController::getCompletedJobOrders diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 360f56ad..8e268e31 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -1915,18 +1915,18 @@ class APIController extends Controller implements LoggedController { $status = $jo->getStatus(); - $dest = $jo->getCoordinates(); + $dest = $jo->getCoordinates(); - $jo_data = [ - 'id' => $jo->getID(), + $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(), + '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), ]; @@ -1943,6 +1943,14 @@ class APIController extends Controller implements LoggedController 'warranty' => $warranty, ]; + // customer information + $customer = $jo->getCustomer(); + $jo_data['customer'] = [ + 'first_name' => $customer->getFirstName(), + 'last_name' => $customer->getLastName(), + 'mobile_number' => $customer->getPhoneMobile(), + ]; + // rider $rider = $jo->getRider(); if ($rider != null) @@ -3796,6 +3804,39 @@ class APIController extends Controller implements LoggedController return $res->getReturnResponse(); } + public function getLatestJobOrder(EntityManagerInterface $em, Request $req, RiderTracker $rt) + { + // 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 the latest job order for customer + $latest_jo = $em->getRepository(JobOrder::class)->findOneBy(['customer' => $cust], ['id' => 'DESC']); + + $jo_data = []; + if ($latest_jo != null) + $jo_data = $this->generateJobOrderData($req, $latest_jo, $rt); + + $data = [ + 'latest_job_order' => $jo_data, + ]; + + $res->setData($data); + + // response + return $res->getReturnResponse(); + } + // commenting it out. Modify the getJOHistory instead to just get the fulfilled // and cancelled job orders, since ongoing is not yet part of history /* From 1030b1934e922874751a6055b79e65269e676b14 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Mon, 22 Nov 2021 08:10:12 +0000 Subject: [PATCH 25/27] Fix the response when no latest jo. #632 --- src/Controller/APIController.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 8e268e31..e37278b1 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -3823,9 +3823,12 @@ class APIController extends Controller implements LoggedController // get the latest job order for customer $latest_jo = $em->getRepository(JobOrder::class)->findOneBy(['customer' => $cust], ['id' => 'DESC']); - $jo_data = []; + $jo_data = null; if ($latest_jo != null) + { + // TODO: clean the response up to just return what is needed $jo_data = $this->generateJobOrderData($req, $latest_jo, $rt); + } $data = [ 'latest_job_order' => $jo_data, From ca21fcd5c924bf78cc8a13ca22c06bd842e374af Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Mon, 22 Nov 2021 10:13:24 +0000 Subject: [PATCH 26/27] Add landmark to response for latest jo. #632 --- src/Controller/APIController.php | 100 ++++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 1 deletion(-) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index e37278b1..9216e626 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -3827,7 +3827,7 @@ class APIController extends Controller implements LoggedController if ($latest_jo != null) { // TODO: clean the response up to just return what is needed - $jo_data = $this->generateJobOrderData($req, $latest_jo, $rt); + $jo_data = $this->generateLatestJobOrderData($req, $latest_jo, $rt); } $data = [ @@ -4486,4 +4486,102 @@ class APIController extends Controller implements LoggedController return $time_selected; } + + protected function generateLatestJobOrderData($req, $jo, $rt) + { + $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), + 'landmark' => $jo->getLandmark(), + ]; + + // 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) + { + // 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; + } } From 9c73a18b2e1b6a13c6885789665a0347f190e563 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 23 Nov 2021 02:50:49 +0000 Subject: [PATCH 27/27] Add customer information to latest job order. #632 --- src/Controller/APIController.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Controller/APIController.php b/src/Controller/APIController.php index 9216e626..0502bc17 100644 --- a/src/Controller/APIController.php +++ b/src/Controller/APIController.php @@ -4520,6 +4520,14 @@ class APIController extends Controller implements LoggedController 'warranty' => $warranty, ]; + // customer information + $customer = $jo->getCustomer(); + $jo_data['customer'] = [ + 'first_name' => $customer->getFirstName(), + 'last_name' => $customer->getLastName(), + 'mobile_number' => $customer->getPhoneMobile(), + ]; + // rider $rider = $jo->getRider(); if ($rider != null)