src/Controller/AppsController.php line 55

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\{
  4.     Category,
  5.     Settings,
  6.     Rules,
  7.     Applications,
  8.     User,
  9.     LoginLogs
  10. };
  11. use App\Form\{
  12.     groupType,
  13.     categoryType
  14. };
  15. use Symfony\Component\Form\Extension\Core\Type\{
  16.     TextType,
  17.     TextareaType,
  18.     ChoiceType,
  19.     SubmitType
  20. };
  21. use App\Service\GroupPermissionsAccess;
  22. use Doctrine\Persistence\ManagerRegistry;
  23. use Symfony\Component\HttpFoundation\Response;
  24. use Symfony\Component\Routing\Annotation\Route;
  25. use Symfony\Component\HttpFoundation\JsonResponse;
  26. use Symfony\Component\HttpFoundation\Request;
  27. use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
  28. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Entity;
  29. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  30. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  31. use Symfony\Contracts\Translation\TranslatorInterface;
  32. use Knp\Component\Pager\PaginatorInterface;
  33. use Doctrine\ORM\EntityManagerInterface;
  34. class AppsController extends AbstractController
  35. {    
  36.     private $entityManager;
  37.     public function __construct(EntityManagerInterface $entityManager)
  38.     {
  39.         $this->entityManager $entityManager;
  40.     }
  41.     /**
  42.      * @Route("/apps", name="app_apps")
  43.      */
  44.     public function cats(ManagerRegistry $doctrineTranslatorInterface $translator): Response
  45.     {
  46.         $categories $doctrine->getRepository(Category::class)->findBy(['enabled' => 1]);
  47.         $settingsRepo $doctrine->getRepository(Settings::class);
  48.         return $this->render('frontend/pages/sites/apps/category.html.twig', [
  49.             'title' => $translator->trans('app.homepage') . ' :: ' $settingsRepo->find(1)->getContent()['pageTitle'],
  50.             'pageTitle' => $translator->trans('app.applist'),
  51.             'breadcrumb'    => [
  52.                 [$translator->trans('app.homepage'), $this->generateUrl('app_home')],
  53.                 [$translator->trans('app.applist'), $this->generateUrl('app_apps')]
  54.             ],
  55.             'settings' => $settingsRepo,
  56.             'categories' => $categories,
  57.             'pageColor' => $settingsRepo->find(1)->getContent()['pageColor']
  58.         ]);
  59.     }
  60.     /**
  61.      * @Route("/apps/{id}", name="app_apps_form")
  62.      * @ParamConverter("category", options={"mapping": {"id": "id"}})
  63.      */
  64.     public function apps(ManagerRegistry $doctrineTranslatorInterface $translatorRequest $requestCategory $category): Response
  65.     {
  66.         if ( !count($category->getQuestions()) > )
  67.         {
  68.             throw $this->createNotFoundException('404');
  69.         }
  70.         $this->denyAccessUnlessGranted('ROLE_USER');
  71.         $settingsRepo $doctrine->getRepository(Settings::class);
  72.         $entityManager $doctrine->getManager();
  73.         $formBuilder $this->createFormBuilder();
  74.         foreach ( $category->getQuestions() as $question )
  75.         {
  76.             if ( $question->getType() == )
  77.             {
  78.                 $formBuilder->add('answer_' $question->getId(), TextType::class, [
  79.                     'label' => $question->getName(),
  80.                     'required' => true,
  81.                 ]);
  82.             } elseif ( $question->getType() == )
  83.             {
  84.                 $formBuilder->add('answer_' $question->getId(), TextareaType::class, [
  85.                     'label' => $question->getName(),
  86.                     'required' => true,
  87.                 ]);
  88.             }
  89.         }
  90.         $form $formBuilder->getForm();
  91.         // handle it..
  92.         $form->handleRequest($request);
  93.         if($form->isSubmitted() && $form->isValid()){
  94.             // get some data
  95.             $application = new Applications();
  96.             $data $form->getData();
  97.             $application->setStatus(0);
  98.             $application->setUser($this->getUser());
  99.             $application->setCreatedAt(new \DateTimeImmutable());
  100.             $application->setAnswers($data);
  101.             $application->setCategory($category);
  102.             $entityManager->persist($application);
  103.             $entityManager->flush();
  104.             $this->addFlash('add_success''Twoje podanie zostało przesłane do sprawdzenia!');
  105.             return $this->redirectToRoute('app_apps');
  106.         }
  107.         return $this->render('frontend/pages/sites/apps/form.html.twig', [
  108.             'title' => $translator->trans('app.form_apps') . ' :: ' $settingsRepo->find(1)->getContent()['pageTitle'],
  109.             'pageTitle' => $translator->trans('app.form_apps'),
  110.             'breadcrumb'    => [
  111.                 [$translator->trans('app.homepage'), $this->generateUrl('app_home')],
  112.                 [$translator->trans('app.applist'), $this->generateUrl('app_apps')],
  113.                 [$translator->trans('app.form_apps'), $this->generateUrl('app_apps_form', ['id' => $category->getId()])]
  114.             ],
  115.             'category' => $category,
  116.             'settings' => $settingsRepo,
  117.             'form' => $form->createView(),
  118.             'pageColor' => $settingsRepo->find(1)->getContent()['pageColor']
  119.         ]);
  120.     }
  121. }