Add adding of customer and customer vehicle from one step form. #319
This commit is contained in:
parent
6cdb5d0312
commit
a3e40de170
5 changed files with 84 additions and 15 deletions
|
|
@ -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)) {
|
||||
|
|
|
|||
|
|
@ -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'))
|
||||
|
|
|
|||
|
|
@ -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 = [];
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@
|
|||
<div class="col-lg-3">
|
||||
<label data-field="cv_plate">Plate #</label>
|
||||
<input type="text" name="cv_plate" id="cv-plate" class="form-control m-input cv_field" value="{{ obj.getCustomerVehicle.getPlateNumber|default('') }}" data-vehicle-field="1" disabled>
|
||||
<div class="form-control-feedback hide" data-field="cv_color"></div>
|
||||
<div class="form-control-feedback hide" data-field="cv_plate"></div>
|
||||
</div>
|
||||
<!--
|
||||
<div class="col-lg-3">
|
||||
|
|
|
|||
Loading…
Reference in a new issue