Modify setting of JO object. #591
This commit is contained in:
parent
5cfbb112a4
commit
a28b7ec6d0
1 changed files with 75 additions and 114 deletions
|
|
@ -353,9 +353,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$this->validateJobOrder($req, $error_array);
|
$this->validateJobOrder($req, $error_array);
|
||||||
if (empty($error_array))
|
if (empty($error_array))
|
||||||
{
|
{
|
||||||
// get customer vehicle
|
$this->setJobOrderObject($em, $req, $jo, JOStatus::PENDING);
|
||||||
$cust_vehicle = $em->getRepository(CustomerVehicle::class)->find($req->request->get('customer_vehicle'));
|
|
||||||
$this->setJobOrderObject($req, $jo, $cust_vehicle);
|
|
||||||
|
|
||||||
// call service to generate invoice
|
// call service to generate invoice
|
||||||
$invoice_items = $req->request->get('invoice_items', []);
|
$invoice_items = $req->request->get('invoice_items', []);
|
||||||
|
|
@ -437,11 +435,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$this->validateJobOrder($req, $error_array);
|
$this->validateJobOrder($req, $error_array);
|
||||||
if (empty($error_array))
|
if (empty($error_array))
|
||||||
{
|
{
|
||||||
// get customer vehicle
|
$this->setJobOrderObject($em, $req, $obj, $obj->getStatus());
|
||||||
$cust_vehicle = $em->getRepository(CustomerVehicle::class)->find($req->request->get('customer_vehicle'));
|
|
||||||
// TODO: check status before saving since JO might already
|
|
||||||
// have a status that needs to be retained
|
|
||||||
$this->setJobOrderObject($req, $obj, $cust_vehicle);
|
|
||||||
|
|
||||||
// did they change invoice?
|
// did they change invoice?
|
||||||
$invoice_items = $req->request->get('invoice_items', []);
|
$invoice_items = $req->request->get('invoice_items', []);
|
||||||
|
|
@ -492,7 +486,6 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$em = $this->em;
|
$em = $this->em;
|
||||||
$obj = $em->getRepository(JobOrder::class)->find($id);
|
$obj = $em->getRepository(JobOrder::class)->find($id);
|
||||||
$processor = $obj->getProcessedBy();
|
$processor = $obj->getProcessedBy();
|
||||||
$user = $this->security->getUser();;
|
|
||||||
|
|
||||||
// check if we're the one processing, return error otherwise
|
// check if we're the one processing, return error otherwise
|
||||||
if ($processor == null)
|
if ($processor == null)
|
||||||
|
|
@ -516,87 +509,23 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
// $error_array['dispatch'] = 'Could not dispatch. Job Order is not pending.';
|
// $error_array['dispatch'] = 'Could not dispatch. Job Order is not pending.';
|
||||||
}
|
}
|
||||||
|
|
||||||
// check if lat and lng are provided
|
// validate
|
||||||
if (empty($req->request->get('coord_lng')) || empty($req->request->get('coord_lat')))
|
$this->validateJobOrder($req, $error_array);
|
||||||
{
|
|
||||||
$error_array['coordinates'] = 'No map coordinates provided. Please click on a location on the map.';
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if hub is set
|
// check if hub is set
|
||||||
if (empty($req->request->get('hub')))
|
if (empty($req->request->get('hub')))
|
||||||
{
|
|
||||||
$error_array['hub'] = 'No hub selected.';
|
$error_array['hub'] = 'No hub selected.';
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// get hub
|
// get hub
|
||||||
$hub = $em->getRepository(Hub::class)->find($req->request->get('hub'));
|
$hub = $em->getRepository(Hub::class)->find($req->request->get('hub'));
|
||||||
|
|
||||||
if (empty($hub))
|
if (empty($hub))
|
||||||
{
|
|
||||||
$error_array['hub'] = 'Invalid hub specified.';
|
$error_array['hub'] = 'Invalid hub specified.';
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// check facilitated type
|
|
||||||
$fac_type = $req->request->get('facilitated_type');
|
|
||||||
if (!empty($fac_type))
|
|
||||||
{
|
|
||||||
if (!FacilitatedType::validate($fac_type))
|
|
||||||
$fac_type = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
$fac_type = null;
|
|
||||||
|
|
||||||
// check facilitated by
|
|
||||||
$fac_by_id = $req->request->get('facilitated_by');
|
|
||||||
$fac_by = null;
|
|
||||||
if (!empty($fac_by_id))
|
|
||||||
{
|
|
||||||
$fac_by = $em->getRepository(Hub::class)->find($fac_by_id);
|
|
||||||
if (empty($fac_by))
|
|
||||||
$fac_by = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// check if landmark is set
|
|
||||||
if (empty($req->request->get('landmark')))
|
|
||||||
$error_array['landmark'] = 'Landmark is required.';
|
|
||||||
|
|
||||||
// check if customer is not willing to wait
|
|
||||||
$will_wait = $req->request->get('flag_willing_to_wait');
|
|
||||||
$reason = '';
|
|
||||||
$more_reason = '';
|
|
||||||
if ($will_wait == WillingToWaitContent::NOT_WILLING_TO_WAIT)
|
|
||||||
{
|
|
||||||
// get the reason and text
|
|
||||||
$reason = $req->request->get('no_wait_reason');
|
|
||||||
$more_reason = $req->request->get('not_wait_notes');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (empty($error_array))
|
if (empty($error_array))
|
||||||
{
|
{
|
||||||
// coordinates
|
$this->setJobOrderObject($em, $req, $obj, JOStatus::RIDER_ASSIGN);
|
||||||
$point = new Point($req->request->get('coord_lng'), $req->request->get('coord_lat'));
|
|
||||||
|
|
||||||
// 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($req->request->get('service_type'))
|
|
||||||
->setWarrantyClass($req->request->get('warranty_class'))
|
|
||||||
->setSource($req->request->get('source'))
|
|
||||||
->setStatus(JOStatus::RIDER_ASSIGN)
|
|
||||||
->setDeliveryInstructions($req->request->get('delivery_instructions'))
|
|
||||||
->setTier1Notes($req->request->get('tier1_notes'))
|
|
||||||
->setTier2Notes($req->request->get('tier2_notes'))
|
|
||||||
->setDeliveryAddress($req->request->get('delivery_address'))
|
|
||||||
->setFacilitatedType($fac_type)
|
|
||||||
->setFacilitatedBy($fac_by)
|
|
||||||
->setHub($hub)
|
|
||||||
->setLandmark($req->request->get('landmark'))
|
|
||||||
->setWillWait($req->request->get('flag_willing_to_wait'))
|
|
||||||
->setReasonNotWait($reason)
|
|
||||||
->setNotWaitingNotes($more_reason);
|
|
||||||
|
|
||||||
// validate
|
// validate
|
||||||
$errors = $this->validator->validate($obj);
|
$errors = $this->validator->validate($obj);
|
||||||
|
|
@ -605,22 +534,17 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
foreach ($errors as $error) {
|
foreach ($errors as $error) {
|
||||||
$error_array[$error->getPropertyPath()] = $error->getMessage();
|
$error_array[$error->getPropertyPath()] = $error->getMessage();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($error_array))
|
// check if any errors were found
|
||||||
{
|
if (!empty($error_array)) {
|
||||||
// the event
|
// return validation failure response
|
||||||
$event = new JOEvent();
|
return $this->json([
|
||||||
$event->setDateHappen(new DateTime())
|
'success' => false,
|
||||||
->setTypeID(JOEventType::HUB_ASSIGN)
|
'errors' => $error_array
|
||||||
->setJobOrder($obj);
|
], 422);
|
||||||
|
|
||||||
if ($user != null)
|
|
||||||
{
|
|
||||||
$event->setUser($user);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$em->persist($event);
|
$this->jo_manager->processJobOrderEvents($jo, JOEventType::HUB_ASSIGN);
|
||||||
|
|
||||||
// validated! save the entity
|
// validated! save the entity
|
||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
@ -2875,8 +2799,66 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function setJobOrderObject(Request $req, JobOrder $jo, $cust_vehicle)
|
protected function setJobOrderObject(EntityManagerInterface $em, Request $req, JobOrder $jo, $jo_status)
|
||||||
{
|
{
|
||||||
|
// new job order
|
||||||
|
if ($jo_status == JOStatus::PENDING)
|
||||||
|
{
|
||||||
|
// these are fields that are only set when new job order
|
||||||
|
// get customer vehicle
|
||||||
|
$cust_vehicle = $em->getRepository(CustomerVehicle::class)->find($req->request->get('customer_vehicle'));
|
||||||
|
|
||||||
|
$jo->setCustomer($cust_vehicle->getCustomer())
|
||||||
|
->setCustomerVehicle($cust_vehicle)
|
||||||
|
->setORName($req->request->get('or_name'))
|
||||||
|
->setPromoDetail($req->request->get('promo_detail'));
|
||||||
|
|
||||||
|
// get current user
|
||||||
|
$user = $this->security->getUser();
|
||||||
|
if ($user != null)
|
||||||
|
$jo->setCreatedBy($user);
|
||||||
|
|
||||||
|
// check if reference JO is set
|
||||||
|
if (!empty($req->request->get('ref_jo'))) {
|
||||||
|
// get reference JO
|
||||||
|
$ref_jo = $em->getRepository(JobOrder::class)->find($req->request->get('ref_jo'));
|
||||||
|
$jo->setReferenceJO($ref_jo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// dispatch/assign hub
|
||||||
|
if ($jo_status == JOStatus::RIDER_ASSIGN)
|
||||||
|
{
|
||||||
|
// this means JO is in dispatch/assign hub
|
||||||
|
// for dispatch, set the hub and facilitated by and facilitated type
|
||||||
|
// check facilitated type
|
||||||
|
$fac_type = $req->request->get('facilitated_type');
|
||||||
|
if (!empty($fac_type))
|
||||||
|
{
|
||||||
|
if (!FacilitatedType::validate($fac_type))
|
||||||
|
$fac_type = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$fac_type = null;
|
||||||
|
|
||||||
|
// check facilitated by
|
||||||
|
$fac_by_id = $req->request->get('facilitated_by');
|
||||||
|
$fac_by = null;
|
||||||
|
if (!empty($fac_by_id))
|
||||||
|
{
|
||||||
|
$fac_by = $em->getRepository(Hub::class)->find($fac_by_id);
|
||||||
|
if (empty($fac_by))
|
||||||
|
$fac_by = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get hub
|
||||||
|
$hub = $em->getRepository(Hub::class)->find($req->request->get('hub'));
|
||||||
|
|
||||||
|
$jo->setFacilitatedType($fac_type)
|
||||||
|
->setFacilitatedBy($fac_by)
|
||||||
|
->setHub($hub);
|
||||||
|
}
|
||||||
|
|
||||||
// check if customer is not willing to wait
|
// check if customer is not willing to wait
|
||||||
$will_wait = $req->request->get('flag_willing_to_wait');
|
$will_wait = $req->request->get('flag_willing_to_wait');
|
||||||
$reason = '';
|
$reason = '';
|
||||||
|
|
@ -2908,40 +2890,19 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
->setAdvanceOrder($req->request->get('flag_advance') ?? false)
|
->setAdvanceOrder($req->request->get('flag_advance') ?? false)
|
||||||
->setServiceType($stype)
|
->setServiceType($stype)
|
||||||
->setWarrantyClass($req->request->get('warranty_class'))
|
->setWarrantyClass($req->request->get('warranty_class'))
|
||||||
->setCustomer($cust_vehicle->getCustomer())
|
|
||||||
->setCustomerVehicle($cust_vehicle)
|
|
||||||
->setSource($req->request->get('source'))
|
->setSource($req->request->get('source'))
|
||||||
->setDeliveryInstructions($req->request->get('delivery_instructions'))
|
->setDeliveryInstructions($req->request->get('delivery_instructions'))
|
||||||
->setTier1Notes($req->request->get('tier1_notes'))
|
->setTier1Notes($req->request->get('tier1_notes'))
|
||||||
->setTier2Notes($req->request->get('tier2_notes'))
|
->setTier2Notes($req->request->get('tier2_notes'))
|
||||||
->setDeliveryAddress($req->request->get('delivery_address'))
|
->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'))
|
->setModeOfPayment($req->request->get('mode_of_payment'))
|
||||||
->setLandmark($req->request->get('landmark'))
|
->setLandmark($req->request->get('landmark'))
|
||||||
->setWillWait($req->request->get('flag_willing_to_wait'))
|
->setWillWait($req->request->get('flag_willing_to_wait'))
|
||||||
->setReasonNotWait($reason)
|
->setReasonNotWait($reason)
|
||||||
->setNotWaitingNotes($more_reason)
|
->setNotWaitingNotes($more_reason)
|
||||||
->setNoTradeInReason($no_trade_in_reason);
|
->setNoTradeInReason($no_trade_in_reason)
|
||||||
|
->setStatus($jo_status);
|
||||||
|
|
||||||
// check if jo status is null
|
|
||||||
if ($jo->getStatus() == null)
|
|
||||||
{
|
|
||||||
// new JO
|
|
||||||
$jo->setStatus(JOStatus::PENDING);
|
|
||||||
}
|
|
||||||
|
|
||||||
// get current user
|
|
||||||
$user = $this->security->getUser();
|
|
||||||
if ($user != null)
|
|
||||||
$jo->setCreatedBy($user);
|
|
||||||
|
|
||||||
// check if reference JO is set
|
|
||||||
if (!empty($req->request->get('ref_jo'))) {
|
|
||||||
// get reference JO
|
|
||||||
$ref_jo = $em->getRepository(JobOrder::class)->find($req->request->get('ref_jo'));
|
|
||||||
$jo->setReferenceJO($ref_jo);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getEditRoute($jo_id, $tier)
|
public function getEditRoute($jo_id, $tier)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue