src/Bundles/Messenger/Controller/NotificationController.php line 52

Open in your IDE?
  1. <?php
  2. namespace Bundles\Messenger\Controller;
  3. use Symfony\Component\HttpFoundation\JsonResponse;
  4. use App\Controller\ParentController;
  5. use Doctrine\DBAL\Connection;
  6. use Bundles\Messenger\Entity\Notification;
  7. use Doctrine\ORM\EntityManager;
  8. use Doctrine\ORM\QueryBuilder;
  9. use App\Entity\Customer;
  10. use Doctrine\ORM\Query\Expr\Join;
  11. use App\Entity\User;
  12. use Bundles\Messenger\Entity\Article;
  13. class NotificationController extends ParentController {
  14. protected $options = [];
  15. /** @var Connection */
  16. protected $connection;
  17. /**
  18. * @param $entityClass
  19. * @param $sortDirection
  20. * @param $sortField
  21. * @param $dqlFilter
  22. * @return QueryBuilder
  23. */
  24. protected function createListQueryBuilder($entityClass, $sortDirection, $sortField = null, $dqlFilter = null) {
  25. $userId = $this->getUser()->getId();
  26. $type = $this->request->get('type') ?? '';
  27. $show = $this->request->get('show') ?? '';
  28. /* @var EntityManager */
  29. $em = $this->getDoctrine()->getManagerForClass($this->entity['class']);
  30. /* @var QueryBuilder */
  31. $queryBuilder = $em->createQueryBuilder()
  32. ->select('entity')
  33. ->from($this->entity['class'], 'entity')
  34. ->orderBy('entity.id', 'DESC');
  35. if (!$this->getUser()->isAdmin() || $show != 'all') {
  36. $queryBuilder->andWhere('entity.User = '.$userId);
  37. }
  38. if (!empty($type)) {
  39. $queryBuilder->andWhere('entity.type = \''.$type.'\'');
  40. }
  41. return $queryBuilder;
  42. }
  43. public function newMessages($type) {
  44. $this->em = $this->getDoctrine()->getManager();
  45. $user = $this->getUser();
  46. if ($type == 'articles') {
  47. $messages = $this->em->getRepository(Article::class)->findByValidDates();
  48. } else {
  49. $messages = $this->em->getRepository(Notification::class)->findWithCashflowBy($user, $type);
  50. }
  51. $data = [
  52. 'messages' => $messages,
  53. 'count' => count($messages),
  54. ];
  55. $content = $this->render('@messenger/new_'.$type.'.html.twig', $data)->getContent();
  56. return new JsonResponse($content, 200);
  57. }
  58. public function setAsSeen($id) {
  59. $this->em = $this->getDoctrine()->getManager();
  60. $user = $this->getUser();
  61. $status = 'false';
  62. $message = $this->em->getRepository(Notification::class)->findOneBy(['User' => $user, 'id' => $id]);
  63. if (!empty($message)) {
  64. $message->setSeen(true);
  65. $this->em->persist($message);
  66. $this->em->flush();
  67. $status = 'ok';
  68. }
  69. return new JsonResponse($status, 200);
  70. }
  71. }