From 9efc0e3a75b6cb7ecea0b220e606899afbad75b2 Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Tue, 26 Nov 2019 07:53:31 +0000 Subject: [PATCH] Add CustomerController to CAPI. #281 --- config/api_acl.yaml | 5 + src/Controller/CAPI/CustomerController.php | 114 +++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 src/Controller/CAPI/CustomerController.php diff --git a/config/api_acl.yaml b/config/api_acl.yaml index 39557cf6..2ff18704 100644 --- a/config/api_acl.yaml +++ b/config/api_acl.yaml @@ -50,3 +50,8 @@ access_keys: acls: - id: privacypolicy.find label: Find Privacy Policy + - id: customer + label: Customer + acls: + - id: customer.register + label: Register Customer diff --git a/src/Controller/CAPI/CustomerController.php b/src/Controller/CAPI/CustomerController.php new file mode 100644 index 00000000..9c07b7f9 --- /dev/null +++ b/src/Controller/CAPI/CustomerController.php @@ -0,0 +1,114 @@ +acl_gen = $acl_gen; + } + + public function register(Request $req, EntityManagerInterface $em) + { + // required parameters + $params = [ + 'first_name', + 'last_name', + 'mobile_number', + 'make_id', + 'model_year', + 'plate_number', + 'color', + 'condition', + 'fuel_type', + ]; + + $msg = $this->checkRequiredParameters($req, $params); + error_log('msg - ' . $msg); + if ($msg) + return new APIResponse(false, $msg); + + $first_name = $req->request->get('first_name'); + $last_name = $req->request->get('last_name'); + $mobile_number = $req->request->get('mobile_number'); + + $make_id = $req->request->get('make_id'); + $model_year = $req->request->get('model_year'); + $plate_number = $this->cleanPlateNumber($req->request->get('plate_number')); + $color = $req->request->get('color'); + $condition = $req->request->get('condition'); + $fuel_type = $req->request->get('fuel_type'); + + // check if vehicle exists + $vehicle = $em->getRepository(Vehicle::class)->find($make_id); + if ($vehicle == null) + return new APIResponse(false, 'Invalid vehicle make.'); + + // check if customer already exists + $customers = $em->getRepository(Customer::class)->findBy(['phone_mobile' => $number]); + if (!empty($customers)) + { + foreach($customers as $customer) + { + // get customer vehicles for customer + $c_vehicles = $customer->getVehicles(); + + $cv_found = false; + if (!empty($c_vehicles)) + { + // check if plate number of customer vehicle matches plate number + foreach($c_vehicles as $c_vehicle) + { + $clean_cv_plate = $this->cleanPlateNumber($c_vehicle->getPlateNumber()); + + // check if it's already there + if ($clean_cv_plate == $plate_number) + { + // customer and customer vehicle already exists + $cv_found = true; + break; + } + } + } + + // if there is a customer vehicle matched + if ($cv_found) + { + // vehicle found, do nothing + // TODO: do we need to report that vehicle was found + } + else + { + // customer already exists but not customer vehicle + // add customer vehicle + + } + } + } + } + + protected function cleanPlateNumber($plate) + { + // remove spaces and make upper case + return strtoupper(str_replace(' ', '', $plate)); + } + +}