getUser(); $announcements = []; // Récupérer les paramètres de recherche $companyName = $request->query->get('company_name'); $location = $request->query->get('location'); $category = $request->query->get('category'); if (in_array('ROLE_ADMIN', $user->getRoles())) { $showNonValidated = $request->query->get('show_non_validated'); if ($showNonValidated) { $announcements = $announcementRepository->findBy(['status' => 'notVerified']); } else { $announcements = $announcementRepository->findAll(); } } if (in_array('ROLE_EMPLOYEE', $user->getRoles())) { $company = $user->getCompany(); if ($company) { $announcements = $announcementRepository->findBy(['company' => $company]); } } if (in_array('ROLE_INTERN', $user->getRoles())) { $announcements = $announcementRepository->findBy(['status' => 'Verified']); } // Filtrer les annonces en fonction des critères de recherche if ($companyName || $location || $category) { $announcements = $announcementRepository->searchAnnouncements($companyName, $location, $category); } return $this->render('announcement/index.html.twig', [ 'announcements' => $announcements, 'showNonValidated' => $request->query->get('show_non_validated', false), ]); } #[Route('/new', name: 'app_announcement_new', methods: ['GET', 'POST'])] public function new(Request $request, EntityManagerInterface $entityManager): Response { /*$user = $this->getUser(); if (in_array('ROLE_EMPLOYEE', $user->getRoles())) { $company = $user->getCompany(); if (!$company) { echo "Compétez votre profile avant de créer une annonce"; $this->redirectToRoute('app_user_edit',['id' => $user->getId(),]); } }*/ $announcement = new Announcement(); $form = $this->createForm(AnnouncementType::class, $announcement); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $announcement->setCreationDate(new \DateTime()); $announcement->setStatus('notVerified'); $entityManager->persist($announcement); $entityManager->flush(); return $this->redirectToRoute('app_announcement_index', [], Response::HTTP_SEE_OTHER); } return $this->render('announcement/new.html.twig', [ 'announcement' => $announcement, 'form' => $form, ]); } #[Route('/{id}', name: 'app_announcement_show', methods: ['GET'])] public function show(Announcement $announcement): Response { return $this->render('announcement/show.html.twig', [ 'announcement' => $announcement, ]); } #[Route('/{id}/edit', name: 'app_announcement_edit', methods: ['GET', 'POST'])] public function edit(Request $request, Announcement $announcement, EntityManagerInterface $entityManager): Response { $form = $this->createForm(AnnouncementType::class, $announcement); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $entityManager->flush(); return $this->redirectToRoute('app_announcement_index', [], Response::HTTP_SEE_OTHER); } return $this->render('announcement/edit.html.twig', [ 'announcement' => $announcement, 'form' => $form, ]); } #[Route('/{id}', name: 'app_announcement_delete', methods: ['POST'])] public function delete(Request $request, Announcement $announcement, EntityManagerInterface $entityManager): Response { if ($this->isCsrfTokenValid('delete'.$announcement->getId(), $request->getPayload()->getString('_token'))) { $entityManager->remove($announcement); $entityManager->flush(); } return $this->redirectToRoute('app_announcement_index', [], Response::HTTP_SEE_OTHER); } #[Route('/{id}/validate', name: 'app_announcement_validate', methods: ['POST'])] public function validate(Request $request, Announcement $announcement, EntityManagerInterface $entityManager): Response { if ($announcement->getStatus() !== 'Verified') { $announcement->setStatus('Verified'); $entityManager->flush(); } return $this->redirectToRoute('app_announcement_show', ['id' => $announcement->getId()], Response::HTTP_SEE_OTHER); } }