Have rider api cancel job order requeue the job order for reassignment instead #162

This commit is contained in:
Kendrick Chan 2018-08-09 02:06:33 +08:00
parent 7faaf403bf
commit b4b18e5d3d
5 changed files with 42 additions and 11 deletions

View file

@ -23,6 +23,7 @@ use App\Ramcar\TransactionOrigin;
use App\Ramcar\TradeInType; use App\Ramcar\TradeInType;
use App\Ramcar\InvoiceStatus; use App\Ramcar\InvoiceStatus;
use App\Ramcar\ModeOfPayment; use App\Ramcar\ModeOfPayment;
use App\Ramcar\JOEventType;
use App\Service\InvoiceCreator; use App\Service\InvoiceCreator;
use App\Service\MQTTClient; use App\Service\MQTTClient;
@ -40,6 +41,7 @@ use App\Entity\BatterySize;
use App\Entity\RiderRating; use App\Entity\RiderRating;
use App\Entity\Rider; use App\Entity\Rider;
use App\Entity\User; use App\Entity\User;
use App\Entity\JOEvent;
use DateTime; use DateTime;
@ -481,17 +483,19 @@ class RAPIController extends Controller
if ($res->isError()) if ($res->isError())
return $res->getReturnResponse(); return $res->getReturnResponse();
/* $rider = $this->session->getRider();
// set jo status to cancelled
// TODO: set reason
$jo->setStatus(JOStatus::CANCELLED)
->setDateCancel(new DateTime());
// make rider available // $jo->cancel("rider cancelled");
$this->session->getRider()->setAvailable(true); // 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(); $em->flush();
@ -504,7 +508,6 @@ class RAPIController extends Controller
$mclient->sendEvent($jo, $payload); $mclient->sendEvent($jo, $payload);
// TODO: add event
return $res->getReturnResponse(); return $res->getReturnResponse();
} }

View file

@ -52,6 +52,13 @@ class JOEvent
*/ */
protected $job_order; 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() public function __construct()
{ {
$this->date_create = new DateTime(); $this->date_create = new DateTime();
@ -115,4 +122,15 @@ class JOEvent
{ {
return $this->job_order; return $this->job_order;
} }
public function setRider(Rider $rider)
{
$this->rider = $rider;
return $this;
}
public function getRider()
{
return $this->rider;
}
} }

View file

@ -661,6 +661,14 @@ class JobOrder
$rider->setAvailable(); $rider->setAvailable();
} }
public function requeue()
{
// set status back to 'for rider assignment'
$this->setStatus(JOStatus::RIDER_ASSIGN);
$this->makeRiderAvailable();
}
public function cancel($reason) public function cancel($reason)
{ {
// set status to cancelled // set status to cancelled

View file

@ -10,6 +10,7 @@ class JOEventType extends NameValue
const CANCEL = 'cancel'; const CANCEL = 'cancel';
const FULFILL = 'fulfill'; const FULFILL = 'fulfill';
const OPEN_EDIT = 'open_edit'; const OPEN_EDIT = 'open_edit';
const REQUEUE = 'requeue';
const COLLECTION = [ const COLLECTION = [
'create' => 'Created', 'create' => 'Created',
@ -18,5 +19,6 @@ class JOEventType extends NameValue
'cancel' => 'Cancelled', 'cancel' => 'Cancelled',
'fulfill' => 'Fulfilled', 'fulfill' => 'Fulfilled',
'open_edit' => 'Open Edit', 'open_edit' => 'Open Edit',
'requeue' => 'Requeue',
]; ];
} }

View file

@ -739,7 +739,7 @@
<i class="fa fa-genderless" style="color: #f4516c;"></i> <i class="fa fa-genderless" style="color: #f4516c;"></i>
</div> </div>
<div class="m-timeline-2__item-text m--padding-top-5"> <div class="m-timeline-2__item-text m--padding-top-5">
{{ event.getTypeName }} by {{ event.getUser.getFullName|default('Application') }} {{ event.getTypeName }} by {{ event.getUser.getFullName|default('Application') }} {% if event.getRider %} - Rider - {{ event.getRider.getFullName }}{% endif %}
</div> </div>
</div> </div>
{% endfor %} {% endfor %}