From 48aaeddadd68d1ebd4f96b67afa0ff88a3d96020 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Wed, 27 Oct 2021 06:35:40 +0000 Subject: [PATCH] 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) {