src/Controller/SubjectController.php line 56

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Subject;
  4. use App\Form\SearchSubjectType;
  5. use App\Privilege\RoleFactory;
  6. use App\Service\ButtonRedirectService;
  7. use App\Service\NotificationFactory;
  8. use App\Service\OpinionService;
  9. use App\Service\SubjectCompleteFacade;
  10. use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. /**
  16.  * @Route("/subject", name="subject")
  17.  */
  18. class SubjectController extends AbstractController
  19. {
  20.     /**
  21.      * @var OpinionService
  22.      */
  23.     private OpinionService $opinionService;
  24.     /**
  25.      * @var SubjectCompleteFacade
  26.      */
  27.     private SubjectCompleteFacade $subjectCompleteService;
  28.     /**
  29.      * @var NotificationFactory
  30.      */
  31.     private NotificationFactory $notificationFactory;
  32.     public function __construct(
  33.         OpinionService        $opinionService,
  34.         SubjectCompleteFacade $subjectCompleteService,
  35.         NotificationFactory   $notificationFactory
  36.     )
  37.     {
  38.         $this->opinionService $opinionService;
  39.         $this->subjectCompleteService $subjectCompleteService;
  40.         $this->notificationFactory $notificationFactory;
  41.     }
  42.     /**
  43.      * @IsGranted(RoleFactory::IS_AUTHENTICATED_FULLY)
  44.      * @Route("/search", name="_search")
  45.      * @param Request $request
  46.      *
  47.      * @return Response
  48.      */
  49.     public function index(Request $request): Response
  50.     {
  51.         $searchForm $this->createForm(SearchSubjectType::class);
  52.         $searchForm->handleRequest($request);
  53.         if ($searchForm->isSubmitted() && $searchForm->isValid()) {
  54.             $subject $this->subjectCompleteService->getSubject($searchForm->getData());
  55.             if (!$subject) {
  56.                 $this->notificationFactory->addWarning('controller.subject.search.danger', [
  57.                     '{{ nip }}' => $searchForm->getData()->getNip(),
  58.                 ]);
  59.                 return $this->redirectToRoute('subject_search');
  60.             }
  61.             $buttonName $searchForm->getClickedButton() ? $searchForm->getClickedButton()->getName() : null;
  62.             switch ($buttonName){
  63.                 case SearchSubjectType::BUTTON_NAME_ADD_OPINION:
  64.                     return $this->redirectToRoute('subject_add_opinion', [
  65.                         'subject_nip' => $subject->getNip(),
  66.                     ]);
  67.                 default:
  68.                     return $this->redirectToRoute('subject_opinions', [
  69.                         'subject_nip' => $subject->getNip(),
  70.                     ]);
  71.             }
  72.         }
  73.         return $this->render('subject/index.html.twig', [
  74.             'searchForm' => $searchForm->createView(),
  75.         ]);
  76.     }
  77. }