diff --git a/src/Controller/JobOrderController.php b/src/Controller/JobOrderController.php index 96d8887b..d27e9a0d 100644 --- a/src/Controller/JobOrderController.php +++ b/src/Controller/JobOrderController.php @@ -864,7 +864,7 @@ class JobOrderController extends Controller // initialize error list $error_array = []; $id = -1; - $error_array = $jo_handler->generateOneStepJobOrder($req, $id); + $error_array = $jo_handler->processOneStepJobOrder($req, $id); // check if any errors were found if (!empty($error_array)) { diff --git a/src/Service/JobOrderHandler/CMBJobOrderHandler.php b/src/Service/JobOrderHandler/CMBJobOrderHandler.php index c43a25d6..f98b9f43 100644 --- a/src/Service/JobOrderHandler/CMBJobOrderHandler.php +++ b/src/Service/JobOrderHandler/CMBJobOrderHandler.php @@ -19,11 +19,13 @@ use App\Entity\JobOrder; use App\Entity\BatteryManufacturer; use App\Entity\JOEvent; use App\Entity\CustomerVehicle; +use App\Entity\Vehicle; use App\Entity\Hub; use App\Entity\Promo; use App\Entity\Rider; use App\Entity\JORejection; use App\Entity\Warranty; +use App\Entity\Customer; use App\Ramcar\InvoiceCriteria; use App\Ramcar\CMBServiceType; @@ -387,7 +389,7 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface return $error_array; } - public function generateOneStepJobOrder(Request $req, $id) + public function processOneStepJobOrder(Request $req, $id) { // initialize error list $error_array = []; @@ -406,16 +408,85 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface $error_array['coordinates'] = 'No map coordinates provided. Please click on a location on the map.'; } - // check if customer vehicle is set - if (empty($req->request->get('customer_vehicle'))) { - $error_array['customer_vehicle'] = 'No vehicle selected.'; - } else { - // get customer vehicle - $cust_vehicle = $em->getRepository(CustomerVehicle::class)->find($req->request->get('customer_vehicle')); + // check if new customer + if ($req->request->get('new_customer')) + { + // get customer details + $c_first_name = $req->request->get('customer_first_name'); + $c_last_name = $req->request->get('customer_last_name'); + $c_phone_mobile = $req->request->get('customer_phone_mobile'); + $c_phone_landline = $req->request->get('customer_phone_landline'); + $c_phone_office = $req->request->get('customer_phone_office'); + $c_phone_fax = $req->request->get('customer_phone_fax'); + $c_notes = $req->request->get('customer_customer_notes'); - if (empty($cust_vehicle)) { + // get customer vehicle details + $cv_mfg_id = $req->request->get('cv_mfg'); + $cv_make_id = $req->request->get('cv_make'); + $cv_year = $req->request->get('cv_year'); + $cv_plate = $req->request->get('cv_plate'); + + // TODO: need to add validation + + $new_cust = new Customer(); + $new_cv = new CustomerVehicle(); + + // find the vehicle using vid + $new_vehicle = $em->getRepository(Vehicle::class)->find($req->request->get('vid')); + if (empty($new_vehicle)) + { + // TODO: temporary validation $error_array['customer_vehicle'] = 'Invalid vehicle specified.'; } + else + { + + $new_cust->setLastName($c_last_name) + ->setFirstName($c_first_name) + ->setPhoneMobile($c_phone_mobile) + ->setPhoneLandline($c_phone_landline) + ->setPhoneOffice($c_phone_office) + ->setPhoneFax($c_phone_office) + ->setCustomerNotes($c_notes); + + // TODO: set setHasMotoliteBattery to true if battery purchase + $new_cv->setCustomer($new_cust) + ->setVehicle($new_vehicle) + ->setPlateNumber($cv_plate) + ->setModelYear($cv_year) + ->setColor('') + ->setStatusCondition('') + ->setFuelType('') + ->setHasMotoliteBattery(false) + ->setActive(); + + // link JO to new customer + $jo->setCustomer($new_cust); + $jo->setCustomerVehicle($new_cv); + + $em->persist($new_cust); + $em->persist($new_cv); + } + } + else + { + // check if customer vehicle is set + if (empty($req->request->get('customer_vehicle'))) { + $error_array['customer_vehicle'] = 'No vehicle selected.'; + } else + { + // get customer vehicle + $cust_vehicle = $em->getRepository(CustomerVehicle::class)->find($req->request->get('customer_vehicle')); + + if (empty($cust_vehicle)) { + $error_array['customer_vehicle'] = 'Invalid vehicle specified.'; + } + else + { + $jo->setCustomerVehicle($cust_vehicle); + $jo->setCustomer($cust_vehicle->getCustomer()); + } + } } // check if hub AND rider is selected @@ -458,8 +529,6 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface ->setAdvanceOrder($req->request->get('flag_advance') ?? false) ->setServiceType($stype) ->setWarrantyClass($req->request->get('warranty_class')) - ->setCustomer($cust_vehicle->getCustomer()) - ->setCustomerVehicle($cust_vehicle) ->setSource($req->request->get('source')) ->setStatus(JOStatus::ASSIGNED) ->setDeliveryInstructions($req->request->get('delivery_instructions')) diff --git a/src/Service/JobOrderHandler/ResqJobOrderHandler.php b/src/Service/JobOrderHandler/ResqJobOrderHandler.php index 3f6a336c..b67011c0 100644 --- a/src/Service/JobOrderHandler/ResqJobOrderHandler.php +++ b/src/Service/JobOrderHandler/ResqJobOrderHandler.php @@ -1127,7 +1127,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface } - public function generateOneStepJobOrder(Request $req, $id) + public function processOneStepJobOrder(Request $req, $id) { // initialize error list $error_array = []; diff --git a/src/Service/JobOrderHandlerInterface.php b/src/Service/JobOrderHandlerInterface.php index 0e38359d..be1c583c 100644 --- a/src/Service/JobOrderHandlerInterface.php +++ b/src/Service/JobOrderHandlerInterface.php @@ -22,8 +22,8 @@ interface JobOrderHandlerInterface // generate job order public function generateJobOrder(Request $req, int $id); - // generate one step job order - public function generateOneStepJobOrder(Request $req, int $id); + // process one step job order + public function processOneStepJobOrder(Request $req, int $id); // dispatch job order public function dispatchJobOrder(Request $req, int $id, MQTTClient $mclient); diff --git a/templates/job-order/cmb.form.onestep.html.twig b/templates/job-order/cmb.form.onestep.html.twig index fa56f5dc..9e82b3a6 100644 --- a/templates/job-order/cmb.form.onestep.html.twig +++ b/templates/job-order/cmb.form.onestep.html.twig @@ -186,7 +186,7 @@