src/Controller/BackOffice/DeviceConfigurationsController.php line 45

Open in your IDE?
  1. <?php
  2. namespace App\Controller\BackOffice;
  3. use App\Entity\Device\DeviceConfiguration;
  4. use App\Form\Type\BackOffice\DeviceConfigurationType;
  5. use App\Model\PaginatedSearchCriteria;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  9. use Symfony\Component\Form\FormFactoryInterface;
  10. use Symfony\Component\HttpFoundation\RedirectResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. /**
  15.  * @Route(path="device_configurations")
  16.  */
  17. class DeviceConfigurationsController extends AbstractController
  18. {
  19.     /**
  20.      * @var EntityManagerInterface
  21.      */
  22.     private $entityManager;
  23.     /**
  24.      * @var FormFactoryInterface
  25.      */
  26.     private $formFactory;
  27.     public function __construct(
  28.         EntityManagerInterface $entityManager,
  29.         FormFactoryInterface $formFactory
  30.     ) {
  31.         $this->entityManager $entityManager;
  32.         $this->formFactory $formFactory;
  33.     }
  34.     /**
  35.      * @param Request $request
  36.      * @return Response
  37.      * @Route(path="", methods={"GET"})
  38.      */
  39.     public function indexAction(Request $request): Response
  40.     {
  41.         $criteria = new PaginatedSearchCriteria($request->query);
  42.         $deviceConfigurations $this->entityManager
  43.             ->getRepository(DeviceConfiguration::class)
  44.             ->search($criteria);
  45.         return $this->render(
  46.             'backOffice/deviceConfigurations/index.html.twig',
  47.             [
  48.                 'deviceConfigurations' => $deviceConfigurations,
  49.             ]
  50.         );
  51.     }
  52.     /**
  53.      * @Route(path="/new", methods={"GET", "POST"})
  54.      * @param Request $request
  55.      * @return RedirectResponse|Response
  56.      */
  57.     public function newAction(Request $request)
  58.     {
  59.         $deviceConfiguration = new DeviceConfiguration();
  60.         $deviceConfigurationForm $this->formFactory
  61.             ->create(DeviceConfigurationType::class, $deviceConfiguration)
  62.             ->add('submit'SubmitType::class);
  63.         $deviceConfigurationForm->handleRequest($request);
  64.         if ($deviceConfigurationForm->isSubmitted() && $deviceConfigurationForm->isValid()) {
  65.             /** @var DeviceConfiguration $deviceConfiguration */
  66.             $deviceConfiguration $deviceConfigurationForm->getData();
  67.             $this->entityManager->persist($deviceConfiguration);
  68.             $this->entityManager->flush();
  69.             return $this->redirectToRoute(
  70.                 'app_backoffice_deviceconfigurations_edit',
  71.                 [
  72.                     'deviceId' => $deviceConfiguration->getDeviceId(),
  73.                 ]
  74.             );
  75.         }
  76.         return $this->render(
  77.             'backOffice/deviceConfigurations/new.html.twig',
  78.             [
  79.                 'deviceConfiguration' => $deviceConfiguration,
  80.                 'deviceConfigurationForm' => $deviceConfigurationForm->createView(),
  81.             ]
  82.         );
  83.     }
  84.     /**
  85.      * @Route(path="/{deviceId}", methods={"GET", "POST"})
  86.      * @param $deviceId
  87.      * @param Request $request
  88.      * @return Response
  89.      */
  90.     public function editAction($deviceIdRequest $request): Response
  91.     {
  92.         $deviceConfiguration $this->loadDeviceConfiguration($deviceId);
  93.         $deviceConfigurationForm $this->formFactory
  94.             ->create(DeviceConfigurationType::class, $deviceConfiguration)
  95.             ->add(
  96.                 'submit',
  97.                 SubmitType::class,
  98.                 [
  99.                     'label' => 'Save',
  100.                 ]
  101.             );
  102.         $deviceConfigurationForm->handleRequest($request);
  103.         if ($deviceConfigurationForm->isSubmitted() && $deviceConfigurationForm->isValid()) {
  104.             /** @var DeviceConfiguration $deviceConfiguration */
  105.             $deviceConfiguration $deviceConfigurationForm->getData();
  106.             $this->entityManager->persist($deviceConfiguration);
  107.             $this->entityManager->flush();
  108.             return $this->redirectToRoute('app_backoffice_deviceconfigurations_index');
  109.         }
  110.         return $this->render(
  111.             'backOffice/deviceConfigurations/edit.html.twig',
  112.             [
  113.                 'deviceConfiguration' => $deviceConfiguration,
  114.                 'deviceConfigurationForm' => $deviceConfigurationForm->createView(),
  115.             ]
  116.         );
  117.     }
  118.     /**
  119.      * @param $deviceId
  120.      * @return DeviceConfiguration
  121.      */
  122.     protected function loadDeviceConfiguration($deviceId): object
  123.     {
  124.         $deviceConfiguration $this->entityManager
  125.             ->getRepository(DeviceConfiguration::class)
  126.             ->find($deviceId);
  127.         if (!$deviceConfiguration) {
  128.             throw $this->createNotFoundException();
  129.         }
  130.         return $deviceConfiguration;
  131.     }
  132. }