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
|
// 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))
|
if (empty($error_array))
|
||||||
{
|
{
|
||||||
$this->setJobOrderObject($em, $req, $jo, JOStatus::PENDING);
|
$this->setJobOrderObject($req, $jo, $jo_status);
|
||||||
|
|
||||||
// call service to generate invoice
|
// call service to generate invoice
|
||||||
$invoice_items = $req->request->get('invoice_items', []);
|
$invoice_items = $req->request->get('invoice_items', []);
|
||||||
|
|
@ -432,10 +433,10 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
throw $this->createNotFoundException('The item does not exist');
|
throw $this->createNotFoundException('The item does not exist');
|
||||||
|
|
||||||
// validate and set job order object
|
// validate and set job order object
|
||||||
$this->validateJobOrder($req, $error_array);
|
$this->validateJobOrder($req, $error_array, $obj->getStatus());
|
||||||
if (empty($error_array))
|
if (empty($error_array))
|
||||||
{
|
{
|
||||||
$this->setJobOrderObject($em, $req, $obj, $obj->getStatus());
|
$this->setJobOrderObject($req, $obj, $obj->getStatus());
|
||||||
|
|
||||||
// did they change invoice?
|
// did they change invoice?
|
||||||
$invoice_items = $req->request->get('invoice_items', []);
|
$invoice_items = $req->request->get('invoice_items', []);
|
||||||
|
|
@ -486,6 +487,7 @@ 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)
|
||||||
|
|
@ -510,7 +512,8 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
}
|
}
|
||||||
|
|
||||||
// validate
|
// validate
|
||||||
$this->validateJobOrder($req, $error_array);
|
$jo_status = JOStatus::RIDER_ASSIGN;
|
||||||
|
$this->validateJobOrder($req, $error_array, $jo_status);
|
||||||
|
|
||||||
// check if hub is set
|
// check if hub is set
|
||||||
if (empty($req->request->get('hub')))
|
if (empty($req->request->get('hub')))
|
||||||
|
|
@ -525,7 +528,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
|
|
||||||
if (empty($error_array))
|
if (empty($error_array))
|
||||||
{
|
{
|
||||||
$this->setJobOrderObject($em, $req, $obj, JOStatus::RIDER_ASSIGN);
|
$this->setJobOrderObject($req, $obj, $jo_status);
|
||||||
|
|
||||||
// validate
|
// validate
|
||||||
$errors = $this->validator->validate($obj);
|
$errors = $this->validator->validate($obj);
|
||||||
|
|
@ -544,7 +547,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
], 422);
|
], 422);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->jo_manager->processJobOrderEvents($jo, JOEventType::HUB_ASSIGN);
|
$this->jo_manager->processJobOrderEvents($obj, JOEventType::HUB_ASSIGN);
|
||||||
|
|
||||||
// validated! save the entity
|
// validated! save the entity
|
||||||
$em->flush();
|
$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
|
// new job order
|
||||||
if (empty($req->request->get('coord_lng')) || empty($req->request->get('coord_lat'))) {
|
if ($jo_status == JOStatus::PENDING)
|
||||||
$error_array['coordinates'] = 'No map coordinates provided. Please click on a location on the map.';
|
{
|
||||||
}
|
// 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($cust_vehicle))
|
||||||
if (empty($req->request->get('customer_vehicle'))) {
|
$error_array['customer_vehicle'] = 'Invalid vehicle specified.';
|
||||||
$error_array['customer_vehicle'] = 'No vehicle selected.';
|
}
|
||||||
} else {
|
// check if reference JO is set and validate
|
||||||
// get customer vehicle
|
if (!empty($req->request->get('ref_jo')))
|
||||||
$cust_vehicle = $this->em->getRepository(CustomerVehicle::class)->find($req->request->get('customer_vehicle'));
|
{
|
||||||
|
// get reference JO
|
||||||
|
$ref_jo = $em->getRepository(JobOrder::class)->find($req->request->get('ref_jo'));
|
||||||
|
|
||||||
if (empty($cust_vehicle)) {
|
if (empty($ref_jo))
|
||||||
$error_array['customer_vehicle'] = 'Invalid vehicle specified.';
|
$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
|
// check if landmark is set
|
||||||
if (empty($req->request->get('landmark')))
|
if (empty($req->request->get('landmark')))
|
||||||
$error_array['landmark'] = 'Landmark is required.';
|
$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
|
// new job order
|
||||||
if ($jo_status == JOStatus::PENDING)
|
if ($jo_status == JOStatus::PENDING)
|
||||||
{
|
{
|
||||||
// these are fields that are only set when new job order
|
// these are fields that are only set when new job order
|
||||||
// get customer vehicle
|
// 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())
|
$jo->setCustomer($cust_vehicle->getCustomer())
|
||||||
->setCustomerVehicle($cust_vehicle)
|
->setCustomerVehicle($cust_vehicle)
|
||||||
|
|
@ -2821,7 +2842,7 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
// check if reference JO is set
|
// check if reference JO is set
|
||||||
if (!empty($req->request->get('ref_jo'))) {
|
if (!empty($req->request->get('ref_jo'))) {
|
||||||
// get reference 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);
|
$jo->setReferenceJO($ref_jo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2846,13 +2867,13 @@ class ResqJobOrderHandler implements JobOrderHandlerInterface
|
||||||
$fac_by = null;
|
$fac_by = null;
|
||||||
if (!empty($fac_by_id))
|
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))
|
if (empty($fac_by))
|
||||||
$fac_by = null;
|
$fac_by = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
// get hub
|
// 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)
|
$jo->setFacilitatedType($fac_type)
|
||||||
->setFacilitatedBy($fac_by)
|
->setFacilitatedBy($fac_by)
|
||||||
|
|
|
||||||
|
|
@ -122,9 +122,10 @@ class JobOrderManager
|
||||||
$em->persist($hub_assign_event);
|
$em->persist($hub_assign_event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: check for other JO event types. See if all other event types have no special processing
|
else
|
||||||
if ($jo_event_type == JOEventType::CANCEL)
|
|
||||||
{
|
{
|
||||||
|
// 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
|
// add event log for JO
|
||||||
$event = new JOEvent();
|
$event = new JOEvent();
|
||||||
$event->setDateHappen(new DateTime())
|
$event->setDateHappen(new DateTime())
|
||||||
|
|
@ -138,22 +139,6 @@ 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)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue