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; } }