src/Controller/MainController.php line 186

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\BuAtelier;
  4. use App\Entity\CatMetiers;
  5. use App\Entity\Certificat;
  6. use App\Entity\Coloris;
  7. use App\Entity\Composants;
  8. use App\Entity\Droits;
  9. use App\Entity\Fibre;
  10. use App\Entity\FicheControle;
  11. use App\Entity\FicheDeveloppement;
  12. use App\Entity\FicheLi;
  13. use App\Entity\FicheRetourAtelier;
  14. use App\Entity\Fournisseur;
  15. use App\Entity\GroupesUtilisateur;
  16. use App\Entity\Jdearticle;
  17. use App\Entity\JdearticlecolorisLignecoloris;
  18. use App\Entity\JdearticleFournisseur;
  19. use App\Entity\JdecommandeAchat;
  20. use App\Entity\Jdelignes;
  21. use App\Entity\JdeparcoursReception;
  22. use App\Entity\JdeqteExp;
  23. use App\Entity\Jdestocks;
  24. use App\Entity\NotationHa;
  25. use App\Entity\ParametrageEchantillons;
  26. use App\Entity\Saisons;
  27. use App\Entity\TypeMail;
  28. use Symfony\Component\HttpFoundation\Request;
  29. use Symfony\Component\HttpFoundation\Session\Session;
  30. use App\Entity\Utilisateurs;
  31. use App\Form\AtelierType;
  32. use App\Form\CategorieMetierType;
  33. use App\Form\CertificatType;
  34. use App\Form\ColorisType;
  35. use App\Form\DroitType;
  36. use App\Form\FibreType;
  37. use App\Form\FournisseurType;
  38. use App\Form\SaisonType;
  39. use App\Form\TypeMailType;
  40. use App\Form\UtilisateurType;
  41. use App\Form\ProfilType;
  42. use App\Service\DatatablesHomeService;
  43. use App\Service\ExcelService;
  44. use App\Service\MailService;
  45. use App\Service\DatatablesService;
  46. use Doctrine\ORM\EntityManagerInterface;
  47. use Symfony\Component\HttpFoundation\JsonResponse;
  48. use Symfony\Component\Routing\Attribute\Route;
  49. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  50. use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
  51. use Symfony\Component\HttpFoundation\BinaryFileResponse;
  52. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  53. use Symfony\Contracts\Translation\TranslatorInterface;
  54. ini_set('memory_limit''-1');
  55. ini_set('max_execution_time''0');
  56. class MainController extends BaseController
  57. {
  58.   protected $params = array();
  59.   public function __construct(private EntityManagerInterface $em, private TranslatorInterface $translator, private UserPasswordHasherInterface $encoder
  60.     private ContainerBagInterface $containerbag, private DatatablesHomeService $datatable_home_service, private MailService $mail_service,
  61.     private DatatablesService $datatables_service)
  62.   {
  63.     $this->mail_service $mail_service;
  64.     $this->containerbag $containerbag;
  65.     $this->datatables_service $datatables_service;
  66.     $this->datatable_home_service $datatable_home_service;
  67.     $this->params['leftbar_open'] = 'parametrages';
  68.     $this->params['leftbar_open_2'] = null;
  69.     $this->params['title'] = null;
  70.     $this->encoder $encoder;
  71.     $this->em $em;
  72.     $this->params['mdatas'] = json_encode(array());
  73.   }
  74.   #[Route(path'/export_table_xls/{table}'name'export_table_xls')]
  75.   public function export_table_xls(Request $request$table){
  76.     $root_path $this->containerbag->get('kernel.project_dir')."/public/xls/";
  77.     $excel = new ExcelService;
  78.     
  79.     switch($table){
  80.       case 'jdearticles':
  81.         $header = array('Id''Code article''Coloris''Taille''Imdsc1''Imdsc2''Cout''Reference''Date import''Code matiere''Unite');
  82.         $excel->dataRows[] = $header;
  83.         $array $this->em->getRepository(Jdearticle::class)->getAsArray();
  84.         break;
  85.       case 'jdearticles_fournisseurs':
  86.         $header = array('Id''Code article''Code fournisseur''Date import''Référence fournisseur');
  87.         $excel->dataRows[] = $header;
  88.         $array $this->em->getRepository(JdearticleFournisseur::class)->getAsArray();
  89.         break;
  90.       case 'jdelignes':
  91.         $header = array('Id''Code ligne''Libellé ligne''Date import');
  92.         $excel->dataRows[] = $header;
  93.         $array $this->em->getRepository(Jdelignes::class)->getAsArray();
  94.         break;
  95.       case 'jdecommandeachat':
  96.         $header = array('Id''Société''N° de commande''Type commande''Ligne commande',
  97.           'Magasin''Code fournisseur''Code livre''Date livraison demandé''Date commande',
  98.           'Date livraison promise''Date livraison réelle''Date supression''Date mise en compta',
  99.           'Code article''Type stockage article''Prochain statut''Dernier statut''Unité mesure achat',
  100.           'Quantité commande''Quantité reçue''Cout unitaire achat''Cout total achat''Nb modif sur ligne',
  101.           'Date client''User saisie cmd''User derniere modif''Date maj''Heure maj''Date import');
  102.         $excel->dataRows[] = $header;
  103.         $array $this->em->getRepository(JdecommandeAchat::class)->getAsArray();
  104.         break;
  105.       case 'jdeparcoursreception':
  106.         $header = array('Id''Etape''N° de commande''Type commande''Code article''Quantité''Unite de mesure',
  107.         'Date de réception''Date import');
  108.         $excel->dataRows[] = $header;
  109.         $array $this->em->getRepository(JdeparcoursReception::class)->getAsArray();
  110.         break;
  111.       case 'jdestock':
  112.         $header = array('Id''Code article''Magasin''Emplacement''Quantité controle''Unité mesure stockage''Cout total',
  113.         'Quantité stock''Quantité transit''Date import');
  114.         $excel->dataRows[] = $header;
  115.         $array $this->em->getRepository(Jdestocks::class)->getAsArray();
  116.         break;
  117.       case 'jdearticlelignecoloris':
  118.         $header = array('Id''Code article''Ligne''Coloris ligne''Date import');
  119.         $excel->dataRows[] = $header;
  120.         $array $this->em->getRepository(JdearticlecolorisLignecoloris::class)->getAsArray();
  121.         break;
  122.       case 'jdeqteexp':
  123.         $header = array('Id''Id atelier''Code article''Unité''Quantité''Cout''Date''Date import');
  124.         $excel->dataRows[] = $header;
  125.         $array $this->em->getRepository(JdeqteExp::class)->getAsArray();
  126.         break;
  127.     }
  128.     $excel->setDatas($array);
  129.     $filename bin2hex(random_bytes(8)).'_'.$table;
  130.     $file $excel->getExcelFromCommand($filename$root_path);
  131.     $response = new BinaryFileResponse($root_path.$file);
  132.     $response->setContentDisposition(
  133.       ResponseHeaderBag::DISPOSITION_ATTACHMENT,
  134.       $file
  135.   );
  136.     return $response;
  137.   }
  138.   #[Route(path'/access_denied'name'forbidden_access')]
  139.   public function forbidden_access(Request $request){
  140.     $this->params['leftbar_open'] = null;
  141.     return $this->render('access_denied.html.twig'$this->params);
  142.   }
  143.   public function redirect_home(Request $request){
  144.     return $this->redirectToRoute('index');
  145.   }
  146.   #[Route(path'/error'name'custom_error')]
  147.   public function error(Request $request)
  148.   {
  149.     $email_administrateur $this->containerbag->get('app.email_administrateur');
  150.     /** @var Session $session */
  151.     $session $request->getSession();
  152.     $code $session->getFlashBag()->get('code')[0];
  153.     $referer $session->getFlashBag()->get('referer');
  154.     $erreur $session->getFlashBag()->get('erreur');
  155.     $line $session->getFlashBag()->get('line');
  156.     $this->params['leftbar_open'] = null;
  157.     $this->params['code'] = $code;
  158.     $message null;
  159.     $message_admin null;
  160.     switch($code){
  161.       case 404:
  162.         $message "La page demandée n'existe pas";
  163.         break;
  164.       case 500:
  165.         $message "Une erreur est survenue. Un mail a Ã©té envoyé a l'administrateur";
  166.         $message_admin "Erreur ".$code."<br>Page: ".$referer[0]."<br>Erreur: ".$erreur[0]." - Ligne ".$line[0];
  167.         $content_mail $this->renderView(
  168.           'Mail/administrateur_mail_erreur.html.twig',
  169.           array(
  170.             'message_admin' => $message_admin
  171.           )
  172.         );
  173.         $this->mail_service->setDestinataires(array($email_administrateur));
  174.         $this->mail_service->setDatas($content_mail$content_mail"Webqualite - Erreur""Webqualite - Erreur");
  175.         $this->mail_service->send();
  176.         break;
  177.     }
  178.     $this->params['message'] = $message;
  179.     $this->params['message_admin'] = $message_admin;
  180.     return $this->render('error_custom.html.twig'$this->params);
  181.   }
  182.   #[Route(path'/'name'index')]
  183.   public function index(Request $request)
  184.   {
  185.     $this->params['leftbar_open'] = null;
  186.     switch($this->getUser()->getDroits()->getRole()){
  187.       case "ROLE_SUPERADMIN":
  188.       case "ROLE_ADMIN":
  189.       case "ROLE_RESPONSABLE_QUALITE":
  190.         $table_qualite $this->datatable_home_service->getSuperadminControlesReception()->handleRequest($request);
  191.         if ($table_qualite->isCallback()) {
  192.           return $table_qualite->getResponse();
  193.         }
  194.         $this->params['datatable_qualite'] = $table_qualite;
  195.         $table_atelier $this->datatable_home_service->getSuperadminAtelierAttente($this->getUser())->handleRequest($request);
  196.         if ($table_atelier->isCallback()) {
  197.           return $table_atelier->getResponse();
  198.         }
  199.         $this->params['datatable_atelier'] = $table_atelier;
  200.         $bu_id = ($this->getUser()->getBu() != null)?$this->getUser()->getBu()->getId():null;
  201.         $this->params['nombre_attentes'] = $this->em->getRepository(FicheControle::class)->countStatut(10$bu_id)['cnt'];
  202.         $this->params['nombre_attentes_decision'] = $this->em->getRepository(FicheControle::class)->countStatut(9$bu_id)['cnt'];
  203.         $this->params['nombre_attentes_decision_nouvelles_matieres'] = $this->em->getRepository(FicheControle::class)->countStatut(20$bu_id)['cnt'];
  204.         $this->params['atelier_attente_decision'] = $this->em->getRepository(FicheRetourAtelier::class)->countAttenteDecision()['cnt'];
  205.         $this->params['atelier_attente_atelier'] = $this->em->getRepository(FicheRetourAtelier::class)->countAttenteAtelier()['cnt'];
  206.         $this->params['developpements_current'] = $this->em->getRepository(FicheDeveloppement::class)->countCurrentDeveloppement()['cnt'];
  207.         break;
  208.       case "ROLE_RESPONSABLE_CONTROLE_BU":
  209.       case "ROLE_TECHNICIEN_CONTROLE_BU":
  210.       case "ROLE_RESPONSABLE_COLORIS":
  211.       case "ROLE_TECHNICIEN_COLORIS_SP":
  212.       case "ROLE_RESPONSABLE_COLORIS_ATELIER":
  213.       case "ROLE_TECHNICIEN_COLORIS_ATELIER":
  214.       case "ROLE_DEVELOPPEUR_MATIERE":
  215.       case "ROLE_TECHNICIEN_CONTROLE_LAIZES":
  216.       case "ROLE_TECHNICIEN_BU_ATELIER":
  217.       case "ROLE_ACHAT":
  218.       case "ROLE_MAGASIN":
  219.       case "ROLE_ASSISTANT_QUALITE":
  220.         $bu_id = ($this->getUser()->getBu() != null)?$this->getUser()->getBu()->getId():null;
  221.         $this->params['nombre_attentes'] = $this->em->getRepository(FicheControle::class)->countStatut(10$bu_id)['cnt'];
  222.         $this->params['nombre_attentes_decision'] = $this->em->getRepository(FicheControle::class)->countStatut(9$bu_id)['cnt'];
  223.         $this->params['nombre_attentes_decision_nouvelles_matieres'] = $this->em->getRepository(FicheControle::class)->countStatut(20$bu_id)['cnt'];
  224.         $this->params['developpements_current'] = $this->em->getRepository(FicheDeveloppement::class)->countCurrentDeveloppement()['cnt'];
  225.         $table_qualite $this->datatable_home_service->getFournisseurDerogation($this->getUser())->handleRequest($request);
  226.         if ($table_qualite->isCallback()) {
  227.           return $table_qualite->getResponse();
  228.         }
  229.         $this->params['datatable_qualite'] = $table_qualite;
  230.         break;
  231.       case "ROLE_CONSULTATION":
  232.       case "ROLE_ACHAT_APPRO":
  233.         $bu_id = ($this->getUser()->getBu() != null)?$this->getUser()->getBu()->getId():null;
  234.         $this->params['nombre_attentes'] = $this->em->getRepository(FicheControle::class)->countStatut(10$bu_id)['cnt'];
  235.         $this->params['nombre_attentes_decision'] = $this->em->getRepository(FicheControle::class)->countStatut(9$bu_id)['cnt'];
  236.         $this->params['nombre_attentes_decision_nouvelles_matieres'] = $this->em->getRepository(FicheControle::class)->countStatut(20$bu_id)['cnt'];
  237.         $this->params['developpements_current'] = $this->em->getRepository(FicheDeveloppement::class)->countCurrentDeveloppement()['cnt'];
  238.         break;
  239.       case "ROLE_ATELIER":
  240.         $this->params['atelier_attente_decision'] = $this->em->getRepository(FicheRetourAtelier::class)->countAttenteDecision($this->getUser()->getAtelier()->getId())['cnt'];
  241.         $this->params['atelier_attente_atelier'] = $this->em->getRepository(FicheRetourAtelier::class)->countAttenteAtelier($this->getUser()->getAtelier()->getId())['cnt'];
  242.         $table_atelier_attente_decision $this->datatable_home_service->getAtelierAttenteDecision($this->getUser())->handleRequest($request);
  243.         if ($table_atelier_attente_decision->isCallback()) {
  244.           return $table_atelier_attente_decision->getResponse();
  245.         }
  246.         $this->params['datatable_atelier_attente_decision'] = $table_atelier_attente_decision;
  247.         $table_atelier $this->datatable_home_service->getAtelierAttenteAtelier($this->getUser())->handleRequest($request);
  248.         if ($table_atelier->isCallback()) {
  249.           return $table_atelier->getResponse();
  250.         }
  251.         $this->params['datatable_atelier_attente'] = $table_atelier;
  252.         break;
  253.       case "ROLE_RESPONSABLE_QUALITE_PRODUITS_FINIS":
  254.       case "ROLE_PLANIFICATION":
  255.       case "ROLE_RESPONSABLE_CONTROLE_PRODUITS_FINIS":
  256.         $this->params['atelier_attente_decision'] = $this->em->getRepository(FicheRetourAtelier::class)->countAttenteDecision()['cnt'];
  257.         $this->params['atelier_attente_atelier'] = $this->em->getRepository(FicheRetourAtelier::class)->countAttenteAtelier()['cnt'];
  258.         $table_atelier_attente_decision $this->datatable_home_service->getAtelierAttenteDecision($this->getUser())->handleRequest($request);
  259.         if ($table_atelier_attente_decision->isCallback()) {
  260.           return $table_atelier_attente_decision->getResponse();
  261.         }
  262.         $this->params['datatable_atelier_attente_decision'] = $table_atelier_attente_decision;
  263.         break;
  264.       case "ROLE_RESPONSABLE_BU_ATELIER":
  265.         $this->params['atelier_attente_decision'] = $this->em->getRepository(FicheRetourAtelier::class)->countAttenteDecision($this->getUser()->getAtelier()->getId())['cnt'];
  266.         $this->params['atelier_attente_atelier'] = $this->em->getRepository(FicheRetourAtelier::class)->countAttenteAtelier($this->getUser()->getAtelier()->getId())['cnt'];
  267.         $table_atelier_attente_decision $this->datatable_home_service->getAtelierAttenteDecision($this->getUser())->handleRequest($request);
  268.         if ($table_atelier_attente_decision->isCallback()) {
  269.           return $table_atelier_attente_decision->getResponse();
  270.         }
  271.         $this->params['datatable_atelier_attente_decision'] = $table_atelier_attente_decision;
  272.         $table_atelier $this->datatable_home_service->getAtelierAttenteAtelier($this->getUser())->handleRequest($request);
  273.         if ($table_atelier->isCallback()) {
  274.           return $table_atelier->getResponse();
  275.         }
  276.         $this->params['datatable_atelier_attente'] = $table_atelier;
  277.         $bu_id = ($this->getUser()->getBu() != null)?$this->getUser()->getBu()->getId():null;
  278.         $this->params['nombre_attentes'] = $this->em->getRepository(FicheControle::class)->countStatut(10$bu_id)['cnt'];
  279.         $this->params['nombre_attentes_decision'] = $this->em->getRepository(FicheControle::class)->countStatut(9$bu_id)['cnt'];
  280.         $this->params['nombre_attentes_decision_nouvelles_matieres'] = $this->em->getRepository(FicheControle::class)->countStatut(20$bu_id)['cnt'];
  281.         $this->params['developpements_current'] = $this->em->getRepository(FicheDeveloppement::class)->countCurrentDeveloppement()['cnt'];
  282.         $table_qualite $this->datatable_home_service->getFournisseurDerogation($this->getUser())->handleRequest($request);
  283.         if ($table_qualite->isCallback()) {
  284.           return $table_qualite->getResponse();
  285.         }
  286.         $this->params['datatable_qualite'] = $table_qualite;
  287.         break;
  288.       case "ROLE_ADMIN_FOURNISSEUR":
  289.       case "ROLE_FOURNISSEUR":
  290.         $table_qualite $this->datatable_home_service->getFournisseurDerogation($this->getUser())->handleRequest($request);
  291.         if ($table_qualite->isCallback()) {
  292.           return $table_qualite->getResponse();
  293.         }
  294.         $this->params['datatable_qualite'] = $table_qualite;
  295.         $this->params['nombre_attentes'] = $this->em->getRepository(FicheControle::class)->countStatut(10null$this->getUser()->getFournisseur()->getId())['cnt'];
  296.         $this->params['nombre_derogations'] = $this->em->getRepository(FicheControle::class)->countDeroFournisseur($this->getUser()->getFournisseur()->getId())['cnt'];
  297.         $scores $this->em->getRepository(FicheControle::class)->sumPointsFournisseur($this->getUser()->getFournisseur()->getId());
  298.         $perf 0;
  299.         if($scores != null && $scores['totalscoref'] != 0){
  300.           $perf round(($scores['scoref']/$scores['totalscoref'])*100,2);
  301.         }
  302.         $this->params['perfannuelle'] = $perf;
  303.         $totalColoris $this->em->getRepository(FicheLi::class)->countFichesFournisseur($this->getUser()->getFournisseur()->getId(), true);
  304.         $okColoris $this->em->getRepository(FicheLi::class)->countFichesFournisseur($this->getUser()->getFournisseur()->getId(), false);
  305.         $perfli 0;
  306.         if($totalColoris != null && $totalColoris['cnt'] != 0){
  307.           $perfli round(($okColoris['cnt']/$totalColoris['cnt'])*100,2);
  308.         }else{
  309.           $perfli 0;
  310.         }
  311.         $this->params['perfli'] = $perfli;
  312.         break;
  313.     }
  314.     return $this->render('index.html.twig'$this->params);
  315.   }
  316.   #[Route(path'/profil'name'profil')]
  317.   public function profil(Request $request)
  318.   {
  319.     $this->params['title'] = 'Mon profil';
  320.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  321.     $object $this->em->getRepository(Utilisateurs::class)->find($this->getUser()->getId());
  322.     $form $this->createForm(ProfilType::class, $object);
  323.     $form->handleRequest($request);
  324.     if ($form->isSubmitted() && $form->isValid()) {
  325.       $object $form->getData();
  326.       if ($object->getPlainPassword() != "" && $object->getPlainPassword() != null) {
  327.         $encodedPassword $this->encoder->hashPassword($object$object->getPlainPassword());//, $object->getSalt()
  328.         $object->setPassword($encodedPassword);
  329.       }
  330.       $this->em->persist($object);
  331.       $this->em->flush();
  332.       //Mail utilisateur
  333.       $this->mail_service->createMail(
  334.         1$this->getUser()->getEmail()
  335.       );
  336.       $this->mail_service->setDestinataires(array($object->getEmail()), $this->getUser()->getLangue());
  337.       $this->mail_service->send();
  338.       //Mail administrateur
  339.       $societe "Simone Pérèle";
  340.       if($object->getFournisseur() != null){
  341.         $societe $object->getFournisseur()->getName();
  342.       }else if($object->getAtelier() != null){
  343.         $societe $object->getAtelier()->getNameFr();
  344.       }
  345.       $this->mail_service->createMail(2$this->getUser()->getEmail(),
  346.         array(
  347.           "Var1" => $object->getNom(),
  348.           "Var2" => $object->getPrenom(),
  349.           "Var3" => $societe
  350.         )
  351.       );
  352.       $this->mail_service->send();
  353.       return new JsonResponse(array('success' => true));
  354.     }
  355.     $this->params['form'] = $form->createView();
  356.     return $this->render('Parametrages/profil.html.twig'$this->params);
  357.   }
  358.   #[Route(path'/ateliers'name'ateliers')]
  359.   public function ateliers(Request $request)
  360.   {
  361.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  362.     $table $this->datatables_service->getTableAteliers()->handleRequest($request);
  363.     if ($table->isCallback()) {
  364.       return $table->getResponse();
  365.     }
  366.     $this->params['datatable'] = $table;
  367.     return $this->render('Parametrages/ateliers.html.twig'$this->params);
  368.   }
  369.   #[Route(path'/parametrages/atelier/{slug}'name'atelier'defaults: ['slug' => 0])]
  370.   public function atelier(Request $request$slug)
  371.   {
  372.     $this->params['title'] = 'Atelier';
  373.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  374.     $object = new BuAtelier();
  375.     if ($slug != 0) {
  376.       $object $this->em->getRepository(BuAtelier::class)->find($slug);
  377.     }
  378.     $form $this->createForm(AtelierType::class, $object);
  379.     $form->handleRequest($request);
  380.     if ($form->isSubmitted() && $form->isValid()) {
  381.       $object $form->getData();
  382.       $this->em->persist($object);
  383.       $this->em->flush();
  384.       return $this->redirectToRoute('ateliers');
  385.     }
  386.     $this->params['form'] = $form->createView();
  387.     return $this->render('Parametrages/atelier.html.twig'$this->params);
  388.   }
  389.   #[Route(path'/parametrages/notation-achat'name'notationha')]
  390.   public function notationha(Request $request){
  391.     $this->params['title'] = 'Notation achat';
  392.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  393.     $this->params['notation_achat_developpement'] = $this->em->getRepository(NotationHa::class)->find(1);
  394.     $this->params['notation_achat_qualite'] = $this->em->getRepository(NotationHa::class)->find(2);
  395.     $this->params['notation_achat_coloris'] = $this->em->getRepository(NotationHa::class)->find(3);
  396.     return $this->render('Parametrages/notationachat.html.twig'$this->params);
  397.   }
  398.   #[Route(path'/parametrages/parametrage-echantillon'name'parametrageechantillon')]
  399.   public function parametrageechantillon(Request $request){
  400.     $this->params['title'] = 'Paramétrage Ã©chantillon';
  401.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  402.     $this->params['parametrages'] = $this->em->getRepository(ParametrageEchantillons::class)->findAll();
  403.     return $this->render('Parametrages/parametrageechantillon.html.twig'$this->params);
  404.   }
  405.   #[Route(path'/parametrages/menus'name'menus')]
  406.   public function menus(Request $request)
  407.   {
  408.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  409.     $table $this->datatables_service->getTableDroits()->handleRequest($request);
  410.     if ($table->isCallback()) {
  411.       return $table->getResponse();
  412.     }
  413.     $this->params['datatable'] = $table;
  414.     return $this->render('Parametrages/menus.html.twig'$this->params);
  415.   }
  416.   #[Route(path'/parametrages/categorie-metier/{slug}'name'categorie'defaults: ['slug' => 0])]
  417.   public function categorie(Request $request$slug)
  418.   {
  419.     $this->params['title'] = 'Categorie métier';
  420.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  421.     $object = new CatMetiers();
  422.     if ($slug != 0) {
  423.       $object $this->em->getRepository(CatMetiers::class)->find($slug);
  424.     }
  425.     $form $this->createForm(CategorieMetierType::class, $object);
  426.     $form->handleRequest($request);
  427.     if ($form->isSubmitted() && $form->isValid()) {
  428.       $object $form->getData();
  429.       $this->em->persist($object);
  430.       $this->em->flush();
  431.       return $this->redirectToRoute('categories');
  432.     }
  433.     $this->params['form'] = $form->createView();
  434.     return $this->render('Parametrages/categorie.html.twig'$this->params);
  435.   }
  436.   #[Route(path'/parametrages/categories-metier'name'categories')]
  437.   public function categories(Request $request)
  438.   {
  439.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  440.     $table $this->datatables_service->getTableCategories()->handleRequest($request);
  441.     if ($table->isCallback()) {
  442.       return $table->getResponse();
  443.     }
  444.     $this->params['datatable'] = $table;
  445.     $this->params['composants'] = $this->em->getRepository(Composants::class)->getAll();
  446.     return $this->render('Parametrages/categoriesmetier.html.twig'$this->params);
  447.   }
  448.   
  449.   #[Route(path'/parametrages/typemails'name'type_mails')]
  450.   public function typemails(Request $request)
  451.   {
  452.     $this->params['leftbar_open_2'] = 'parametrages_messagerie';
  453.     $table $this->datatables_service->getDatatableTypeMails()->handleRequest($request);
  454.     if ($table->isCallback()) {
  455.       return $table->getResponse();
  456.     }
  457.     $this->params['datatable'] = $table;
  458.     return $this->render('Parametrages/typemails.html.twig'$this->params);
  459.   }
  460.   #[Route(path'/parametrages/typemail/{slug}'name'type_mail'defaults: ['slug' => 0])]
  461.   public function typemail(Request $request$slug)
  462.   {
  463.     $this->params['title'] = 'Type mail';
  464.     $this->params['leftbar_open_2'] = 'parametrages_messagerie';
  465.     $object = new TypeMail();
  466.     if ($slug != 0) {
  467.       $object $this->em->getRepository(TypeMail::class)->find($slug);
  468.     }
  469.     $form $this->createForm(TypeMailType::class, $object);
  470.     $form->handleRequest($request);
  471.     if ($form->isSubmitted() && $form->isValid()) {
  472.       $object $form->getData();
  473.       $this->em->persist($object);
  474.       $this->em->flush();
  475.       return $this->redirectToRoute('type_mails');
  476.     }
  477.     $this->params['form'] = $form->createView();
  478.     return $this->render('Parametrages/typemail.html.twig'$this->params);
  479.   }
  480.   #[Route(path'/parametrages/groupes_utilisateurs'name'groupes_utilisateurs')]
  481.   public function groupes_utilisateurs(Request $request)
  482.   {
  483.     $params $request->request;
  484.     $this->params['leftbar_open_2'] = 'parametrages_messagerie';
  485.     $table $this->datatables_service->getDatatableGroupesUtilisateurs($params)->handleRequest($request);
  486.     if ($table->isCallback()) {
  487.       return $table->getResponse();
  488.     }
  489.     $this->params['datatable'] = $table;
  490.     $this->params['groupes'] = $this->em->getRepository(GroupesUtilisateur::class)->getAll();
  491.     $this->params['utilisateurs'] = $this->em->getRepository(Utilisateurs::class)->getAll();
  492.     return $this->render('Parametrages/groupesutilisateurs.html.twig'$this->params);
  493.   }
  494.   #[Route(path'/parametrages/groupes_type_mails'name'groupes_type_mails')]
  495.   public function groupes_type_mails(Request $request)
  496.   {
  497.     $params $request->request;
  498.     $this->params['leftbar_open_2'] = 'parametrages_messagerie';
  499.     $table $this->datatables_service->getDatatableLightTypeMails()->handleRequest($request);
  500.     if ($table->isCallback()) {
  501.       return $table->getResponse();
  502.     }
  503.     $table_groupes $this->datatables_service->getDatatableGroupes($params)->handleRequest($request);
  504.     if ($table_groupes->isCallback()) {
  505.       return $table_groupes->getResponse();
  506.     }
  507.     $table_copie_groupes $this->datatables_service->getDatatableGroupesCopie($params)->handleRequest($request);
  508.     if ($table_copie_groupes->isCallback()) {
  509.       return $table_copie_groupes->getResponse();
  510.     }
  511.     $this->params['datatable'] = $table;
  512.     $this->params['datatable_groupe'] = $table_groupes;
  513.     $this->params['datatable_copie_groupes'] = $table_copie_groupes;
  514.     $this->params['groupes'] = $this->em->getRepository(GroupesUtilisateur::class)->getAll();
  515.     return $this->render('Parametrages/groupestypemails.html.twig'$this->params);
  516.   }
  517.   #[Route(path'/parametrages/coloris'name'coloris')]
  518.   public function coloris(Request $request)
  519.   {
  520.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  521.     $table $this->datatables_service->getDatatableColoris()->handleRequest($request);
  522.     if ($table->isCallback()) {
  523.       return $table->getResponse();
  524.     }
  525.     $table_secondaire $this->datatables_service->getDatatableColorisSecondaire()->handleRequest($request);
  526.     if ($table_secondaire->isCallback()) {
  527.       return $table_secondaire->getResponse();
  528.     }
  529.     $this->params['datatable_coloris'] = $table;
  530.     $this->params['datatable_coloris_secondaire'] = $table_secondaire;
  531.     return $this->render('Parametrages/coloris.html.twig'$this->params);
  532.   }
  533.   #[Route(path'/parametrages/form_coloris/{slug}'name'color'defaults: ['slug' => 0])]
  534.   public function coloris_secondaire(Request $request$slug)
  535.   {
  536.     $this->params['title'] = 'Coloris';
  537.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  538.     $object = new Coloris();
  539.     if ($slug != 0) {
  540.       $object $this->em->getRepository(Coloris::class)->find($slug);
  541.     }
  542.     $form $this->createForm(ColorisType::class, $object);
  543.     $form->handleRequest($request);
  544.     if ($form->isSubmitted() && $form->isValid()) {
  545.       $object $form->getData();
  546.       if($object->getJde() == null){
  547.         $object->setJde(0);
  548.       }
  549.       $this->em->persist($object);
  550.       $this->em->flush();
  551.       return $this->redirectToRoute('coloris');
  552.     }
  553.     $this->params['form'] = $form->createView();
  554.     return $this->render('Parametrages/colorissecondaire.html.twig'$this->params);
  555.   }
  556.   #[Route(path'/parametrages/fibre/{slug}'name'fibre'defaults: ['slug' => 0])]
  557.   public function fibre(Request $request$slug)
  558.   {
  559.     $this->params['title'] = 'Fibre';
  560.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  561.     $object = new Fibre();
  562.     if ($slug != 0) {
  563.       $object $this->em->getRepository(Fibre::class)->find($slug);
  564.     }
  565.     $form $this->createForm(FibreType::class, $object);
  566.     $form->handleRequest($request);
  567.     if ($form->isSubmitted() && $form->isValid()) {
  568.       $object $form->getData();
  569.       $this->em->persist($object);
  570.       $this->em->flush();
  571.       return $this->redirectToRoute('fibres');
  572.     }
  573.     $this->params['form'] = $form->createView();
  574.     return $this->render('Parametrages/fibre.html.twig'$this->params);
  575.   }
  576.   #[Route(path'/parametrages/fibres'name'fibres')]
  577.   public function fibres(Request $request)
  578.   {
  579.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  580.     $table $this->datatables_service->getDatatableFibres()->handleRequest($request);
  581.     if ($table->isCallback()) {
  582.       return $table->getResponse();
  583.     }
  584.     $this->params['datatable'] = $table;
  585.     return $this->render('Parametrages/fibres.html.twig'$this->params);
  586.   }
  587.   #[Route(path'/parametrages/fournisseurs'name'fournisseurs')]
  588.   public function fournisseurs(Request $request)
  589.   {
  590.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  591.     $table $this->datatables_service->getDatatableFournisseurs($request->request)->handleRequest($request);
  592.     if ($table->isCallback()) {
  593.       return $table->getResponse();
  594.     }
  595.     $this->params['datatable'] = $table;
  596.     return $this->render('Parametrages/fournisseurs.html.twig'$this->params);
  597.   }
  598.    #[Route(path'/parametrages/fournisseur/{slug}'name'fournisseur'defaults: ['slug' => 0])]
  599.   public function fournisseur(Request $request$slug)
  600.   {
  601.     $this->params['title'] = 'Fournisseur';
  602.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  603.     $object = new Fournisseur();
  604.     if ($slug != 0) {
  605.       $object $this->em->getRepository(Fournisseur::class)->find($slug);
  606.     }
  607.     $form $this->createForm(FournisseurType::class, $object);
  608.     $form->handleRequest($request);
  609.     if ($form->isSubmitted() && $form->isValid()) {
  610.       $object $form->getData();
  611.       $this->em->persist($object);
  612.       $this->em->flush();
  613.       return $this->redirectToRoute('fournisseurs');
  614.     }
  615.     $this->params['form'] = $form->createView();
  616.     return $this->render('Parametrages/fournisseur.html.twig'$this->params);
  617.   }
  618.   #[Route(path'/gestion/utilisateurs'name'utilisateurs')]
  619.   public function utilisateurs(Request $request)
  620.   {
  621.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  622.     $table_users $this->datatables_service->getDatatableUsers($request->request$this->getUser())->handleRequest($request);
  623.     if ($table_users->isCallback()) {
  624.       return $table_users->getResponse();
  625.     }
  626.     $this->params['datatable'] = $table_users;
  627.     return $this->render('Parametrages/utilisateurs.html.twig'$this->params);
  628.   }
  629.   #[Route(path'/gestion/utilisateur/{slug}'name'utilisateur'defaults: ['slug' => 0])]
  630.   public function utilisateur(Request $request$slug)
  631.   {
  632.     $this->params['title'] = 'Utilisateur';
  633.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  634.     $object = new Utilisateurs();
  635.     if ($slug != 0) {
  636.       $object $this->em->getRepository(Utilisateurs::class)->find($slug);
  637.     }
  638.     $form $this->createForm(UtilisateurType::class, $object);
  639.     $form->handleRequest($request);
  640.     if ($form->isSubmitted() && $form->isValid()) {
  641.       $object $form->getData();
  642.       if ($object->getPlainPassword() != "" && $object->getPlainPassword() != null) {
  643.         //$encoder = $this->encoder->getEncoder($object);
  644.         $encodedPassword $this->encoder->hashPassword($object$object->getPlainPassword());//, $object->getSalt()
  645.         $object->setPassword($encodedPassword);
  646.       }
  647.       $this->em->persist($object);
  648.       $this->em->flush();
  649.       return $this->redirectToRoute('utilisateurs');
  650.     }
  651.     $this->params['droit'] = null;
  652.     if($this->getUser()->getFournisseur() != null){
  653.       $this->params['droit'] = 'fournisseur';
  654.     }
  655.     $this->params['form'] = $form->createView();
  656.     return $this->render('Parametrages/utilisateur.html.twig'$this->params);
  657.   }
  658.   #[Route(path'/parametrages/saisons'name'saisons')]
  659.   public function saisons(Request $request)
  660.   {
  661.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  662.     $table_users $this->datatables_service->getDatatableSaisons()->handleRequest($request);
  663.     if ($table_users->isCallback()) {
  664.       return $table_users->getResponse();
  665.     }
  666.     $this->params['datatable'] = $table_users;
  667.     return $this->render('Parametrages/saisons.html.twig'$this->params);
  668.   }
  669.   #[Route(path'/parametrages/saison/{slug}'name'saison'defaults: ['slug' => 0])]
  670.   public function saison(Request $request$slug)
  671.   {
  672.     $this->params['title'] = 'Saison';
  673.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  674.     $object = new Saisons();
  675.     if ($slug != 0) {
  676.       $object $this->em->getRepository(Saisons::class)->find($slug);
  677.     }
  678.     $form $this->createForm(SaisonType::class, $object);
  679.     $form->handleRequest($request);
  680.     if ($form->isSubmitted() && $form->isValid()) {
  681.       $object $form->getData();
  682.       $this->em->persist($object);
  683.       $this->em->flush();
  684.       return $this->redirectToRoute('saisons');
  685.     }
  686.     $this->params['form'] = $form->createView();
  687.     return $this->render('Parametrages/saison.html.twig'$this->params);
  688.   }
  689.   #[Route(path'/parametrages/droits'name'droits')]
  690.   public function droits(Request $request)
  691.   {
  692.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  693.     $table_users $this->datatables_service->getDatatableDroits()->handleRequest($request);
  694.     if ($table_users->isCallback()) {
  695.       return $table_users->getResponse();
  696.     }
  697.     $this->params['datatable'] = $table_users;
  698.     return $this->render('Parametrages/droits.html.twig'$this->params);
  699.   }
  700.   #[Route(path'/parametrages/droit/{slug}'name'droit'defaults: ['slug' => 0])]
  701.   public function droit(Request $request$slug)
  702.   {
  703.     //Créer form
  704.     $droit $this->em->getRepository(Droits::class)->find($slug);
  705.     $form $this->createForm(DroitType::class, $droit);
  706.     $form->handleRequest($request);
  707.     if ($form->isSubmitted() && $form->isValid()) {
  708.       $object $form->getData();
  709.       $this->em->persist($object);
  710.       $this->em->flush();
  711.       return $this->redirectToRoute('droits');
  712.     }
  713.     $this->params['form'] = $form->createView();
  714.     return $this->render('Parametrages/droit.html.twig'$this->params);
  715.   }
  716.   #[Route(path'/parametrages/jde'name'tablesjde')]
  717.   public function tablesjde(Request $request){
  718.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  719.     $post $request->request;
  720.     $table_articles $this->datatables_service->getDatatableJdearticles()->handleRequest($request);
  721.     if ($table_articles->isCallback()) {
  722.       return $table_articles->getResponse();
  723.     }
  724.     $table_article_fournisseurs $this->datatables_service->getDatatableJdearticlesfourniseurs()->handleRequest($request);
  725.     if ($table_article_fournisseurs->isCallback()) {
  726.       return $table_article_fournisseurs->getResponse();
  727.     }
  728.     $table_lignes $this->datatables_service->getDatatableJdelignes()->handleRequest($request);
  729.     if ($table_lignes->isCallback()) {
  730.       return $table_lignes->getResponse();
  731.     }
  732.     $table_commandeachat $this->datatables_service->getDatatableJdecommandesachat($post)->handleRequest($request);
  733.     if ($table_commandeachat->isCallback()) {
  734.       return $table_commandeachat->getResponse();
  735.     }
  736.     $table_parcoursreception $this->datatables_service->getDatatableJdeparcoursreception($post)->handleRequest($request);
  737.     if ($table_parcoursreception->isCallback()) {
  738.       return $table_parcoursreception->getResponse();
  739.     }
  740.     $table_stocks $this->datatables_service->getDatatableJdestocks()->handleRequest($request);
  741.     if ($table_stocks->isCallback()) {
  742.       return $table_stocks->getResponse();
  743.     }
  744.     $table_articlelignecoloris$this->datatables_service->getDatatableJdearticlelignecoloris()->handleRequest($request);
  745.     if ($table_articlelignecoloris->isCallback()) {
  746.       return $table_articlelignecoloris->getResponse();
  747.     }
  748.     $table_qteexp$this->datatables_service->getDatatableJdeqteexp($post)->handleRequest($request);
  749.     if ($table_qteexp->isCallback()) {
  750.       return $table_qteexp->getResponse();
  751.     }
  752.     $this->params['datatable_qteexp'] = $table_qteexp;
  753.     $this->params['datatable_articlelignecoloris'] = $table_articlelignecoloris;
  754.     $this->params['datatable_stocks'] = $table_stocks;
  755.     $this->params['datatable_parcoursreception'] = $table_parcoursreception;
  756.     $this->params['datatable_articles'] = $table_articles;
  757.     $this->params['datatable_articles_fournisseurs'] = $table_article_fournisseurs;
  758.     $this->params['datatable_lignes'] = $table_lignes;
  759.     $this->params['datatable_commandeachat'] = $table_commandeachat;
  760.     return $this->render('Parametrages/jde.html.twig'$this->params);
  761.   }
  762.   #[Route(path'/demo-pdf'name'demo_pdf')]
  763.   public function demoPdf(Request $request)
  764.   {
  765.     //$this->get('pdf_service')->getPdf('demo');
  766.     //$this->get('pdf_service')->renderFile();
  767.   }
  768.   #[Route(path'/demo-elements'name'demo_elements')]
  769.   public function demoElements(Request $request)
  770.   {
  771.     return $this->render('demo/demo-elements.html.twig'$this->params);
  772.   }
  773.   #[Route(path'/parametrages/logs_fichetechnique'name'logsfichetechnique')]
  774.   public function logsfichetechnique(Request $request)
  775.   {
  776.     $this->params['leftbar_open_2'] = 'parametrages_logs';
  777.     $table_users $this->datatables_service->getDatatableLogsFt()->handleRequest($request);
  778.     if ($table_users->isCallback()) {
  779.       return $table_users->getResponse();
  780.     }
  781.     $this->params['datatable'] = $table_users;
  782.     return $this->render('Parametrages/logs_fichetechnique.html.twig'$this->params);
  783.   }
  784.   #[Route(path'/parametrages/logs_qualite'name'logsqualite')]
  785.   public function logsqualite(Request $request)
  786.   {
  787.     $this->params['leftbar_open_2'] = 'parametrages_logs';
  788.     $table_users $this->datatables_service->getDatatableLogsQualite()->handleRequest($request);
  789.     if ($table_users->isCallback()) {
  790.       return $table_users->getResponse();
  791.     }
  792.     $this->params['datatable'] = $table_users;
  793.     return $this->render('Parametrages/logs_qualite.html.twig'$this->params);
  794.   }
  795.   #[Route(path'/parametrages/mailing'name'mailing')]
  796.   public function mailing(Request $request)
  797.   {
  798.     $this->params['leftbar_open_2'] = 'parametrages_messagerie';
  799.     $table $this->datatables_service->getDatatableMailing($request->request)->handleRequest($request);
  800.     if ($table->isCallback()) {
  801.       return $table->getResponse();
  802.     }
  803.     $this->params['datatable'] = $table;
  804.     return $this->render('Parametrages/mailing.html.twig'$this->params);
  805.   }
  806.   #[Route(path'/parametrages/certificat/{slug}'name'certificat'defaults: ['slug' => 0])]
  807.   public function certificat(Request $request$slug)
  808.   {
  809.     $this->params['title'] = 'Certificat';
  810.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  811.     $object = new Certificat();
  812.     if ($slug != 0) {
  813.       $object $this->em->getRepository(Certificat::class)->find($slug);
  814.     }
  815.     $form $this->createForm(CertificatType::class, $object);
  816.     $form->handleRequest($request);
  817.     if ($form->isSubmitted() && $form->isValid()) {
  818.       $object $form->getData();
  819.       $this->em->persist($object);
  820.       $this->em->flush();
  821.       return $this->redirectToRoute('certificats');
  822.     }
  823.     $this->params['form'] = $form->createView();
  824.     return $this->render('Parametrages/certificat.html.twig'$this->params);
  825.   }
  826.   #[Route(path'/parametrages/certificats'name'certificats')]
  827.   public function certificats(Request $request)
  828.   {
  829.     $this->params['leftbar_open_2'] = 'parametrages_gestion';
  830.     $table $this->datatables_service->getDatatableCertificats()->handleRequest($request);
  831.     if ($table->isCallback()) {
  832.       return $table->getResponse();
  833.     }
  834.     $this->params['datatable'] = $table;
  835.     return $this->render('Parametrages/certificats.html.twig'$this->params);
  836.   } 
  837. }