Add call to remove a vehicle from customer's list of vehicles. #632

This commit is contained in:
Korina Cordero 2021-10-27 06:35:40 +00:00
parent ca3fbc21c8
commit 48aaeddadd
2 changed files with 50 additions and 10 deletions

View file

@ -209,5 +209,5 @@ api_locations:
api_cust_vehicle_remove: api_cust_vehicle_remove:
path: /api/vehicles/{id}/remove path: /api/vehicles/{id}/remove
controller: App\Controller\APIController::removeVehicle controller: App\Controller\APIController::removeVehicle
methods: [DELETE] methods: [POST]

View file

@ -742,7 +742,9 @@ class APIController extends Controller implements LoggedController
// vehicles // vehicles
$cv_list = []; $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) foreach ($cvs as $cv)
{ {
$battery_id = null; $battery_id = null;
@ -3538,10 +3540,9 @@ class APIController extends Controller implements LoggedController
return $res->getReturnResponse(); return $res->getReturnResponse();
} }
public function getAllOngoingJobOrders(Request $req, RiderTracker $rt) public function getAllOngoingJobOrders(EntityManagerInterface $em, Request $req, RiderTracker $rt)
{ {
$required_params = []; $required_params = [];
$em = $this->getDoctrine()->getManager();
$res = $this->checkParamsAndKey($req, $em, $required_params); $res = $this->checkParamsAndKey($req, $em, $required_params);
if ($res->isError()) if ($res->isError())
return $res->getReturnResponse(); return $res->getReturnResponse();
@ -3573,10 +3574,9 @@ class APIController extends Controller implements LoggedController
return $res->getReturnResponse(); return $res->getReturnResponse();
} }
public function getOngoingJobOrderCount(Request $req) public function getOngoingJobOrderCount(EntityManagerInterface $em, Request $req)
{ {
$required_params = []; $required_params = [];
$em = $this->getDoctrine()->getManager();
$res = $this->checkParamsAndKey($req, $em, $required_params); $res = $this->checkParamsAndKey($req, $em, $required_params);
if ($res->isError()) if ($res->isError())
return $res->getReturnResponse(); return $res->getReturnResponse();
@ -3601,7 +3601,7 @@ class APIController extends Controller implements LoggedController
return $res->getReturnResponse(); return $res->getReturnResponse();
} }
public function addLocation(Request $req) public function addLocation(EntityManagerInterface $em, Request $req)
{ {
$required_params = [ $required_params = [
'name', 'name',
@ -3609,7 +3609,6 @@ class APIController extends Controller implements LoggedController
'longitude', 'longitude',
'latitude', 'latitude',
]; ];
$em = $this->getDoctrine()->getManager();
$res = $this->checkParamsAndKey($req, $em, $required_params); $res = $this->checkParamsAndKey($req, $em, $required_params);
if ($res->isError()) if ($res->isError())
return $res->getReturnResponse(); return $res->getReturnResponse();
@ -3658,10 +3657,9 @@ class APIController extends Controller implements LoggedController
return $res->getReturnResponse(); return $res->getReturnResponse();
} }
public function getLocations(Request $req) public function getLocations(EntityManagerInterface $em, Request $req)
{ {
$required_params = []; $required_params = [];
$em = $this->getDoctrine()->getManager();
$res = $this->checkParamsAndKey($req, $em, $required_params); $res = $this->checkParamsAndKey($req, $em, $required_params);
if ($res->isError()) if ($res->isError())
return $res->getReturnResponse(); return $res->getReturnResponse();
@ -3692,6 +3690,48 @@ class APIController extends Controller implements LoggedController
return $res->getReturnResponse(); 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, protected function updateWarranty($res, $em, $rt, $trans, $req, $serial, $inv_filename = null, $wcard_filename = null,
$logger, $log_data, $user_id, $action, $source) $logger, $log_data, $user_id, $action, $source)
{ {