108 lines
3.2 KiB
PHP
108 lines
3.2 KiB
PHP
<?php
|
|
|
|
namespace App\Controller;
|
|
|
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
use Symfony\Component\HttpFoundation\JsonResponse;
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
use Catalyst\MenuBundle\Annotation\Menu;
|
|
use DateTime;
|
|
use DateInterval;
|
|
use App\Entity\Notification;
|
|
|
|
class NotificationController extends AbstractController
|
|
{
|
|
// TODO: security
|
|
public function ajaxList(EntityManagerInterface $em)
|
|
{
|
|
/*
|
|
$date = new DateTime();
|
|
$date->sub(new DateInterval('PT10M'));
|
|
$notifs = [
|
|
[
|
|
'id' => 1,
|
|
'type' => 'jo_new',
|
|
'date' => $date->format('Y-m-d\TH:i:s.000P'),
|
|
'text' => 'Sample incoming job order',
|
|
'link' => '#',
|
|
], [
|
|
'id' => 2,
|
|
'type' => 'rider_accept',
|
|
'date' => $date->format('Y-m-d\TH:i:s.000P'),
|
|
'text' => 'Sample rider has accepted job order',
|
|
'link' => '#',
|
|
], [
|
|
'id' => 3,
|
|
'type' => 'jo_cancel',
|
|
'date' => $date->format('Y-m-d\TH:i:s.000P'),
|
|
'text' => 'Customer has cancelled job order.',
|
|
'link' => '#',
|
|
], [
|
|
'id' => 3,
|
|
'type' => 'rider_reject',
|
|
'date' => $date->format('Y-m-d\TH:i:s.000P'),
|
|
'text' => 'Rider has rejected job order. Job order needs to be reassigned.',
|
|
'link' => '#',
|
|
],
|
|
];
|
|
$sample_data = [
|
|
'count' => 4,
|
|
'notifications' => $notifs,
|
|
];
|
|
*/
|
|
|
|
$notifs = $em->getRepository(Notification::class)->findBy(['user_id' => 0]);
|
|
$notif_data = [];
|
|
|
|
// TODO: count how many notifs are unread and return the count
|
|
|
|
foreach ($notifs as $notif)
|
|
{
|
|
$notif_data[] = [
|
|
'id' => $notif->getID(),
|
|
'type' => 'jo_new',
|
|
'is_read' => $notif->isRead(),
|
|
'is_fresh' => $notif->isFresh(),
|
|
'date' => $notif->getDateCreate()->format('Y-m-d\TH:i:s.000P'),
|
|
'text' => $notif->getMessage(),
|
|
'link' => $notif->getURL(),
|
|
];
|
|
}
|
|
|
|
|
|
$sample_data = [
|
|
'count' => count($notif_data),
|
|
'notifications' => $notif_data,
|
|
];
|
|
|
|
$res = new JsonResponse($sample_data);
|
|
|
|
return $res;
|
|
}
|
|
|
|
// TODO: security
|
|
public function ajaxUpdate(EntityManagerInterface $em, Request $req)
|
|
{
|
|
$notif_id = $req->request->get('id');
|
|
error_log($notif_id);
|
|
|
|
$notif = $em->getRepository(Notification::class)->find($notif_id);
|
|
|
|
if ($notif != null)
|
|
{
|
|
// TODO: fresh is if unread and still within x hours
|
|
// but for now fresh and unread are both the same
|
|
$notif->setIsRead(true);
|
|
$notif->setIsFresh(false);
|
|
|
|
$em->persist($notif);
|
|
$em->flush();
|
|
}
|
|
|
|
$res = new JsonResponse();
|
|
|
|
return $res;
|
|
}
|
|
}
|