src/Controller/CatalogueController.php line 56

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\CatalogueAsset;
  4. use App\Entity\FamilleJ;
  5. use App\Entity\CategoryJ;
  6. use App\Entity\Catalogue;
  7. use App\Form\CatalogueType;
  8. use App\Entity\CategoryCatalogue;
  9. use App\Form\CategoryCatalogueType;
  10. use App\Entity\SousCategoryCatalogue;
  11. use App\Form\SousCategoryCatalogueType;
  12. use App\Service\TranslationWriter;
  13. use App\Service\CatalogueService;
  14. use App\Service\EmailService;
  15. use Twig\Environment;
  16. use Doctrine\ORM\EntityManagerInterface;
  17. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  18. use Symfony\Component\HttpFoundation\Request;
  19. use Symfony\Component\HttpFoundation\Response;
  20. use Symfony\Component\HttpFoundation\JsonResponse;
  21. use Symfony\Component\Routing\Annotation\Route;
  22. use Symfony\Component\Security\Core\Security;
  23. use Symfony\Component\Form\Extension\Core\Type\FileType;
  24. use Symfony\Component\Form\Extension\Core\Type\TextType;
  25. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  26. use Symfony\Component\Form\Extension\Core\Type\IntegerType;
  27. use Symfony\Bridge\Doctrine\Form\Type\EntityType;
  28. class CatalogueController extends AbstractController
  29. {
  30. private EntityManagerInterface $em;
  31. private Security $security;
  32. private EmailService $emailService;
  33. private Environment $twig;
  34. private CatalogueService $catalogueService;
  35. private TranslationWriter $translationWriter;
  36. // Le constructeur prend tous les services en paramètre
  37. public function __construct(
  38. EntityManagerInterface $em,
  39. Security $security,
  40. EmailService $emailService,
  41. Environment $twig,
  42. CatalogueService $catalogueService,
  43. TranslationWriter $translationWriter
  44. ) {
  45. $this->em = $em;
  46. $this->security = $security;
  47. $this->emailService = $emailService;
  48. $this->twig = $twig;
  49. $this->catalogueService = $catalogueService;
  50. $this->translationWriter = $translationWriter;
  51. }
  52. public function gestionCatalog(Request $request): Response
  53. {
  54. $catalogue = new Catalogue();
  55. $page = $request->query->getInt('page', 1);
  56. $limit = 10;
  57. $search = $request->query->get('search');
  58. $data = $this->catalogueService->getListeCatalogue($page, $limit, $search);
  59. //$data = $this->catalogueService->getListeCatalogue();
  60. $catalogs = $data['catalogs'];
  61. $pagesCount = $data['pagesCount'];
  62. $currentPage = $data['currentPage'];
  63. $searchTerm = $data['searchTerm'];
  64. $form = $this->createForm(CatalogueType::class, $catalogue);
  65. return $this->render('CatalogueVue/catalogue.html.twig', [
  66. 'form' => $form->createView(),
  67. 'catalogs' => $catalogs,
  68. 'pagesCount' => $pagesCount,
  69. 'currentPage' => $currentPage,
  70. 'searchTerm' => $searchTerm,
  71. ]);
  72. }
  73. public function mstopescreerarticle(Request $request): Response {
  74. $catalogue = new Catalogue();
  75. $categarticle=new CategoryCatalogue;
  76. $souscategory=new SousCategoryCatalogue;
  77. $data = $this->catalogueService->getIndexCreerarticle();
  78. $categorys = $data['categorys'];
  79. $souscategorys = $data['souscategorys'];
  80. $form = $this->createForm(CatalogueType::class, $catalogue);
  81. $form1 = $this->createForm(CategoryCatalogueType::class, $categarticle);
  82. $form2 = $this->createForm(SousCategoryCatalogueType::class, $souscategory);
  83. $form->handleRequest($request);
  84. if ($form->isSubmitted() ) {
  85. $type=$form->get('typeArticle')->getData();
  86. if($type=="ASSET"){
  87. $assetArt=new CatalogueAsset;
  88. $assetArt->setCatalogue($catalogue);
  89. $assetArt->setNumeroArticleAsset(1);
  90. $this->em->persist($assetArt);
  91. }
  92. // 💾 1. Sauvegarde catalogue
  93. $this->em->persist($catalogue);
  94. $this->em->flush(); // ⚠️ IMPORTANT pour avoir ID
  95. $this->em->refresh($catalogue);
  96. // 🔥 2. Sauvegarde traductions FR
  97. $this->translationWriter->create(
  98. 'Catalogue',
  99. $catalogue->getId(),
  100. 'designation',
  101. $catalogue->getDesignation()
  102. );
  103. /* $descript=$catalogue->getDescription();
  104. if($descript==null)
  105. $descript=" ";
  106. $this->translationWriter->create(
  107. 'Catalogue',
  108. $catalogue->getId(),
  109. 'description',$descript
  110. );*/
  111. $this->translationWriter->create(
  112. 'Catalogue',
  113. $catalogue->getId(),
  114. 'unite',
  115. $catalogue->getUnite()
  116. );
  117. // 💾 flush final
  118. $this->em->flush();
  119. return $this->redirectToRoute('mstopes_gestion_catalog');
  120. }
  121. return $this->render('CatalogueVue/mstopescreerarticle.html.twig', [
  122. 'souscategorys' => $souscategorys,
  123. 'categorys' => $categorys,
  124. 'form' => $form->createView(),
  125. 'form1' => $form1->createView(),
  126. 'form2' => $form2->createView(),
  127. ]);
  128. }
  129. public function listcategoryj( Request $request): JsonResponse
  130. {
  131. // Tableau de réponse
  132. $listnum4 = [];
  133. // Récupérer l'id envoyé
  134. $id = $request->request->get('id');
  135. // Récupérer la famille asset
  136. $famille = $this->em->getRepository(FamilleJ::class)->find($id);
  137. // Récupérer les categ asset
  138. $categs = $this->em->getRepository(CategoryJ::class) ->findByFamille($famille);
  139. // Valeur par défaut
  140. $listnum4[0] = 'choisir';
  141. // Remplir le tableau
  142. foreach ($categs as $dem) {
  143. $listnum4[$dem->getId()] = $dem->getLibele().'-'.$dem->getNomequip();
  144. }
  145. // Retour JSON
  146. return new JsonResponse($listnum4);
  147. }
  148. #[Route('/catalogue/{id}/edit', name: 'mstopes_modifier_article')]
  149. public function modifierArticle(
  150. Catalogue $catalogue,
  151. Request $request,
  152. EntityManagerInterface $em
  153. ): Response {
  154. $form = $this->createForm(CatalogueType::class, $catalogue);
  155. $form->handleRequest($request);
  156. if ($form->isSubmitted() && $form->isValid()) {
  157. $type=$form->get('typeArticle')->getData();
  158. if($type=="ASSET"){
  159. $assetArt=new CatalogueAsset;
  160. $assetArt->setCatalogue($catalogue);
  161. $assetArt->setNumeroArticleAsset(1);
  162. $this->em->persist($assetArt);
  163. }
  164. $catalogue->setDateModif(new \DateTimeImmutable());
  165. // Enregistrement
  166. $this->em->flush();
  167. // Retourne un succès (vous pouvez retourner un JSON pour fermer le modal en JS)
  168. return new JsonResponse(['success' => true]);
  169. }
  170. return $this->render('catalogueVue/modifier.html.twig'
  171. , [
  172. 'form' => $form->createView(),
  173. 'catalogue' => $catalogue,
  174. ]
  175. );
  176. }
  177. }