Refactor editing of job order. #591

This commit is contained in:
Korina Cordero 2021-07-21 07:13:06 +00:00
parent 64bf68e445
commit 5cfbb112a4
3 changed files with 47 additions and 92 deletions

View file

@ -32,7 +32,6 @@ use App\Service\MQTTClient;
use App\Service\GeofenceTracker; use App\Service\GeofenceTracker;
use App\Service\InventoryManager; use App\Service\InventoryManager;
use App\Service\RiderAssignmentHandlerInterface; use App\Service\RiderAssignmentHandlerInterface;
use App\Service\PromoLogger;
use App\Service\HubSelector; use App\Service\HubSelector;
use App\Service\HubDistributor; use App\Service\HubDistributor;
use App\Service\HubFilterLogger; use App\Service\HubFilterLogger;

View file

@ -355,8 +355,6 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
{ {
// get customer vehicle // get customer vehicle
$cust_vehicle = $em->getRepository(CustomerVehicle::class)->find($req->request->get('customer_vehicle')); $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, $jo, $cust_vehicle); $this->setJobOrderObject($req, $jo, $cust_vehicle);
// call service to generate invoice // call service to generate invoice
@ -378,17 +376,21 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
$error_array[$error->getPropertyPath()] = $error->getMessage(); $error_array[$error->getPropertyPath()] = $error->getMessage();
} }
// check if errors are found // check if any errors were found
if (empty($error_array)) if (!empty($error_array)) {
{ // return validation failure response
// validated, no error. save the job order and customer return $this->json([
$em->persist($jo); 'success' => false,
$em->persist($customer); 'errors' => $error_array
], 422);
$this->jo_manager->processJobOrderEvents($jo, JOEventType::CREATE);
$em->flush();
} }
$em->persist($jo);
$em->persist($customer);
$this->jo_manager->processJobOrderEvents($jo, JOEventType::CREATE);
$em->flush();
} }
$data['error_array'] = $error_array; $data['error_array'] = $error_array;
@ -431,69 +433,15 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
if (empty($obj)) if (empty($obj))
throw $this->createNotFoundException('The item does not exist'); throw $this->createNotFoundException('The item does not exist');
// check if lat and lng are provided // validate and set job order object
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.'; if (empty($error_array))
}
// 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 // get customer vehicle
$reason = $req->request->get('no_wait_reason'); $cust_vehicle = $em->getRepository(CustomerVehicle::class)->find($req->request->get('customer_vehicle'));
$more_reason = $req->request->get('not_wait_notes'); // TODO: check status before saving since JO might already
} // have a status that needs to be retained
$this->setJobOrderObject($req, $obj, $cust_vehicle);
// check if service type is battery sales
$stype = $req->request->get('service_type');
$no_trade_in_reason = '';
if ($stype == ServiceType::BATTERY_REPLACEMENT_NEW)
{
// check if trade in
$is_trade_in = $req->request->get('invoice_trade_in_type');
if (empty($is_trade_in))
{
$no_trade_in_reason = $req->request->get('no_trade_in_reason');
if (empty($no_trade_in_reason))
$error_array['no_trade_in_reason'] = 'No trade in reason required.';
}
}
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'));
// 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'))
->setWillWait($req->request->get('flag_willing_to_wait'))
->setReasonNotWait($reason)
->setNotWaitingNotes($more_reason)
->setNoTradeInReason($no_trade_in_reason);
// did they change invoice? // did they change invoice?
$invoice_items = $req->request->get('invoice_items', []); $invoice_items = $req->request->get('invoice_items', []);
@ -521,20 +469,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
], 422); ], 422);
} }
// the event $this->jo_manager->processJobOrderEvents($obj, JOEventType::OPEN_EDIT);
$event = new JOEvent();
$event->setDateHappen(new DateTime())
->setTypeID(JOEventType::OPEN_EDIT)
->setJobOrder($obj);
error_log('open edit?');
if ($user != null)
{
$event->setUser($user);
}
$em->persist($event);
// validated! save the entity // validated! save the entity
$em->flush(); $em->flush();
@ -548,7 +483,6 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
} }
return $data; return $data;
} }
// dispatch job order // dispatch job order
@ -2977,7 +2911,6 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
->setCustomer($cust_vehicle->getCustomer()) ->setCustomer($cust_vehicle->getCustomer())
->setCustomerVehicle($cust_vehicle) ->setCustomerVehicle($cust_vehicle)
->setSource($req->request->get('source')) ->setSource($req->request->get('source'))
->setStatus(JOStatus::PENDING)
->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'))
@ -2991,6 +2924,13 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
->setNotWaitingNotes($more_reason) ->setNotWaitingNotes($more_reason)
->setNoTradeInReason($no_trade_in_reason); ->setNoTradeInReason($no_trade_in_reason);
// check if jo status is null
if ($jo->getStatus() == null)
{
// new JO
$jo->setStatus(JOStatus::PENDING);
}
// get current user // get current user
$user = $this->security->getUser(); $user = $this->security->getUser();
if ($user != null) if ($user != null)

View file

@ -122,7 +122,7 @@ class JobOrderManager
$em->persist($hub_assign_event); $em->persist($hub_assign_event);
} }
} }
// TODO: check for other JO event types // TODO: check for other JO event types. See if all other event types have no special processing
if ($jo_event_type == JOEventType::CANCEL) if ($jo_event_type == JOEventType::CANCEL)
{ {
// add event log for JO // add event log for JO
@ -138,6 +138,22 @@ class JobOrderManager
$em->persist($event); $em->persist($event);
} }
if ($jo_event_type == JOEventType::OPEN_EDIT)
{
// add event log for JO
$event = new JOEvent();
$event->setDateHappen(new DateTime())
->setTypeID($jo_event_type)
->setJobOrder($jo);
$user = $this->security->getUser();
// check if user is User or APIUser
if ($user instanceof User)
$event->setUser($user);
$em->persist($event);
}
} }
public function removeCustomerTag(JobOrder $jo, Customer $customer, $customer_tags, $username) public function removeCustomerTag(JobOrder $jo, Customer $customer, $customer_tags, $username)