Fix issues found during testing of dispatch. #591
This commit is contained in:
parent
a28b7ec6d0
commit
f89ddd73bf
2 changed files with 71 additions and 65 deletions
|
|
@ -350,10 +350,11 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
|
||||
|
||||
// validate and set job order object
|
||||
$this->validateJobOrder($req, $error_array);
|
||||
$jo_status = JOStatus::PENDING;
|
||||
$this->validateJobOrder($req, $error_array, $jo_status);
|
||||
if (empty($error_array))
|
||||
{
|
||||
$this->setJobOrderObject($em, $req, $jo, JOStatus::PENDING);
|
||||
$this->setJobOrderObject($req, $jo, $jo_status);
|
||||
|
||||
// call service to generate invoice
|
||||
$invoice_items = $req->request->get('invoice_items', []);
|
||||
|
|
@ -432,10 +433,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
throw $this->createNotFoundException('The item does not exist');
|
||||
|
||||
// validate and set job order object
|
||||
$this->validateJobOrder($req, $error_array);
|
||||
$this->validateJobOrder($req, $error_array, $obj->getStatus());
|
||||
if (empty($error_array))
|
||||
{
|
||||
$this->setJobOrderObject($em, $req, $obj, $obj->getStatus());
|
||||
$this->setJobOrderObject($req, $obj, $obj->getStatus());
|
||||
|
||||
// did they change invoice?
|
||||
$invoice_items = $req->request->get('invoice_items', []);
|
||||
|
|
@ -486,6 +487,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
$em = $this->em;
|
||||
$obj = $em->getRepository(JobOrder::class)->find($id);
|
||||
$processor = $obj->getProcessedBy();
|
||||
$user = $this->security->getUser();
|
||||
|
||||
// check if we're the one processing, return error otherwise
|
||||
if ($processor == null)
|
||||
|
|
@ -510,7 +512,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
}
|
||||
|
||||
// validate
|
||||
$this->validateJobOrder($req, $error_array);
|
||||
$jo_status = JOStatus::RIDER_ASSIGN;
|
||||
$this->validateJobOrder($req, $error_array, $jo_status);
|
||||
|
||||
// check if hub is set
|
||||
if (empty($req->request->get('hub')))
|
||||
|
|
@ -525,7 +528,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
|
||||
if (empty($error_array))
|
||||
{
|
||||
$this->setJobOrderObject($em, $req, $obj, JOStatus::RIDER_ASSIGN);
|
||||
$this->setJobOrderObject($req, $obj, $jo_status);
|
||||
|
||||
// validate
|
||||
$errors = $this->validator->validate($obj);
|
||||
|
|
@ -544,7 +547,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
], 422);
|
||||
}
|
||||
|
||||
$this->jo_manager->processJobOrderEvents($jo, JOEventType::HUB_ASSIGN);
|
||||
$this->jo_manager->processJobOrderEvents($obj, JOEventType::HUB_ASSIGN);
|
||||
|
||||
// validated! save the entity
|
||||
$em->flush();
|
||||
|
|
@ -2752,61 +2755,79 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
}
|
||||
}
|
||||
|
||||
protected function validateJobOrder(Request $req, &$error_array)
|
||||
protected function validateJobOrder(Request $req, &$error_array, $jo_status)
|
||||
{
|
||||
// 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.';
|
||||
}
|
||||
// new job order
|
||||
if ($jo_status == JOStatus::PENDING)
|
||||
{
|
||||
// check if service is battery sales
|
||||
$stype = $req->request->get('service_type');
|
||||
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))
|
||||
{
|
||||
if (empty($req->request->get('no_trade_in_reason')))
|
||||
$error_array['no_trade_in_reason'] = 'No trade in reason required.';
|
||||
}
|
||||
}
|
||||
// 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 = $this->em->getRepository(CustomerVehicle::class)->find($req->request->get('customer_vehicle'));
|
||||
|
||||
// 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 = $this->em->getRepository(CustomerVehicle::class)->find($req->request->get('customer_vehicle'));
|
||||
if (empty($cust_vehicle))
|
||||
$error_array['customer_vehicle'] = 'Invalid vehicle specified.';
|
||||
}
|
||||
// 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($cust_vehicle)) {
|
||||
$error_array['customer_vehicle'] = 'Invalid vehicle specified.';
|
||||
if (empty($ref_jo))
|
||||
$error_array['ref_jo'] = 'Invalid reference job order specified.';
|
||||
}
|
||||
}
|
||||
|
||||
// assign hub/dispatch job order
|
||||
if ($jo_status == JOStatus::RIDER_ASSIGN)
|
||||
{
|
||||
// check if hub is set
|
||||
if (empty($req->request->get('hub')))
|
||||
$error_array['hub'] = 'No hub selected.';
|
||||
else
|
||||
{
|
||||
// get hub
|
||||
$hub = $this->em->getRepository(Hub::class)->find($req->request->get('hub'));
|
||||
|
||||
if (empty($hub))
|
||||
$error_array['hub'] = 'Invalid hub specified.';
|
||||
}
|
||||
}
|
||||
|
||||
// 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.';
|
||||
|
||||
// check if landmark is set
|
||||
if (empty($req->request->get('landmark')))
|
||||
$error_array['landmark'] = 'Landmark is required.';
|
||||
|
||||
// check if service is battery sales
|
||||
$stype = $req->request->get('service_type');
|
||||
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))
|
||||
{
|
||||
if (empty($req->request->get('no_trade_in_reason')))
|
||||
$error_array['no_trade_in_reason'] = 'No trade in reason required.';
|
||||
}
|
||||
}
|
||||
|
||||
// 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.';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected function setJobOrderObject(EntityManagerInterface $em, Request $req, JobOrder $jo, $jo_status)
|
||||
protected function setJobOrderObject(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'));
|
||||
$cust_vehicle = $this->em->getRepository(CustomerVehicle::class)->find($req->request->get('customer_vehicle'));
|
||||
|
||||
$jo->setCustomer($cust_vehicle->getCustomer())
|
||||
->setCustomerVehicle($cust_vehicle)
|
||||
|
|
@ -2821,7 +2842,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
// 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'));
|
||||
$ref_jo = $this->em->getRepository(JobOrder::class)->find($req->request->get('ref_jo'));
|
||||
$jo->setReferenceJO($ref_jo);
|
||||
}
|
||||
}
|
||||
|
|
@ -2846,13 +2867,13 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
|||
$fac_by = null;
|
||||
if (!empty($fac_by_id))
|
||||
{
|
||||
$fac_by = $em->getRepository(Hub::class)->find($fac_by_id);
|
||||
$fac_by = $this->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'));
|
||||
$hub = $this->em->getRepository(Hub::class)->find($req->request->get('hub'));
|
||||
|
||||
$jo->setFacilitatedType($fac_type)
|
||||
->setFacilitatedBy($fac_by)
|
||||
|
|
|
|||
|
|
@ -122,9 +122,10 @@ class JobOrderManager
|
|||
$em->persist($hub_assign_event);
|
||||
}
|
||||
}
|
||||
// TODO: check for other JO event types. See if all other event types have no special processing
|
||||
if ($jo_event_type == JOEventType::CANCEL)
|
||||
else
|
||||
{
|
||||
// TODO: check for other JO event types. See if all other event types have no special processing
|
||||
// cancel, edit, dispatch are the same
|
||||
// add event log for JO
|
||||
$event = new JOEvent();
|
||||
$event->setDateHappen(new DateTime())
|
||||
|
|
@ -138,22 +139,6 @@ class JobOrderManager
|
|||
|
||||
$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)
|
||||
|
|
|
|||
Loading…
Reference in a new issue