src/Controller/TemplateController.php line 36

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Template;
  4. use App\Form\TemplateType;
  5. use App\Repository\TemplateRepository;
  6. use App\Services\TemplateTools;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\PropertyAccess\PropertyAccess;
  12. use Symfony\Component\Routing\Annotation\Route;
  13. use App\Controller\MainController;
  14. use App\Controller\ParcoursController;
  15. use App\Controller\ProfileController;
  16. #[Route('/templates')]
  17. class TemplateController extends AbstractController
  18. {
  19.     #[Route(''name'app_template')]
  20.     public function templates(TemplateRepository $templateRepo): Response
  21.     {
  22.         return $this->render('template/liste.html.twig', [
  23.             'controller_name' => 'TemplateController',
  24.             'templates'=>$templateRepo->findAll()
  25.         ]);
  26.     }
  27.     #[Route('/new'name'app_template_new')]
  28.     public function new(Request $requestEntityManagerInterface $entityManagerTemplateTools $templatetools): Response
  29.     {
  30.         $actions =$templatetools->getMethods();
  31.         $entitiesData =$templatetools->getEntities($entityManager);
  32.         $template = new Template();
  33.         $templateForm $this->createForm(TemplateType::class, $template);
  34.         $templateForm->handleRequest($request);
  35.         if ($templateForm->isSubmitted() && $templateForm->isValid()) {
  36.             $data $templateForm->get("data")->getData();
  37.             $template->setData(json_decode($datatrue));
  38.             $entityManager->persist($template);
  39.             $entityManager->flush();
  40.             return $this->redirectToRoute("app_template_edit", [
  41.                 "id"=>$template->getId()
  42.             ]);
  43.         }
  44.         return $this->render('template/template.html.twig', [
  45.             'controller_name' => 'TemplateController',
  46.             'templateForm'=>$templateForm,
  47.             'template'=>$template,
  48.             'entitiesData'=>$entitiesData,
  49.             'actions'=>$actions
  50.         ]);
  51.     }
  52.     #[Route('/edit/{id}'name'app_template_edit')]
  53.     public function edit(Template $templateEntityManagerInterface $entityManagerTemplateTools $templatetools ): Response
  54.     {
  55.         $actions =$templatetools->getMethods();
  56.         $entitiesData =$templatetools->getEntities($entityManager);
  57.         $templateForm $this->createForm(TemplateType::class, $template);
  58.         $templateForm->get("data")->setData(json_encode($template->getData()));
  59.         return $this->render('template/template.html.twig', [
  60.             'controller_name' => 'TemplateController',
  61.             'templateForm'=>$templateForm,
  62.             'template'=>$template,
  63.             'entitiesData'=>$entitiesData,
  64.             'actions'=>$actions
  65.         ]);
  66.     }
  67.     #[Route('/save'name'app_template_save')]
  68.     public function save(Request $request,TemplateRepository $templateRepoEntityManagerInterface $entityManager ): Response
  69.     {
  70.         $templateId $request->request->get("id");
  71.         $template = isset($templateId) ? $templateRepo->findOneBy(["id"=>$templateId]):new Template();
  72.         $templateForm $this->createForm(TemplateType::class, $template);
  73.         $templateForm->handleRequest($request);
  74.         if ($templateForm->isValid()) {
  75.             $data $templateForm->get("data")->getData();
  76.             $template->setData(json_decode($datatrue));
  77.             $entityManager->persist($template);
  78.             $entityManager->flush();
  79.             return $this->json("OK");
  80.         }
  81.         else{
  82.             return $this->json("INVALID");
  83.         }
  84.     }
  85.     #[Route('/view/{id}'name'app_template_view')]
  86.     public function view(Template $template): Response
  87.     {
  88.         return $this->render('template/view.html.twig', [
  89.             'controller_name' => 'TemplateController',
  90.             'template'=>$template,
  91.         ]);
  92.     }
  93.     #[Route('/action'name'app_template_action')]
  94.     public function action(  Request $requestTemplateTools $templatetools): Response
  95.     {
  96.         $id $request->request->get("id");
  97.         $method $request->request->get("method");
  98.         $route $templatetools->isRoute($method);
  99.         if($route !== false){
  100.             $typedAction $templatetools->typedAction($method$route);
  101.             if(isset($typedAction["url"]))
  102.                 return  $this->json([
  103.                     "url"=>$this->generateUrl($typedAction["url"])
  104.                 ]);
  105.             return $this->redirectToRoute($route,[
  106.                 "id"=>$id
  107.             ]);
  108.         }
  109.         return $this->forward("App\\Controller\\$method",[
  110.             "id"=>$id
  111.         ]);
  112.     }
  113.     #[Route('/open/{id}'name'app_template_open')]
  114.     public function open(Template $template,  EntityManagerInterface $entityManagerTemplateTools $templatetools ): Response
  115.     {
  116.         $data= [
  117.           "a"=>"test A",
  118.           "b"=>"test B",
  119.           "template"=>$template,
  120.           "utilisateur"=>$this->getUser(),
  121.         ];
  122.         $html =$templatetools->readParams($template$data);
  123.         $formatedConditions =$templatetools->readConditions($template$data);
  124.         return $this->render('template/view.html.twig', [
  125.             'controller_name' => 'TemplateController',
  126.             'template'=>$template,
  127.             'html'=>$html,
  128.             "formatedConditions"=>$formatedConditions
  129.         ]);
  130.     }
  131.     public function use(Template $template$dataTemplateTools $templatetools$savedData=[], $mainId=0): Response
  132.     {
  133.         $data["template"]=$template;
  134.         $html =$templatetools->readParams($template$data);
  135.         $formatedConditions =$templatetools->readConditions($template$data);
  136.         return $this->render('template/view.html.twig', [
  137.             'controller_name' => 'TemplateController',
  138.             'template'=>$template,
  139.             'html'=>$html,
  140.             'savedData'=>$savedData,
  141.             "formatedConditions"=>$formatedConditions,
  142.             'mainId'=>$mainId
  143.         ]);
  144.     }
  145.     public function useHtml(Template $template$dataTemplateTools $templatetools): Response
  146.     {
  147.         $data["template"]=$template;
  148.         $html =$templatetools->readParams($template$data);
  149.         $formatedConditions =$templatetools->readConditions($template$data);
  150.         return $this->render('template/viewHtml.html.twig', [
  151.             'controller_name' => 'TemplateController',
  152.             'template'=>$template,
  153.             'html'=>$html,
  154.             "formatedConditions"=>$formatedConditions
  155.         ]);
  156.     }
  157. }