src/Controller/Action/DiscussionListController.php line 12
<?phpnamespace App\Controller\Action;use App\Entity\Discussion;use App\Repository\DiscussionRepository;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;class DiscussionListController extends AbstractController{public function __construct(private readonly DiscussionRepository $discussionRepository){}public function __invoke(Request $request): array{$limit = $request->get('limit');$page = $request->get('page');$siteId = $request->get('site');$type = $request->get('type');if (!$this->getUser()->isIsHotline()) {$discussions = $this->discussionRepository->findBySites($siteId, $limit, $page, $type);$total = $this->discussionRepository->findBySites($siteId, $limit, $page, $type);} else {$discussions = $this->discussionRepository->findBy([], ['updatedAt' => 'DESC'], $limit, $page*$limit);$total = $this->discussionRepository->findBy([], ['updatedAt' => 'DESC']);}$data = [];$nb_hotline_not_readed = 0;foreach ($discussions as $discussion) {$messages = $discussion->getMessages()->toArray();// Sort the messages by their createdAt field in descending orderusort($messages, function ($a, $b) {return $b->getCreatedAt() <=> $a->getCreatedAt();});$latestMessage = $messages ? $messages[0] : null;$model = $discussion->getSite();$siteNamesArray = [];$status = true;while ($status) {if ($model) {$siteNamesArray[] = $model->getName();if (!$model->getParent()) {$siteNamesArray[] = $model?->getCustomer()?->getName();}$model = $model->getParent();} else {$status = false;};}if (!$latestMessage->isHotlineReaded())$nb_hotline_not_readed ++;$data['discussions'][] = ['id' => $discussion->getId(),'topic' => $discussion->getTopic(),'documentId' => $discussion->getDocument()?->getId(),'createdAt' => $discussion->getCreatedAt()->format('d/m/Y H:i:s'),'nbMessages' => count($discussion->getMessages()),'lastUpdate' => $latestMessage ? $latestMessage->getCreatedAt()->format('d/m/Y H:i:s') : '','lastMessage' => $latestMessage ? $latestMessage->getMessageText() : '','is_hotline_readed' => $latestMessage->isHotlineReaded(),'last_message_id' => $latestMessage ? $latestMessage->getId() : '','total_messages' => count($messages),'id_site' => $discussion->getSite()->getId(),'name_site' => $discussion->getSite()->getPath()['full_path'] ?? ''];}$data['total_discussions'] = count($total);$data['nb_hotline_not_readed'] = $nb_hotline_not_readed;return $data;}}