Add notification sending when rider rejects JO #472

This commit is contained in:
Kendrick Chan 2020-08-23 01:09:45 +08:00
parent 0bd968d753
commit 01f5717c1c
3 changed files with 18 additions and 2 deletions

View file

@ -61,6 +61,12 @@ class Notification
*/ */
protected $flag_fresh; protected $flag_fresh;
public function __construct()
{
$this->flag_read = false;
$this->flag_fresh = true;
}
public function getID() public function getID()
{ {
return $this->id; return $this->id;

View file

@ -22,7 +22,7 @@ class NotificationManager
} }
// set user_id to 0 for all // set user_id to 0 for all
public function sendNotification($user_id, $msg) public function sendNotification($user_id, $msg, $url)
{ {
// send mqtt // send mqtt
$chan = $this->getChannel($user_id); $chan = $this->getChannel($user_id);
@ -31,6 +31,10 @@ class NotificationManager
// create notif // create notif
$notif = new Notification(); $notif = new Notification();
$notif->setUserID($user_id)
->setIcon('')
->setMessage($msg)
->setURL($url);
// save to db // save to db
$this->em->persist($notif); $this->em->persist($notif);

View file

@ -23,6 +23,7 @@ use App\Service\WarrantyHandler;
use App\Service\JobOrderHandlerInterface; use App\Service\JobOrderHandlerInterface;
use App\Service\InvoiceGeneratorInterface; use App\Service\InvoiceGeneratorInterface;
use App\Service\RiderTracker; use App\Service\RiderTracker;
use App\Service\NotificationManager;
use App\Entity\RiderSession; use App\Entity\RiderSession;
use App\Entity\Rider; use App\Entity\Rider;
@ -53,13 +54,14 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
protected $ic; protected $ic;
protected $session; protected $session;
protected $upload_dir; protected $upload_dir;
protected $nm;
public function __construct(EntityManagerInterface $em, RedisClientProvider $redis, public function __construct(EntityManagerInterface $em, RedisClientProvider $redis,
EncoderFactoryInterface $ef, RiderCache $rcache, EncoderFactoryInterface $ef, RiderCache $rcache,
string $country_code, MQTTClient $mclient, string $country_code, MQTTClient $mclient,
WarrantyHandler $wh, JobOrderHandlerInterface $jo_handler, WarrantyHandler $wh, JobOrderHandlerInterface $jo_handler,
InvoiceGeneratorInterface $ic, string $upload_dir, InvoiceGeneratorInterface $ic, string $upload_dir,
RiderTracker $rider_tracker) RiderTracker $rider_tracker, NotificationManager $nm)
{ {
$this->em = $em; $this->em = $em;
$this->redis = $redis; $this->redis = $redis;
@ -72,6 +74,7 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
$this->ic = $ic; $this->ic = $ic;
$this->upload_dir = $upload_dir; $this->upload_dir = $upload_dir;
$this->rider_tracker = $rider_tracker; $this->rider_tracker = $rider_tracker;
$this->nm = $nm;
// one device = one session, since we have control over the devices // one device = one session, since we have control over the devices
// when a rider logs in, we just change the rider assigned to the device // when a rider logs in, we just change the rider assigned to the device
@ -1154,6 +1157,9 @@ class CMBRiderAPIHandler implements RiderAPIHandlerInterface
$this->mclient->publish($channel, $rider_status); $this->mclient->publish($channel, $rider_status);
$notif_url = $this->generateUrl('jo_onestep_edit_form', ['id' => $jo->getID()]);
$this->nm->sendNotification(0, 'Job order has been rejected by rider.', $notif_url);
return $data; return $data;
} }