Set priority properly for job order and handle priority down button #360
This commit is contained in:
parent
07753274c3
commit
977559b88d
2 changed files with 37 additions and 8 deletions
|
|
@ -543,16 +543,14 @@ class RiderController extends Controller
|
||||||
*/
|
*/
|
||||||
public function priorityUpJO(EntityManagerInterface $em, Rider $rider, JobOrder $jo)
|
public function priorityUpJO(EntityManagerInterface $em, Rider $rider, JobOrder $jo)
|
||||||
{
|
{
|
||||||
error_log("HERE");
|
|
||||||
error_log($rider->getID());
|
|
||||||
error_log($jo->getID());
|
|
||||||
|
|
||||||
$jos = $rider->getOpenJobOrders();
|
$jos = $rider->getOpenJobOrders();
|
||||||
|
|
||||||
|
// set new priority
|
||||||
$old_prio = $jo->getPriority();
|
$old_prio = $jo->getPriority();
|
||||||
$new_prio = $old_prio - 1;
|
$new_prio = $old_prio - 1;
|
||||||
$jo->setPriority($new_prio);
|
$jo->setPriority($new_prio);
|
||||||
|
|
||||||
|
// go through all rider open JOs and set priority when needed
|
||||||
foreach ($jos as $rider_jo)
|
foreach ($jos as $rider_jo)
|
||||||
{
|
{
|
||||||
// check if it's the same
|
// check if it's the same
|
||||||
|
|
@ -575,9 +573,26 @@ class RiderController extends Controller
|
||||||
*/
|
*/
|
||||||
public function priorityDownJO(EntityManagerInterface $em, Rider $rider, JobOrder $jo)
|
public function priorityDownJO(EntityManagerInterface $em, Rider $rider, JobOrder $jo)
|
||||||
{
|
{
|
||||||
error_log("HERE");
|
$jos = $rider->getOpenJobOrders();
|
||||||
error_log($rider->getID());
|
|
||||||
error_log($jo->getID());
|
// set new priority
|
||||||
|
$old_prio = $jo->getPriority();
|
||||||
|
$new_prio = $old_prio + 1;
|
||||||
|
$jo->setPriority($new_prio);
|
||||||
|
|
||||||
|
// go through all rider open JOs and set priority when needed
|
||||||
|
foreach ($jos as $rider_jo)
|
||||||
|
{
|
||||||
|
// check if it's the same
|
||||||
|
if ($rider_jo->getID() == $jo->getID())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// if priority is the same as old priority, move it down
|
||||||
|
if ($new_prio == $rider_jo->getPriority())
|
||||||
|
$rider_jo->setPriority($rider_jo->getPriority() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
$em->flush();
|
||||||
|
|
||||||
return $this->redirecttoRoute('rider_update', ['id' => $rider->getID()]);
|
return $this->redirecttoRoute('rider_update', ['id' => $rider->getID()]);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -523,6 +523,19 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set priority based on rider's existing open job orders
|
||||||
|
$rider_jos = $rider->getOpenJobOrders();
|
||||||
|
|
||||||
|
// get maximum priority then add 1
|
||||||
|
// NOTE: this can be a bit buggy due to concurrency issues
|
||||||
|
// ideally have to lock jo table, but that isn't feasible right now
|
||||||
|
$priority = 0;
|
||||||
|
foreach ($rider_jos as $rider_jo)
|
||||||
|
{
|
||||||
|
if ($priority < $rider_jo->getPriority())
|
||||||
|
$priority = $rider_jo->getPriority() + 1;
|
||||||
|
}
|
||||||
|
|
||||||
// get discount and set to meta
|
// get discount and set to meta
|
||||||
$discount = $req->request->get('invoice_discount', []);
|
$discount = $req->request->get('invoice_discount', []);
|
||||||
|
|
||||||
|
|
@ -560,7 +573,8 @@ class CMBJobOrderHandler implements JobOrderHandlerInterface
|
||||||
->setModeOfPayment($req->request->get('mode_of_payment'))
|
->setModeOfPayment($req->request->get('mode_of_payment'))
|
||||||
->setLandmark($req->request->get('landmark'))
|
->setLandmark($req->request->get('landmark'))
|
||||||
->setHub($hub)
|
->setHub($hub)
|
||||||
->setRider($rider);
|
->setRider($rider)
|
||||||
|
->setPriority($priority);
|
||||||
|
|
||||||
$jo->addMeta('discount', $discount);
|
$jo->addMeta('discount', $discount);
|
||||||
$jo->addMeta('service_charges', $service_charges);
|
$jo->addMeta('service_charges', $service_charges);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue