mirror of
				https://gitlab.com/Chill-Projet/chill-bundles.git
				synced 2025-10-25 14:42:48 +00:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			167-build-
			...
			notificati
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | cb3f09d622 | 
| @@ -22,21 +22,57 @@ class NotificationController extends AbstractController | ||||
|         $this->security = $security; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * @Route("/show", name="chill_main_notification_show") | ||||
|      * @Route("/list/sent", name="chill_main_send_notification_list") | ||||
|      */ | ||||
|     public function showAction( | ||||
|     public function sentListAction( | ||||
|         NotificationRepository $notificationRepository, NotificationRenderer $notificationRenderer, | ||||
|         PaginatorFactory $paginatorFactory) | ||||
|     { | ||||
|         $currentUser = $this->security->getUser(); | ||||
|  | ||||
|         $notificationsNbr = $notificationRepository->countAllForAttendee(($currentUser)); | ||||
|         $notificationsNbr = $notificationRepository->countAllForAddresseeOrSender(null, $currentUser); | ||||
|         $paginator = $paginatorFactory->create($notificationsNbr); | ||||
|  | ||||
|         $notifications = $notificationRepository->findAllForAttendee( | ||||
|         $notifications = $notificationRepository->findAllForAddresseeOrSender( | ||||
|             null, | ||||
|             $currentUser, | ||||
|             $paginator->getItemsPerPage(), | ||||
|             $paginator->getCurrentPage()->getFirstItemNumber()); | ||||
|  | ||||
|         $templateData = array(); | ||||
|         foreach ($notifications as $notification) { | ||||
|             $data = [ | ||||
|                 'template' => $notificationRenderer->getTemplate($notification), | ||||
|                 'template_data' => $notificationRenderer->getTemplateData($notification), | ||||
|                 'notification' => $notification | ||||
|             ]; | ||||
|             $templateData[] = $data; | ||||
|         } | ||||
|  | ||||
|  | ||||
|         return $this->render('@ChillMain/Notification/show.html.twig', [ | ||||
|             'datas' => $templateData, | ||||
|             'notifications' => $notifications, | ||||
|             'paginator' => $paginator, | ||||
|         ]); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * @Route("/list/received", name="chill_main_received_notification_list") | ||||
|      */ | ||||
|     public function receivedListAction( | ||||
|         NotificationRepository $notificationRepository, NotificationRenderer $notificationRenderer, | ||||
|         PaginatorFactory $paginatorFactory) | ||||
|     { | ||||
|         $currentUser = $this->security->getUser(); | ||||
|  | ||||
|         $notificationsNbr = $notificationRepository->countAllForAddresseeOrSender($currentUser, null); | ||||
|         $paginator = $paginatorFactory->create($notificationsNbr); | ||||
|  | ||||
|         $notifications = $notificationRepository->findAllForAddresseeOrSender( | ||||
|             $currentUser, | ||||
|             null, | ||||
|             $limit=$paginator->getItemsPerPage(), | ||||
|             $offset= $paginator->getCurrentPage()->getFirstItemNumber()); | ||||
|  | ||||
|   | ||||
| @@ -61,7 +61,7 @@ final class NotificationRepository implements ObjectRepository | ||||
|         return $this->repository->findBy($criteria, $orderBy, $limit, $offset); | ||||
|     } | ||||
|  | ||||
|     private function queryAllForAttendee(User $addressee, bool $countQuery=False): Query | ||||
|     private function queryAllForAddresseeOrSender(?User $addressee=null, ?User $sender=null,  bool $countQuery=False): Query | ||||
|     { | ||||
|         $qb = $this->repository->createQueryBuilder('n'); | ||||
|  | ||||
| @@ -70,11 +70,29 @@ final class NotificationRepository implements ObjectRepository | ||||
|             $select = 'count(n)'; | ||||
|         } | ||||
|  | ||||
|         $qb | ||||
|             ->select($select) | ||||
|         $qb = $qb | ||||
|             ->select($select); | ||||
|  | ||||
|         $params = array(); | ||||
|  | ||||
|         if($addressee !== null) { | ||||
|             $qb = $qb | ||||
|             ->join('n.addressees', 'a') | ||||
|             ->where('a = :addressee') | ||||
|             ->setParameter('addressee', $addressee); | ||||
|             ->where('a = :addressee'); | ||||
|  | ||||
|             $params['addressee'] = $addressee; | ||||
|         } | ||||
|  | ||||
|         if($sender !== null) { | ||||
|             $qb = $qb | ||||
|                 ->where('n.sender = :sender'); | ||||
|  | ||||
|             $params['sender'] = $sender; | ||||
|         } | ||||
|  | ||||
|         foreach ($params as $key => $value) { | ||||
|             $qb = $qb->setParameter($key, $value); | ||||
|         } | ||||
|  | ||||
|         return $qb->getQuery(); | ||||
|     } | ||||
| @@ -82,20 +100,20 @@ final class NotificationRepository implements ObjectRepository | ||||
|     /** | ||||
|      * @return int | ||||
|      */ | ||||
|     public function  countAllForAttendee(User $addressee): int // TODO passer à attendees avec S | ||||
|     public function  countAllForAddresseeOrSender(?User $addressee, ?User $sender): int | ||||
|     { | ||||
|         $query = $this->queryAllForAttendee($addressee, $countQuery=True); | ||||
|         $query = $this->queryAllForAddresseeOrSender($addressee, $sender, True); | ||||
|  | ||||
|         return $query->getSingleScalarResult(); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     /** | ||||
|      * @return Notification[] | ||||
|      */ | ||||
|     public function  findAllForAttendee(User $addressee, $limit = null, $offset = null): array // TODO passer à attendees avec S | ||||
|     public function  findAllForAddresseeOrSender( | ||||
|         ?User $addressee, ?User $sender,  ?int $limit=null, ?int $offset=null): array | ||||
|     { | ||||
|         $query = $this->queryAllForAttendee($addressee); | ||||
|         $query = $this->queryAllForAddresseeOrSender($addressee, $sender, False); | ||||
|  | ||||
|         if($limit) { | ||||
|             $query = $query->setMaxResults($limit); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user