Fix for the JO event logs and status issues when editing a JO. #377
This commit is contained in:
parent
ea7908a18e
commit
db46e5134f
2 changed files with 101 additions and 2 deletions
|
|
@ -98,7 +98,7 @@ class JobOrderController extends Controller
|
||||||
$this->denyAccessUnlessGranted('jo_open.edit', null, 'No access.');
|
$this->denyAccessUnlessGranted('jo_open.edit', null, 'No access.');
|
||||||
|
|
||||||
$error_array = [];
|
$error_array = [];
|
||||||
$result = $jo_handler->generateJobOrder($req, $id);
|
$result = $jo_handler->updateJobOrder($req, $id);
|
||||||
|
|
||||||
$error_array = $result['error_array'];
|
$error_array = $result['error_array'];
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -266,7 +266,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
return $params;
|
return $params;
|
||||||
}
|
}
|
||||||
|
|
||||||
// creates/updates job order
|
// creates job order
|
||||||
public function generateJobOrder(Request $req, $id)
|
public function generateJobOrder(Request $req, $id)
|
||||||
{
|
{
|
||||||
// initialize error list
|
// initialize error list
|
||||||
|
|
@ -415,6 +415,105 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// updates job order
|
||||||
|
public function updateJobOrder(Request $req, $id)
|
||||||
|
{
|
||||||
|
$em = $this->em;
|
||||||
|
|
||||||
|
$obj = $em->getRepository(JobOrder::class)->find($id);
|
||||||
|
|
||||||
|
// initialize error list
|
||||||
|
$error_array = [];
|
||||||
|
|
||||||
|
// make sure this object exists
|
||||||
|
if (empty($obj))
|
||||||
|
throw $this->createNotFoundException('The item does not exist');
|
||||||
|
|
||||||
|
// check if lat and lng are provided
|
||||||
|
if (empty($req->request->get('coord_lng')) || empty($req->request->get('coord_lat'))) {
|
||||||
|
$error_array['coordinates'] = 'No map coordinates provided. Please click on a location on the map.';
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
$obj->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'))
|
||||||
|
->setSource($req->request->get('source'))
|
||||||
|
->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'));
|
||||||
|
|
||||||
|
// did they change invoice?
|
||||||
|
$invoice_items = $req->request->get('invoice_items', []);
|
||||||
|
$promo_id = $req->request->get('invoice_promo');
|
||||||
|
$invoice_change = $req->request->get('invoice_change', 0);
|
||||||
|
if ($invoice_change)
|
||||||
|
{
|
||||||
|
$this->ic->generateInvoiceCriteria($obj, $promo_id, $invoice_items, $error_array);
|
||||||
|
}
|
||||||
|
|
||||||
|
// validate
|
||||||
|
$errors = $this->validator->validate($obj);
|
||||||
|
|
||||||
|
// add errors to list
|
||||||
|
foreach ($errors as $error) {
|
||||||
|
$error_array[$error->getPropertyPath()] = $error->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
// check if any errors were found
|
||||||
|
if (!empty($error_array)) {
|
||||||
|
// return validation failure response
|
||||||
|
return $this->json([
|
||||||
|
'success' => false,
|
||||||
|
'errors' => $error_array
|
||||||
|
], 422);
|
||||||
|
}
|
||||||
|
|
||||||
|
// the event
|
||||||
|
$event = new JOEvent();
|
||||||
|
$event->setDateHappen(new DateTime())
|
||||||
|
->setTypeID(JOEventType::OPEN_EDIT)
|
||||||
|
->setJobOrder($obj);
|
||||||
|
|
||||||
|
if ($user != null)
|
||||||
|
{
|
||||||
|
$event->setUser($user);
|
||||||
|
}
|
||||||
|
|
||||||
|
$em->persist($event);
|
||||||
|
|
||||||
|
// validated! save the entity
|
||||||
|
$em->flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
$data['error_array'] = $error_array;
|
||||||
|
|
||||||
|
if ($obj != null)
|
||||||
|
{
|
||||||
|
$data['job_order'] = $obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $data;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// dispatch job order
|
// dispatch job order
|
||||||
public function dispatchJobOrder(Request $req, int $id, MQTTClient $mclient)
|
public function dispatchJobOrder(Request $req, int $id, MQTTClient $mclient)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue