src/Controller/MainController.php line 148

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