diff --git a/src/Controller/RAPIController.php b/src/Controller/RAPIController.php index 0fa9f31d..abe6fc8a 100644 --- a/src/Controller/RAPIController.php +++ b/src/Controller/RAPIController.php @@ -23,6 +23,7 @@ use App\Ramcar\TransactionOrigin; use App\Ramcar\TradeInType; use App\Ramcar\InvoiceStatus; use App\Ramcar\ModeOfPayment; +use App\Ramcar\JOEventType; use App\Service\InvoiceCreator; use App\Service\MQTTClient; @@ -40,6 +41,7 @@ use App\Entity\BatterySize; use App\Entity\RiderRating; use App\Entity\Rider; use App\Entity\User; +use App\Entity\JOEvent; use DateTime; @@ -481,17 +483,19 @@ class RAPIController extends Controller if ($res->isError()) return $res->getReturnResponse(); - /* - // set jo status to cancelled - // TODO: set reason - $jo->setStatus(JOStatus::CANCELLED) - ->setDateCancel(new DateTime()); + $rider = $this->session->getRider(); - // make rider available - $this->session->getRider()->setAvailable(true); - */ + // $jo->cancel("rider cancelled"); + // requeue it, instead of cancelling it + $jo->requeue(); - $jo->cancel("rider cancelled"); + // add event + $event = new JOEvent(); + $event->setDateHappen(new DateTime()) + ->setTypeID(JOEventType::REQUEUE) + ->setJobOrder($jo) + ->setRider($rider); + $em->persist($event); $em->flush(); @@ -504,7 +508,6 @@ class RAPIController extends Controller $mclient->sendEvent($jo, $payload); - // TODO: add event return $res->getReturnResponse(); } diff --git a/src/Entity/JOEvent.php b/src/Entity/JOEvent.php index 7d0d5d31..ee051712 100644 --- a/src/Entity/JOEvent.php +++ b/src/Entity/JOEvent.php @@ -52,6 +52,13 @@ class JOEvent */ protected $job_order; + // rider related to the event + /** + * @ORM\ManyToOne(targetEntity="Rider", inversedBy="events") + * @ORM\JoinColumn(name="rider_id", referencedColumnName="id", nullable=true) + */ + protected $rider; + public function __construct() { $this->date_create = new DateTime(); @@ -115,4 +122,15 @@ class JOEvent { return $this->job_order; } + + public function setRider(Rider $rider) + { + $this->rider = $rider; + return $this; + } + + public function getRider() + { + return $this->rider; + } } diff --git a/src/Entity/JobOrder.php b/src/Entity/JobOrder.php index 122df4df..e3e69688 100644 --- a/src/Entity/JobOrder.php +++ b/src/Entity/JobOrder.php @@ -661,6 +661,14 @@ class JobOrder $rider->setAvailable(); } + public function requeue() + { + // set status back to 'for rider assignment' + $this->setStatus(JOStatus::RIDER_ASSIGN); + + $this->makeRiderAvailable(); + } + public function cancel($reason) { // set status to cancelled diff --git a/src/Ramcar/JOEventType.php b/src/Ramcar/JOEventType.php index defa6d3b..73db12ef 100644 --- a/src/Ramcar/JOEventType.php +++ b/src/Ramcar/JOEventType.php @@ -10,6 +10,7 @@ class JOEventType extends NameValue const CANCEL = 'cancel'; const FULFILL = 'fulfill'; const OPEN_EDIT = 'open_edit'; + const REQUEUE = 'requeue'; const COLLECTION = [ 'create' => 'Created', @@ -18,5 +19,6 @@ class JOEventType extends NameValue 'cancel' => 'Cancelled', 'fulfill' => 'Fulfilled', 'open_edit' => 'Open Edit', + 'requeue' => 'Requeue', ]; } diff --git a/templates/job-order/form.html.twig b/templates/job-order/form.html.twig index 349c2d68..f566ab00 100644 --- a/templates/job-order/form.html.twig +++ b/templates/job-order/form.html.twig @@ -739,7 +739,7 @@