Merge branch '151-rider-api-changes' into 'master'
Resolve "Rider API changes" Closes #151 See merge request jankstudio/resq!152
This commit is contained in:
commit
959b2c9513
7 changed files with 55 additions and 6 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -5,6 +5,7 @@
|
|||
/var/
|
||||
/vendor/
|
||||
/sql/
|
||||
/pem/
|
||||
###< symfony/framework-bundle ###
|
||||
|
||||
*.swp
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ use App\Ramcar\TradeInType;
|
|||
|
||||
use App\Service\InvoiceCreator;
|
||||
use App\Service\RisingTideGateway;
|
||||
use App\Service\MQTTClient;
|
||||
|
||||
use App\Entity\MobileSession;
|
||||
use App\Entity\Customer;
|
||||
|
|
@ -899,7 +900,6 @@ class APIController extends Controller
|
|||
'invoice' => $invoice_data
|
||||
];
|
||||
|
||||
|
||||
// set data
|
||||
$res->setData($data);
|
||||
|
||||
|
|
@ -1260,7 +1260,7 @@ class APIController extends Controller
|
|||
return $res->getReturnResponse();
|
||||
}
|
||||
|
||||
public function cancelJobOrder(Request $req)
|
||||
public function cancelJobOrder(Request $req, MQTTClient $mclient)
|
||||
{
|
||||
$required_params = [
|
||||
'jo_id',
|
||||
|
|
@ -1300,13 +1300,23 @@ class APIController extends Controller
|
|||
}
|
||||
|
||||
// TODO: check job order status, if it's cancellable
|
||||
|
||||
$cancel_reason = $req->request->get('reason');
|
||||
$jo->setStatus(JOStatus::CANCELLED)
|
||||
->setDateCancel(new DateTime())
|
||||
->setCancelReason($req->request->get('reason'));
|
||||
->setCancelReason($cancel_reason);
|
||||
|
||||
$em->flush();
|
||||
|
||||
// send mobile app event
|
||||
$payload = [
|
||||
'event' => 'cancelled',
|
||||
'reason' => $cancel_reason,
|
||||
'jo_id' => $jo->getID(),
|
||||
];
|
||||
$mclient->sendEvent($jo, $payload);
|
||||
$mclient->sendRiderEvent($jo, $payload);
|
||||
|
||||
|
||||
$res->setData([]);
|
||||
|
||||
return $res->getReturnResponse();
|
||||
|
|
|
|||
|
|
@ -1168,6 +1168,7 @@ class JobOrderController extends BaseController
|
|||
'event' => 'driver_assigned'
|
||||
];
|
||||
$mclient->sendEvent($obj, $payload);
|
||||
$mclient->sendRiderEvent($obj, $payload);
|
||||
|
||||
// return successful response
|
||||
return $this->json([
|
||||
|
|
@ -1361,6 +1362,7 @@ class JobOrderController extends BaseController
|
|||
'driver_id' => $rider->getID(),
|
||||
];
|
||||
$mclient->sendEvent($obj, $payload);
|
||||
$mclient->sendRiderEvent($obj, $payload);
|
||||
|
||||
// return successful response
|
||||
return $this->json([
|
||||
|
|
@ -2135,6 +2137,7 @@ class JobOrderController extends BaseController
|
|||
'jo_id' => $obj->getID(),
|
||||
];
|
||||
$mclient->sendEvent($obj, $payload);
|
||||
$mclient->sendRiderEvent($obj, $payload);
|
||||
|
||||
// return successful response
|
||||
return $this->json([
|
||||
|
|
|
|||
|
|
@ -368,7 +368,7 @@ class RAPIController extends Controller
|
|||
'job_order' => [
|
||||
'id' => $jo->getID(),
|
||||
'service_type' => $jo->getServiceType(),
|
||||
'date_schedule' => $jo->getDateSchedule()->format('Ymd'),
|
||||
'date_schedule' => $jo->getDateSchedule()->format('Ymd H:i:s'),
|
||||
'longitude' => $coord->getLongitude(),
|
||||
'latitude' => $coord->getLatitude(),
|
||||
'status' => $jo->getStatus(),
|
||||
|
|
|
|||
|
|
@ -106,10 +106,17 @@ class Rider
|
|||
*/
|
||||
protected $password;
|
||||
|
||||
// rider sessions
|
||||
/**
|
||||
* @ORM\OneToMany(targetEntity="RiderSession", mappedBy="rider")
|
||||
*/
|
||||
protected $sessions;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->job_orders = new ArrayCollection();
|
||||
$this->schedules = new ArrayCollection();
|
||||
$this->sessions = new ArrayCollection();
|
||||
$this->curr_rating = 0;
|
||||
$this->flag_available = true;
|
||||
$this->flag_active = true;
|
||||
|
|
@ -307,4 +314,9 @@ class Rider
|
|||
|
||||
return $this->job_orders->matching($criteria)[0];
|
||||
}
|
||||
|
||||
public function getSessions()
|
||||
{
|
||||
return $this->sessions;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ use App\Entity\JobOrder;
|
|||
class MQTTClient
|
||||
{
|
||||
const PREFIX = 'motolite.control.';
|
||||
const RIDER_PREFIX = 'motorider.';
|
||||
|
||||
protected $mclient;
|
||||
|
||||
|
|
@ -36,6 +37,7 @@ class MQTTClient
|
|||
if (count($sessions) == 0)
|
||||
return;
|
||||
|
||||
// send to every customer session
|
||||
foreach ($sessions as $sess)
|
||||
{
|
||||
$phone_num = $sess->getPhoneNumber();
|
||||
|
|
@ -43,4 +45,25 @@ class MQTTClient
|
|||
$this->publish($channel, json_encode($payload));
|
||||
}
|
||||
}
|
||||
|
||||
public function sendRiderEvent(JobOrder $job_order, $payload)
|
||||
{
|
||||
// check if a rider is available
|
||||
$rider = $job_order->getRider();
|
||||
if ($rider == null)
|
||||
return;
|
||||
|
||||
// check if rider has sessions
|
||||
$sessions = $rider->getSessions();
|
||||
if (count($sessions) == 0)
|
||||
return;
|
||||
|
||||
// send to every rider session
|
||||
foreach ($sessions as $sess)
|
||||
{
|
||||
$sess_id = $sess->getID();
|
||||
$channel = self::RIDER_PREFIX . $sess_id;
|
||||
$this->publish($channel, json_encode($payload));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -384,7 +384,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div class="m-form__seperator m-form__seperator--dashed"></div>
|
||||
<div class="m-form__section{{ ftags.invoice_edit ? ' m-form__section--last' }}">>
|
||||
<div class="m-form__section{{ ftags.invoice_edit ? ' m-form__section--last' }}">
|
||||
<div class="m-form__heading">
|
||||
<h3 class="m-form__heading-title">
|
||||
Invoice
|
||||
|
|
|
|||
Loading…
Reference in a new issue