Add saving of one step job order data. #270
This commit is contained in:
parent
ed2975e8d3
commit
79ab60619b
1 changed files with 104 additions and 0 deletions
|
|
@ -1124,6 +1124,110 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
} else {
|
} else {
|
||||||
if (empty($req->request->get('rider_id'))) {
|
if (empty($req->request->get('rider_id'))) {
|
||||||
$error_array['rider'] = 'No rider selected.';
|
$error_array['rider'] = 'No rider selected.';
|
||||||
|
} else {
|
||||||
|
// get hub
|
||||||
|
$hub = $em->getRepository(Hub::class)->find($req->request->get('hub_id'));
|
||||||
|
|
||||||
|
if (empty($hub)) {
|
||||||
|
$error_array['hub'] = 'Invalid hub specified.';
|
||||||
|
} else {
|
||||||
|
// get rider
|
||||||
|
$rider = $em->getRepository(Rider::class)->find($req->request->get('rider_id'));
|
||||||
|
|
||||||
|
if (empty($rider)) {
|
||||||
|
$error_array['rider'] = 'Invalid rider specified.';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($error_array))
|
||||||
|
{
|
||||||
|
// get current user
|
||||||
|
$user = $this->security->getUser();
|
||||||
|
|
||||||
|
// coordinates
|
||||||
|
$point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat'));
|
||||||
|
|
||||||
|
$stype = $req->request->get('service_type');
|
||||||
|
|
||||||
|
// set and save values
|
||||||
|
$jo->setDateSchedule(DateTime::createFromFormat("d M Y h:i A", $req->request->get('date_schedule_date') . " " . $req->request->get('date_schedule_time')))
|
||||||
|
->setCoordinates($point)
|
||||||
|
->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'))
|
||||||
|
->setTier1Notes($req->request->get('tier1_notes'))
|
||||||
|
->setTier2Notes($req->request->get('tier2_notes'))
|
||||||
|
->setDeliveryAddress($req->request->get('delivery_address'))
|
||||||
|
->setORName($req->request->get('or_name'))
|
||||||
|
->setPromoDetail($req->request->get('promo_detail'))
|
||||||
|
->setModeOfPayment($req->request->get('mode_of_payment'))
|
||||||
|
->setLandmark($req->request->get('landmark'))
|
||||||
|
->setHub($hub)
|
||||||
|
->setRider($rider);
|
||||||
|
|
||||||
|
// check if user is null, meaning call to create came from API
|
||||||
|
if ($user != null)
|
||||||
|
{
|
||||||
|
$jo->setCreatedBy($user);
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if reference JO is set and validate
|
||||||
|
if (!empty($req->request->get('ref_jo'))) {
|
||||||
|
// get reference JO
|
||||||
|
$ref_jo = $em->getRepository(JobOrder::class)->find($req->request->get('ref_jo'));
|
||||||
|
|
||||||
|
if (empty($ref_jo)) {
|
||||||
|
$error_array['ref_jo'] = 'Invalid reference job order specified.';
|
||||||
|
} else {
|
||||||
|
$jo->setReferenceJO($ref_jo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// call service to generate job order and invoice
|
||||||
|
$invoice_items = $req->request->get('invoice_items', []);
|
||||||
|
$promo_id = $req->request->get('invoice_promo');
|
||||||
|
$invoice_change = $req->request->get('invoice_change', 0);
|
||||||
|
|
||||||
|
// check if invoice changed
|
||||||
|
if ($invoice_change)
|
||||||
|
{
|
||||||
|
$this->ic->generateInvoiceCriteria($jo, $promo_id, $invoice_items, $error_array);
|
||||||
|
}
|
||||||
|
|
||||||
|
// validate
|
||||||
|
$errors = $this->validator->validate($jo);
|
||||||
|
|
||||||
|
// add errors to list
|
||||||
|
foreach ($errors as $error) {
|
||||||
|
$error_array[$error->getPropertyPath()] = $error->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if errors are found
|
||||||
|
if (empty($error_array))
|
||||||
|
{
|
||||||
|
// validated, no error. save the job order
|
||||||
|
$em->persist($jo);
|
||||||
|
|
||||||
|
// the event
|
||||||
|
$event = new JOEvent();
|
||||||
|
$event->setDateHappen(new DateTime())
|
||||||
|
->setTypeID(JOEventType::CREATE)
|
||||||
|
->setJobOrder($jo);
|
||||||
|
|
||||||
|
if ($user != null)
|
||||||
|
{
|
||||||
|
$event->setUser($user);
|
||||||
|
}
|
||||||
|
|
||||||
|
$em->persist($event);
|
||||||
|
$em->flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue