src/Controller/Utilisateur/InterventionController.php line 311

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Utilisateur;
  3. use App\Entity\GestionComerciale\Commande;
  4. use App\Entity\Utilisateur\Intervention;
  5. use App\Form\Projets\InterventionType;
  6. use App\Form\Utilisateur\SupprimerInterventionType;
  7. use App\Library\Datatable\Util\Datatable;
  8. use App\Security\Voter\EntityVoter;
  9. use App\Service\Utilisateur\InterventionService;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\JsonResponse;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\HttpFoundation\RedirectResponse;
  16. use Symfony\Component\Routing\Annotation\Route;
  17. use Symfony\Component\Validator\Validator\ValidatorInterface;
  18. use Symfony\Contracts\Translation\TranslatorInterface;
  19. class InterventionController extends AbstractController
  20. {
  21.     /**
  22.      * @Route("/interventions/nouveau/{id}/{type}", name="dtc_intervention_ajouter")
  23.      */
  24.     public function ajouterAction(Request             $request$id$type ""EntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator,
  25.                                   InterventionService $serviceIntervention
  26.     ) {
  27.         $titre_modal  $translator->trans("Nouvelle intervention");
  28.         $intervention = new Intervention();
  29.         $user         $this->getUser();
  30.         $intervention->setUtilisateur($user);
  31.         if ($type == 'ordreRep') {
  32.             $repo_objet $em->getRepository(Commande::class);
  33.             $objet      $repo_objet->find($id);
  34.             $intervention->setOrdreRep($objet);
  35.             //$url = $this->generateUrl('dtc_ordre_reparation_modifier', array('id' => $objet->getId(),'tab'=>'interventions'));
  36.         }
  37.         $form   $this->createForm(InterventionType::class, $intervention);
  38.         $errors "";
  39.         $form->handleRequest($request);
  40.         if ($form->isSubmitted()) {
  41.             if ($form->isValid()) {
  42.                 if ($type == 'ordreRep') {
  43.                     $repo_objet $em->getRepository(Commande::class);
  44.                     $objet      $repo_objet->find($id);
  45.                     $intervention->setOrdreRep($objet);
  46.                     $url $this->generateUrl('dtc_ordre_reparation_modifier', ['id' => $objet->getId(), 'tab' => 'interventions']);
  47.                 }
  48.                 $em->persist($intervention);
  49.                 $em->flush();
  50.                 $tempsPasse $serviceIntervention->getTotalTempsIntervention($objet);
  51.                 $objet->setTempsPasse($tempsPasse);
  52.                 $em->persist($objet);
  53.                 $em->flush();
  54.                 $this->addFlash(
  55.                     'notice',
  56.                     $translator->trans('Intervention ajoutée avec succès !')
  57.                 );
  58.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  59.             } else {
  60.                 $errors $validator->validate($intervention);
  61.                 $rendu  $this->renderView('Utilisateur/Intervention/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type]);
  62.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  63.             }
  64.         }
  65.         $rendu $this->renderView('Utilisateur/Intervention/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type]);
  66.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  67.         //return $this->render('Utilisateur/Intervention/ajouter.html.twig', array('form' => $form->createView(),'errors'=>$errors,'id'=>$id,'type'=>$type));
  68.     }
  69.     /**
  70.      * @Route("/interventions/modifier/{objet}/{id}/{type}", name="dtc_intervention_modifier")
  71.      */
  72.     public function modifierAction(Request            $requestIntervention $objet$id$typeEntityManagerInterface $emTranslatorInterface $translator,
  73.                                    ValidatorInterface $validatorInterventionService $serviceIntervention
  74.     ) {
  75.         $intervention $objet;
  76.         $titre_modal  $translator->trans("Modifier intervention");
  77.         $user $this->getUser();
  78.         $intervention->setUtilisateur($user);
  79.         $form   $this->createForm(InterventionType::class, $intervention);
  80.         $errors "";
  81.         $form->handleRequest($request);
  82.         if ($form->isSubmitted()) {
  83.             $droit $this->isGranted(EntityVoter::UPDATEIntervention::class);
  84.             if ( ! $droit) {
  85.                 $rendu $this->renderView(
  86.                     'Utilisateur/Intervention/ajouter.html.twig',
  87.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]
  88.                 );
  89.                 return new Response(json_encode(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]), 200, ['Content-Type' => 'application/json']);
  90.             }
  91.             if ($form->isValid()) {
  92.                 if ($type == 'ordreRep') {
  93.                     $repo_objet $em->getRepository(Commande::class);
  94.                     $objet      $repo_objet->find($id);
  95.                     $intervention->setOrdreRep($objet);
  96.                     $url $this->generateUrl('dtc_ordre_reparation_modifier', ['id' => $objet->getId(), 'tab' => 'interventions']);
  97.                 }
  98.                 $em->persist($intervention);
  99.                 $em->flush();
  100.                 $tempsPasse $serviceIntervention->getTotalTempsIntervention($objet);
  101.                 $objet->setTempsPasse($tempsPasse);
  102.                 $em->persist($objet);
  103.                 $em->flush();
  104.                 $this->addFlash(
  105.                     'notice',
  106.                     $translator->trans('Intervention modifiée avec succès !')
  107.                 );
  108.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  109.             } else {
  110.                 $errors $validator->validate($intervention);
  111.                 $rendu  $this->renderView(
  112.                     'Utilisateur/Intervention/ajouter.html.twig',
  113.                     ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]
  114.                 );
  115.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  116.             }
  117.         }
  118.         $rendu $this->renderView('Utilisateur/Intervention/ajouter.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  119.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  120.     }
  121.     /**
  122.      * @Route("/interventions/supprimer/{objet}/{id}/{type}", name="dtc_intervention_supprimer")
  123.      */
  124.     public function supprimerAction(Request             $requestIntervention $objet$id$typeEntityManagerInterface $emTranslatorInterface $translatorValidatorInterface $validator,
  125.                                     InterventionService $serviceIntervention
  126.     ) {
  127.         $intervention $objet;
  128.         $titre_modal  $translator->trans("Demande de confirmation");
  129.         $user         $this->getUser();
  130.         $form   $this->createForm(SupprimerInterventionType::class, $intervention);
  131.         $errors "";
  132.         $form->handleRequest($request);
  133.         if ($form->isSubmitted()) {
  134.             if ($form->isValid()) {
  135.                 $ordreRep $intervention->getOrdreRep();
  136.                 $em->remove($intervention);
  137.                 $em->flush();
  138.                 $tempsPasse $serviceIntervention->getTotalTempsIntervention($ordreRep);
  139.                 $ordreRep->setTempsPasse($tempsPasse);
  140.                 $em->persist($ordreRep);
  141.                 $em->flush();
  142.                 $this->addFlash(
  143.                     'notice',
  144.                     $translator->trans('Intervention supprimée avec succès !')
  145.                 );
  146.                 if ($type == 'ordreRep') {
  147.                     $url $this->generateUrl('dtc_ordre_reparation_modifier', ['id' => $id'tab' => 'interventions']);
  148.                 } elseif ($type == 'transporteur') {
  149.                     $url $this->generateUrl('dtc_transporteur_modifier', ['id' => $id'tab' => 'interventions']);
  150.                 } elseif ($type == 'fournisseur') {
  151.                     $url $this->generateUrl('dtc_fournisseur_modifier', ['id' => $id'tab' => 'interventions']);
  152.                 }
  153.                 return new JsonResponse(['rendu' => '''valide' => '1''url' => $url]);
  154.             } else {
  155.                 $errors $validator->validate($intervention);
  156.                 $rendu  $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  157.                 return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  158.             }
  159.         }
  160.         $rendu $this->renderView('FO/Supprimer/supprimer.html.twig', ['form' => $form->createView(), 'errors' => $errors'id' => $id'type' => $type'objet' => $objet]);
  161.         return new JsonResponse(['rendu' => $rendu'valide' => '0''url' => '''titre' => $titre_modal]);
  162.     }
  163.     /**
  164.      * @Route("/interventions/{id}/{type}", name="dtc_intervention_liste")
  165.      */
  166.     public function listerAction(Request $request$id$type ""EntityManagerInterface $emDatatable $datatableTranslatorInterface $translator)
  167.     {
  168.         if ($type == 'ordreRep') {
  169.             $repo_objet $em->getRepository(Commande::class);
  170.             $objet      $repo_objet->find($id);
  171.         }
  172.         $tableau_class_cellule   = [];
  173.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [0], "visible" => "true"];
  174.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [1], "visible" => "true"];
  175.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [2], "visible" => "true"];
  176.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [3], "visible" => "true"];
  177.         $tableau_class_cellule[] = ["className" => "visible_export colonne_id""targets" => [4], "visible" => "true"];
  178.         $this->datatable($datatable$translator$objet$type);
  179.         return $this->render('Utilisateur/Intervention/lister.html.twig', ["id" => $id"type" => $type'tableauClassColonne' => $tableau_class_cellule]);
  180.     }
  181.     /**
  182.      * set datatable configs
  183.      *
  184.      * @return \App\Library\Datatable\Util\Datatable
  185.      */
  186.     private function datatable(Datatable $datatableTranslatorInterface $translator$objet$type "")
  187.     {
  188.         $type_jointure 'x.'.$type;
  189.         $datatable->setDatatableId('dta-interventions')
  190.                   ->setEntity(Intervention::class, "x")
  191.                   ->setFields(
  192.                       [
  193.                           //$translator->trans("ID") =>  'x.id',
  194.                           $translator->trans("Mécanicien")          => 'u.nom',
  195.                           $translator->trans("Opération")           => 'ac.libelle',
  196.                           $translator->trans("Durée")               => 'x.duree',
  197.                           $translator->trans("Date d'intervention") => 'x.dateIntervention',
  198.                           $translator->trans("Commentaire") => 'x.commentaire',
  199.                           $translator->trans("Actions")     => 'x.id',
  200.                           "_identifier_"                    => 'x.id',
  201.                       ]
  202.                   )
  203.                   ->addJoin('x.articleCommande''ac'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  204.                   ->addJoin('x.mecanicien''u'\Doctrine\ORM\Query\Expr\Join::LEFT_JOIN)
  205.                   ->setWhere(
  206.                       $type_jointure.' = :objet',
  207.                       ['objet' => $objet]
  208.                   )
  209.                   ->setRenderers(
  210.                       [
  211.                           => [
  212.                               'view' => 'FO/DataTable/libelle_acticle_commande.html.twig',
  213.                           ],
  214.                           => [
  215.                               'view' => 'FO/DataTable/heure.html.twig',
  216.                           ],
  217.                           => [
  218.                               'view'   => 'FO/DataTable/actions_modal.html.twig',
  219.                               'params' => [
  220.                                   'edit_route'      => 'dtc_intervention_modifier',
  221.                                   'supprimer_route' => 'dtc_intervention_supprimer',
  222.                                   'id'              => $objet->getId(),
  223.                                   'type'            => $type,
  224.                                   'entite'          => 'intervention',
  225.                                   'objet'           => Intervention::class,
  226.                               ],
  227.                           ],
  228.                       ]
  229.                   )
  230.                   ->setOrder("x.id""desc")
  231.                   ->setSearch(true)
  232.                   ->setSearchFields([12]);
  233.         return $datatable;
  234.     }
  235.     /**
  236.      * Grid action
  237.      * @return Response
  238.      */
  239.     /**
  240.      * @Route("/interventions/grid/{id}/{type}", name="dtc_intervention_liste_grid")
  241.      */
  242.     public function gridAction(Request $request$id ""$type ""EntityManagerInterface $emTranslatorInterface $translatorDatatable $datatable)
  243.     {
  244.         if ($type == 'ordreRep') {
  245.             $repo_objet $em->getRepository(Commande::class);
  246.             $objet      $repo_objet->find($id);
  247.             return $this->datatable($datatable$translator$objet$type)->execute();
  248.         }
  249.     }
  250. }