src/Controller/TiersController.php line 31

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Adresse;
  4. use App\Entity\InfoSalarie;
  5. use App\Entity\Societe;
  6. use App\Entity\Tiers;
  7. use App\Entity\User;
  8. use App\Tools\JsonRes;
  9. use Doctrine\Persistence\ManagerRegistry;
  10. use Doctrine\Persistence\ObjectManager;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\RequestStack;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Symfony\Component\Serializer\SerializerInterface;
  17. class TiersController extends AbstractController
  18. {
  19.     private ?ObjectManager $em null;
  20.     public function __construct(RequestStack $requestStackManagerRegistry $doctrine)
  21.     {
  22.         $request $requestStack->getCurrentRequest();
  23.         //TODO: page erreur subdomain
  24.         if(null===$request->getSession()->get('societe')) return $this->render('misc/404.html.twig');
  25.         // on récupère le sous-domaine stocké en session pour pointer vers le bon entity manager
  26.         $subdomain $request->getSession()->get('societe')->getBase();
  27.         $this->em $doctrine->getManager($subdomain);
  28.     }
  29.     /**
  30.      * @Route("/tiers/select2/recherche-class/{r}", methods={"GET"}, name="select2-class")
  31.      */
  32.     public function select2Class($r)
  33.     {
  34.         //TODO: page erreur entity manager
  35.         if(null===$this->em) return $this->render('misc/404.html.twig');
  36.         $societeRepository $this->em->getRepository(Societe::class);
  37.         $result $societeRepository->select2(['clients','prestataires'], $r);
  38.         die(json_encode($result));
  39.     }
  40.     /**
  41.      * @Route("/tiers/select2/recherche-societe/{r}", methods={"GET"}, name="select2-societe")
  42.      */
  43.     public function select2Societe($r)
  44.     {
  45.         //TODO: page erreur entity manager
  46.         if(null===$this->em) return $this->render('misc/404.html.twig');
  47.         $societeRepository $this->em->getRepository(Societe::class);
  48.         $result $societeRepository->select2(['clients'], $r);
  49.         die(json_encode($result));
  50.     }
  51.     /**
  52.      * @Route("/tiers/select2/recherche-prestataire/{r}", methods={"GET"}, name="select2-prestataire")
  53.      */
  54.     public function select2Prestataire($r)
  55.     {
  56.         //TODO: page erreur entity manager
  57.         if(null===$this->em) return $this->render('misc/404.html.twig');
  58.         $societeRepository $this->em->getRepository(Societe::class);
  59.         $result $societeRepository->select2(['prestataires'], $r);
  60.         die(json_encode($result));
  61.     }
  62.     /**
  63.      * @Route("/tiers/select2/recherche-contact-societe/{r}", methods={"GET"}, name="select2-contact-societe")
  64.      */
  65.     public function select2ContactSociete($r)
  66.     {
  67.         //TODO: page erreur entity manager
  68.         if(null===$this->em) return $this->render('misc/404.html.twig');
  69.         $tiersRepository $this->em->getRepository(Tiers::class);
  70.         $result $tiersRepository->select2(2$r);
  71.         die(json_encode($result));
  72.     }
  73.     /**
  74.      * @Route("/tiers/select2/recherche-salarie/{r}", methods={"GET"}, name="select2-salarie")
  75.      */
  76.     public function select2Salarie($r)
  77.     {
  78.         //TODO: page erreur entity manager
  79.         if(null===$this->em) return $this->render('misc/404.html.twig');
  80.         $tiersRepository $this->em->getRepository(Tiers::class);
  81.         $result $tiersRepository->select2(1$r);
  82.         die(json_encode($result));
  83.     }
  84.     /**
  85.      * @Route("/tiers/select2/recherche-chef-projet/{r}", methods={"GET"}, name="select2-chef-projet")
  86.      */
  87.     public function select2ChefProjet($r)
  88.     {
  89.         //TODO: page erreur entity manager
  90.         if(null===$this->em) return $this->render('misc/404.html.twig');
  91.         $userRepository $this->em->getRepository(User::class);
  92.         $result $userRepository->select2($r);
  93.         die(json_encode($result));
  94.     }
  95.     /**
  96.      * @Route("/tiers/{typeTiers}", methods={"GET"}, name="gestion_tiers")
  97.      */
  98.     public function show($typeTiers): Response
  99.     {
  100.         //TODO: page erreur entity manager
  101.         if(null===$this->em) return $this->render('misc/404.html.twig');
  102.         $tiersRepository $this->em->getRepository(Tiers::class);
  103.         $societeRepository $this->em->getRepository(Societe::class);
  104.         $tiersList = array();
  105. //        if('salaries'===$typeTiers) {
  106. //            $tiersList = $tiersRepository->findBy(['id_type_tiers' => 1, 'is_active'=> 1], null, 10);
  107. //            /** @var Tiers $tiers */
  108. //            foreach ($tiersList as $tiers){
  109. //                /** @var \App\Entity\InfoSalarie $infoSalarie */
  110. //                $infoSalarie = $tiers->getInfoSalarie();
  111. //                if(null!==$infoSalarie) {
  112. //                    $webPath = $this->getParameter('kernel.project_dir');
  113. //                    $infoSalarie->initEncryptionKey($webPath);
  114. //                    $infoSalarie->decryptContent(); // déchiffrage des données info_salariés
  115. //                }
  116. //            }
  117. //        } else {
  118. //            $tiersList = $societeRepository->findBy(['classe_societe' => $typeTiers, 'is_active'=> 1], null, 10);
  119. //        }
  120.         $typeClientSelect '
  121.             <option value="TV" selected>TV</option>
  122.             <option value="Institutionnel">Institutionnel</option>
  123.         ';
  124.         return $this->render('tiers/gestion_tiers.html.twig', [
  125.             'id_menu' => 'tiers_'$typeTiers,
  126.             'type_tiers' => $typeTiers,
  127.             'type_client_select' => $typeClientSelect,
  128. //            'user_list' => $userRepository->findAllActive(),
  129. //            'role_select_filtre' => $rolesRepository->getSelectOptions(),
  130. //            'role_select' => $rolesRepository->getSelectOptions(false),
  131. //            'role_hierarchy' => $this->getHtmlRoleHierarchy($rolesRepository),
  132. //            'tiers_list' => $tiersList,
  133.             'adresse_list' => array(),
  134.         ]);
  135.     }
  136.     /**
  137.      * @Route("/tiers/{typeTiers}/reload-list", methods={"POST"}, name="tiers_reload_list")
  138.      */
  139.     public function reloadList($typeTiersRequest $request): Response
  140.     {
  141.         //TODO: page erreur entity manager
  142.         if(null===$this->em) return $this->render('misc/404.html.twig');
  143.         $tiersRepository $this->em->getRepository(Tiers::class);
  144.         $societeRepository $this->em->getRepository(Societe::class);
  145.         $filtre $request->request->all();
  146.         $tiersList = array();
  147.         if('salaries'===$typeTiers) {
  148.             $tiersList $tiersRepository->findByFilter($filtre);
  149.             /** @var Tiers $tiers */
  150.             foreach ($tiersList as $tiers){
  151.                 /** @var \App\Entity\InfoSalarie $infoSalarie */
  152.                 $infoSalarie $tiers->getInfoSalarie();
  153.                 if(null!==$infoSalarie) {
  154. //                    $webPath = $this->getParameter('kernel.project_dir');
  155. //                    $infoSalarie->initEncryptionKey($webPath);
  156. //                    $infoSalarie->decryptContent(); // déchiffrage des données info_salariés
  157.                 }
  158.             }
  159.         } else {
  160.             $tiersList $societeRepository->findByFilter($filtre);
  161.         }
  162.         return $this->render('tiers/tiers-'$typeTiers .'-liste.html.twig', [
  163.             'tiers_list' => $tiersList,
  164.             'type_tiers' => $typeTiers,
  165.         ]);
  166.     }
  167.     /**
  168.     * @Route("/tiers/{typeTiers}/{id}", methods={"GET"}, name="tiers_data")
  169.     */
  170.     public function dataTiers(Request $request$typeTiers$id)
  171.     {
  172.         // TODO: controle d'accès sécurisé à ajouter via un role
  173.         //TODO: page erreur entity manager
  174.         if(null===$this->em) return $this->render('misc/404.html.twig');
  175.         // Initialisation du retour Json
  176.         $res = new JsonRes($request->request->all());
  177.         if($res->isSuccess()){
  178.             switch ($typeTiers){
  179.                 case 'clients':
  180.                 case 'prestataires':
  181.                     $societeRepository $this->em->getRepository(Societe::class);
  182.                     $societe $societeRepository->find($id);
  183.                     if (null === $societe$res->addErrMsg('ID Société inéxistant dans la base de données');
  184.                     if ($res->isSuccess()) $res->setResponse($societe'getTiers');
  185.                     break;
  186.                 case 'salaries':
  187.                     $tiersRepository $this->em->getRepository(Tiers::class);
  188.                     $tiers $tiersRepository->find($id);
  189.                     if (null === $tiers$res->addErrMsg('ID Salarié inéxistant dans la base de données');
  190. //                    if($tiers->getId()===1833) {
  191. //                        dd($tiers->getInfoSalarie()->initEncryptionKey($this->getParameter('kernel.project_dir'))->decryptContent()->getLieuNaissance());
  192. //                    }
  193.                     if ($res->isSuccess()) {
  194.                         $webPath $this->getParameter('kernel.project_dir');
  195.                         $res->setResponse($tiers'getInfoSalarie'$webPath);
  196.                     }
  197.                     break;
  198.             }
  199.         }
  200.         die($res->returnJson());
  201.     }
  202.     /**
  203.      * @Route("/tiers/{typeTiers}/insert", methods={"POST"}, name="insert_tiers")
  204.      */
  205.     public function insert($typeTiersRequest $request): Response
  206.     {
  207.         //TODO: page erreur entity manager
  208.         if(null===$this->em) return $this->render('misc/404.html.twig');
  209.         // Initialisation du retour Json
  210.         $res = new JsonRes($request->request->all());
  211.         if($res->isSuccess()) {
  212.             $data $res->getData();
  213.             switch($typeTiers){
  214.                 case 'prestataires':
  215.                 case 'clients':
  216.                     if(!isset($data['classe_societe'])) $res->addErrMsg('champs classe_societe inconnu');
  217.                     if(!isset($data['libelle_societe'])) $res->addErrMsg('champs libelle_societe inconnu');
  218.                     if(!isset($data['type_societe'])) $res->addErrMsg('champs type_societe inconnu');
  219.                     if(!isset($data['sigle_client'])) $res->addErrMsg('champs sigle_client inconnu');
  220.                     if(!isset($data['nom'])) $res->addErrMsg('champs nom inconnu');
  221.                     if(!isset($data['prenom'])) $res->addErrMsg('champs prenom inconnu');
  222.                     if ('clients' === $typeTiers) {
  223.                         if(!isset($data['num_tva'])) $res->addErrMsg('champs num_tva inconnu');
  224.                         if(!isset($data['condition_reglement'])) $res->addErrMsg('champs condition_reglement inconnu');
  225.                         if(!$res->isSuccess()) $res->addErrMsg('Vider le cache du navigateur');
  226.                         if(!$res->isSuccess()) $res->addErrMsg('si le problème persiste contacter l\'administrateur');
  227.                     }
  228.                 break;
  229.                 case 'salaries':
  230.                     if(!isset($data['nom'])) $res->addErrMsg('champs nom inconnu');
  231.                     if(!isset($data['prenom'])) $res->addErrMsg('champs prenom inconnu');
  232.                     break;
  233.             }
  234.             if($res->isSuccess()) {
  235.                 switch($typeTiers){
  236.                     case 'clients':
  237.                         if(''===$data['classe_societe']) $res->addErrMsg('champs classe_societe obligatoire');
  238.                         if(''===$data['libelle_societe']) $res->addErrMsg('Libellé société obligatoire');
  239.                         if(''===$data['type_societe']) $res->addErrMsg('Type societe obligatoire : TV, Institutionnel, ...');
  240.                         if(''===$data['sigle_client']) $res->addErrMsg('Sigle client obligatoire');
  241.                         if(''===$data['nom']) $res->addErrMsg('Nom contact obligatoire');
  242.                         if(''===$data['prenom']) $res->addErrMsg('Prénom contact obligatoire');
  243.                         break;
  244.                     case 'salaries':
  245.                         if(''===$data['nom']) $res->addErrMsg('Nom obligatoire');
  246.                         if(''===$data['prenom']) $res->addErrMsg('Prénom obligatoire');
  247.                         break;
  248.                     case 'prestataires':
  249.                         if(''===$data['classe_societe']) $res->addErrMsg('champs classe_societe obligatoire');
  250.                         if(''===$data['libelle_societe']) $res->addErrMsg('Libellé prestataire obligatoire');
  251.                         if(''===$data['type_societe']) $res->addErrMsg('Type prestataire obligatoire : Matériel ou Service');
  252.                         if(''===$data['nom']) $res->addErrMsg('Nom contact obligatoire');
  253.                         if(''===$data['prenom']) $res->addErrMsg('Prénom contact obligatoire');
  254.                         break;
  255.                 }
  256.                 if($res->isSuccess()) {
  257.                     switch($typeTiers){
  258.                         case 'clients':
  259.                             $societeRepository $this->em->getRepository(Societe::class);
  260.                             $existSigle $societeRepository->existeSigleSociete($data['sigle_client']);
  261.                             if($existSigle$res->addErrMsg('Ce sigle client existe déjà dans la base de données');
  262.                             break;
  263.                         case 'salaries':
  264.                         case 'prestataires':
  265.                             break;
  266.                     }
  267.                     if($res->isSuccess()) {
  268.                         /** @var \App\Entity\User $currentUser */
  269.                         $currentUser $this->getUser()->getId();
  270.                         // insert tiers lié
  271.                         $tiers = new Tiers();
  272.                         $tiers->setNomTiers(mb_strtoupper($data['nom']));
  273.                         $tiers->setPrenomTiers($data['prenom']);
  274.                         $tiers->setEmailTiers($data['email_tiers']);
  275.                         $data['tel_fixe'] = preg_replace(['/\s+/','/\./'],''$data['tel_fixe']);
  276.                         $tiers->setTelFixeTiers($data['tel_fixe']);
  277.                         $data['tel_portable'] = preg_replace(['/\s+/','/\./'],''$data['tel_portable']);
  278.                         $tiers->setTelPortableTiers($data['tel_portable']);
  279.                         $tiers->setCommentaireTiers($data['commentaire']);
  280.                         switch ($typeTiers) {
  281.                             case 'clients':
  282.                             case 'prestataires':
  283.                                 $tiers->setIdTypeTiers(2);
  284.                                 break;
  285.                             case 'salaries':
  286.                                 $tiers->setIdTypeTiers(1);
  287.                                 break;
  288.                         }
  289.                         $tiers->setUserCrea($currentUser);
  290.                         $tiers->setDateCrea(new \DateTime());
  291.                         $tiers->setIsActive(true);
  292.                         $this->em->persist($tiers);
  293.                         $this->em->flush();
  294.                         if ('salaries' === $typeTiers) {
  295.                             // insert info_salarie lié
  296.                             $webPath $this->getParameter('kernel.project_dir');
  297.                             $infoSalarie = new InfoSalarie($webPath);
  298.                             $infoSalarie->setTarifJour($data['tarif_jour']);
  299.                             $infoSalarie->setTypeSalarie($data['type_salarie']);
  300.                             $infoSalarie->setDateNaissance($data['date_naissance']);
  301.                             $infoSalarie->setLieuNaissance($data['lieu_naissance']);
  302.                             $infoSalarie->setNationalite($data['nationalite']);
  303.                             $numSS preg_replace(['/\s+/'],''$data['num_secu_sociale']);
  304.                             $infoSalarie->setNumSecuSociale($numSS);
  305.                             $infoSalarie->setNumCongesSpectacle($data['num_conges_spectacle']);
  306.                             $infoSalarie->setNumCarteSejour($data['num_carte_sejour']);
  307.                             $infoSalarie->setNumCartePresse($data['num_carte_presse']);
  308.                             $infoSalarie->setDateVisiteMedicale($data['date_visite_medicale']);
  309.                             $infoSalarie->setStatutCadre($data['statut_cadre']);
  310.                             $infoSalarie->setNbEnfant($data['nb_enfant']);
  311.                             $infoSalarie->setSituationFamiliale($data['situation_familiale']);
  312.                             $infoSalarie->setFonction($data['fonction']);
  313.                             $infoSalarie->setUserCrea($currentUser);
  314.                             $infoSalarie->setDateCrea(new \DateTime());
  315.                             $infoSalarie->setUserModif($currentUser);
  316.                             $infoSalarie->setDateModif(new \DateTime());
  317.                             $infoSalarie->secureContent();
  318.                             $tiers->setInfoSalarie($infoSalarie);
  319.                             $this->em->persist($tiers);
  320.                             $this->em->flush();
  321.                         } else {
  322.                             // insert societe
  323.                             $societe = new Societe();
  324.                             $societe->setClasseSociete($data['classe_societe']);
  325.                             $societe->setLibSociete($data['libelle_societe']);
  326.                             $societe->setTypeSociete($data['type_societe']);
  327.                             $societe->setNbHistoriqueProjet(0);
  328.                             $societe->setDateCrea(new \DateTime());
  329.                             $societe->setUserCrea($currentUser);
  330.                             $societe->setIsActive(true);
  331.                             $societe->addTier($tiers);
  332.                             if ('prestataires' === $typeTiers) {
  333.                                 $societeRepository $this->em->getRepository(Societe::class);
  334.                                 $sigle $societeRepository->createSiglePrestataire();
  335.                                 $societe->setSigleSociete($sigle);
  336.                             } else {
  337.                                 $societe->setSigleSociete($data['sigle_client']);
  338.                                 $societe->setNumTva($data['num_tva']);
  339.                                 $societe->setConditionReglement($data['condition_reglement']);
  340.                             }
  341.                             $this->em->persist($societe);
  342.                             $this->em->flush();
  343.                         }
  344.                         $data['id_tiers'] = $tiers->getId();
  345.                         switch ($typeTiers) {
  346.                             case 'clients':
  347.                             case 'prestataires':
  348.                                 $data['id_societe'] = $societe->getId();
  349.                                 break;
  350.                             case 'salaries':
  351.                                 $data['id_societe'] = 0;
  352.                                 break;
  353.                         }
  354.                         $res->setData($data);
  355.                     }
  356.                 }
  357.             }
  358.         }
  359.         die($res->returnJson());
  360.     }
  361.     /**
  362.      * @Route("/tiers/{typeTiers}/update", methods={"POST"}, name="tiers_update")
  363.      */
  364.     public function update($typeTiersRequest $request): Response
  365.     {
  366.         //TODO: page erreur entity manager
  367.         if(null===$this->em) return $this->render('misc/404.html.twig');
  368.         // Initialisation du retour Json
  369.         $res = new JsonRes($request->request->all());
  370.         if($res->isSuccess()) {
  371.             $data $res->getData();
  372.             switch($typeTiers){
  373.                 case 'prestataires':
  374.                 case 'clients':
  375.                     if(!isset($data['id_tiers'])) $res->addErrMsg('champs id_tiers inconnu');
  376.                     if(!isset($data['id_societe'])) $res->addErrMsg('champs id_societe inconnu');
  377.                     if(!isset($data['classe_societe'])) $res->addErrMsg('champs classe_societe inconnu');
  378.                     if(!isset($data['libelle_societe'])) $res->addErrMsg('champs libelle_societe inconnu');
  379.                     if(!isset($data['type_societe'])) $res->addErrMsg('champs type_societe inconnu');
  380.                     if(!isset($data['sigle_client'])) $res->addErrMsg('champs sigle_client inconnu');
  381.                     if(!isset($data['nom'])) $res->addErrMsg('champs nom inconnu');
  382.                     if(!isset($data['prenom'])) $res->addErrMsg('champs prenom inconnu');
  383.                     if ('clients' === $typeTiers) {
  384.                         if(!isset($data['num_tva'])) $res->addErrMsg('champs num_tva inconnu');
  385.                         if(!isset($data['condition_reglement'])) $res->addErrMsg('champs condition_reglement inconnu');
  386.                         if(!$res->isSuccess()) $res->addErrMsg('Vider le cache du navigateur');
  387.                         if(!$res->isSuccess()) $res->addErrMsg('si le problème persiste contacter l\'administrateur');
  388.                     }
  389.                     break;
  390.                 case 'salaries':
  391.                     if(!isset($data['id_tiers'])) $res->addErrMsg('champs id_tiers inconnu');
  392.                     if(!isset($data['nom'])) $res->addErrMsg('champs nom inconnu');
  393.                     if(!isset($data['prenom'])) $res->addErrMsg('champs prenom inconnu');
  394.                     break;
  395.             }
  396.             if($res->isSuccess()) {
  397.                 switch($typeTiers){
  398.                     case 'clients':
  399.                         if(''===$data['id_tiers']) $res->addErrMsg('id_tiers manquant');
  400.                         if(0===$data['id_tiers']) $res->addErrMsg('id_tiers non valide');
  401.                         if(''===$data['id_societe']) $res->addErrMsg('id_societe manquant');
  402.                         if(0===$data['id_societe']) $res->addErrMsg('id_societe non valide');
  403.                         if(''===$data['classe_societe']) $res->addErrMsg('champs classe_societe obligatoire');
  404.                         if(''===$data['libelle_societe']) $res->addErrMsg('Libellé société obligatoire');
  405.                         if(''===$data['type_societe']) $res->addErrMsg('Type societe obligatoire : TV, Institutionnel, ...');
  406.                         if(''===$data['sigle_client']) $res->addErrMsg('Sigle client obligatoire');
  407.                         if(''===$data['nom']) $res->addErrMsg('Nom obligatoire');
  408.                         if(''===$data['prenom']) $res->addErrMsg('Prénom obligatoire');
  409.                         break;
  410.                     case 'salaries':
  411.                         if(''===$data['id_tiers']) $res->addErrMsg('id_user manquant');
  412.                         if(0===$data['id_tiers']) $res->addErrMsg('id_tiers non valide');
  413.                         if(''===$data['nom']) $res->addErrMsg('Nom obligatoire');
  414.                         if(''===$data['prenom']) $res->addErrMsg('Prénom obligatoire');
  415.                         break;
  416.                     case 'prestataires':
  417.                         if(''===$data['id_tiers']) $res->addErrMsg('id_tiers manquant');
  418.                         if(0===$data['id_tiers']) $res->addErrMsg('id_tiers non valide');
  419.                         if(''===$data['id_societe']) $res->addErrMsg('id_societe manquant');
  420.                         if(0===$data['id_societe']) $res->addErrMsg('id_societe non valide');
  421.                         if(''===$data['classe_societe']) $res->addErrMsg('champs classe_societe obligatoire');
  422.                         if(''===$data['libelle_societe']) $res->addErrMsg('Libellé prestataire obligatoire');
  423.                         if(''===$data['type_societe']) $res->addErrMsg('Type prestataire obligatoire : Matériel ou Service');
  424.                         if(''===$data['nom']) $res->addErrMsg('Nom obligatoire');
  425.                         if(''===$data['prenom']) $res->addErrMsg('Prénom obligatoire');
  426.                         break;
  427.                 }
  428.                 if($res->isSuccess()) {
  429.                     /** @var Tiers $tiers */
  430.                     $tiers null;
  431.                     /** @var Societe $societe */
  432.                     $societe null;
  433.                     switch ($typeTiers){
  434.                         case 'clients':
  435.                         case 'prestataires':
  436.                             $societeRepository $this->em->getRepository(Societe::class);
  437.                             $societe $societeRepository->find($data['id_societe']);
  438.                             if(null===$societe$res->addErrMsg('Société introuvable');
  439.                             if(null!=$societe$tiers $societe->getMainTiers();
  440.                             if(null===$tiers$res->addErrMsg('Contact société introuvable');
  441.                             break;
  442.                         case 'salaries':
  443.                             $tiersRepository $this->em->getRepository(Tiers::class);
  444.                             $tiers $tiersRepository->find($data['id_tiers']);
  445.                             if(null===$tiers$res->addErrMsg('Salarié introuvable');
  446.                             break;
  447.                     }
  448.                     if($res->isSuccess()) {
  449.                         /** @var \App\Entity\User $currentUser */
  450.                         $currentUser $this->getUser()->getId();
  451.                         // update tiers
  452.                         $tiers->setNomTiers(mb_strtoupper($data['nom']));
  453.                         $tiers->setPrenomTiers($data['prenom']);
  454.                         $tiers->setEmailTiers($data['email_tiers']);
  455.                         $data['tel_fixe'] = preg_replace(['/\s+/','/\./'],''$data['tel_fixe']);
  456.                         $tiers->setTelFixeTiers($data['tel_fixe']);
  457.                         $data['tel_portable'] = preg_replace(['/\s+/','/\./'],''$data['tel_portable']);
  458.                         $tiers->setTelPortableTiers($data['tel_portable']);
  459.                         $tiers->setCommentaireTiers($data['commentaire']);
  460.                         $tiers->setUserModif($currentUser);
  461.                         $tiers->setDateModif(new \DateTime());
  462.                         $this->em->persist($tiers);
  463.                         $this->em->flush();
  464.                         switch ($typeTiers){
  465.                             case 'clients':
  466.                             case 'prestataires':
  467.                                 // update societe
  468.                                 if ('clients' === $typeTiers) {
  469.                                     $societe->setSigleSociete($data['sigle_client']);
  470.                                     $societe->setNumTva($data['num_tva']);
  471.                                     $societe->setConditionReglement($data['condition_reglement']);
  472.                                 }
  473.                                 $societe->setLibSociete($data['libelle_societe']);
  474.                                 $societe->setTypeSociete($data['type_societe']);
  475.                                 $societe->setDateModif(new \DateTime());
  476.                                 $societe->setUserModif($currentUser);
  477.                                 $this->em->persist($societe);
  478.                                 $this->em->flush();
  479.                                 break;
  480.                             case 'salaries':
  481.                                 // update info_salarie lié
  482.                                 /** @var \App\Entity\InfoSalarie $infoSalarie */
  483.                                 $infoSalarie $tiers->getInfoSalarie();
  484.                                 $webPath $this->getParameter('kernel.project_dir');
  485.                                 if (null===$infoSalarie) {
  486.                                     $infoSalarie = new InfoSalarie($webPath);
  487.                                     $infoSalarie->setUserCrea($currentUser);
  488.                                     $infoSalarie->setDateCrea(new \DateTime());
  489.                                 }
  490.                                 $infoSalarie->setTarifJour($data['tarif_jour']);
  491.                                 $infoSalarie->setTypeSalarie($data['type_salarie']);
  492.                                 $infoSalarie->setDateNaissance($data['date_naissance']);
  493.                                 $infoSalarie->setLieuNaissance($data['lieu_naissance']);
  494.                                 $infoSalarie->setNationalite($data['nationalite']);
  495.                                 $numSS preg_replace(['/\s+/'],''$data['num_secu_sociale']);
  496.                                 $infoSalarie->setNumSecuSociale($numSS);
  497.                                 $infoSalarie->setNumCongesSpectacle($data['num_conges_spectacle']);
  498.                                 $infoSalarie->setNumCarteSejour($data['num_carte_sejour']);
  499.                                 $infoSalarie->setNumCartePresse($data['num_carte_presse']);
  500.                                 $infoSalarie->setDateVisiteMedicale($data['date_visite_medicale']);
  501.                                 $infoSalarie->setStatutCadre($data['statut_cadre']);
  502.                                 $infoSalarie->setNbEnfant($data['nb_enfant']);
  503.                                 $infoSalarie->setSituationFamiliale($data['situation_familiale']);
  504.                                 $infoSalarie->setFonction($data['fonction']);
  505.                                 $infoSalarie->setuserModif($currentUser);
  506.                                 $infoSalarie->setDateModif(new \DateTime());
  507.                                 $infoSalarie->initEncryptionKey($webPath);
  508.                                 $infoSalarie->secureContent();
  509.                                 $tiers->setInfoSalarie($infoSalarie);
  510.                                 $this->em->persist($tiers);
  511.                                 $this->em->flush();
  512.                                 break;
  513.                         }
  514.                         $res->setData($data);
  515.                     }
  516.                 }
  517.             }
  518.         }
  519.         die($res->returnJson());
  520.     }
  521.     /**
  522.      * @Route("/tiers/{typeTiers}/delete", methods={"POST"}, name="tiers_delete")
  523.      */
  524.     public function delete($typeTiersRequest $request): Response
  525.     {
  526.         // TODO: controle d'accès sécurisé à ajouter via un role
  527.         //TODO: page erreur entity manager
  528.         if(null===$this->em) return $this->render('misc/404.html.twig');
  529.         // Initialisation du retour Json
  530.         $res = new JsonRes($request->request->all());
  531.         $data $res->getData();
  532.         if(empty($data['id']) || 0===$data['id']) $res->addErrMsg('id manquant');
  533.         if($res->isSuccess()){
  534.             switch ($typeTiers){
  535.                 case 'clients':
  536.                 case 'prestataires':
  537.                     $societeRepository $this->em->getRepository(Societe::class);
  538.                     $societe $societeRepository->find($data['id']);
  539.                     $societe->setIsActive(false);
  540.                     $this->em->persist($societe);
  541.                     $this->em->flush();
  542.                     break;
  543.                 case 'salaries':
  544.                     $tiersRepository $this->em->getRepository(Tiers::class);
  545.                     $tiers $tiersRepository->find($data['id']);
  546.                     $tiers->setIsActive(false);
  547.                     $this->em->persist($tiers);
  548.                     $this->em->flush();
  549.                     break;
  550.             }
  551.         }
  552.         die($res->returnJson());
  553.     }
  554.     /**
  555.      * @Route("/tiers/adresse/reload", methods={"POST"}, name="reload_adresse_tiers")
  556.      */
  557.     public function reloadAdresseTiers(Request $requestSerializerInterface $serializer): Response
  558.     {
  559.         //TODO: page erreur entity manager
  560.         if(null===$this->em) return $this->render('misc/404.html.twig');
  561.         $data array_map('trim'$request->request->all());
  562.         $adresseList = array();
  563.         if($data['type_tiers']!=='' && $data['id']!=='') {
  564.             switch($data['type_tiers']) {
  565.                 case 'clients':
  566.                 case 'prestataires':
  567.                     $societeRepository $this->em->getRepository(Societe::class);
  568.                     $societe $societeRepository->find($data['id']);
  569.                     if(null!=$societe) {
  570.                         $adresseList $societe->serializeAdresse();
  571.                     }
  572.                     break;
  573.                 case 'salaries':
  574.                 case 'tiers':
  575.                     $tiersRepository $this->em->getRepository(Tiers::class);
  576.                     $tiers $tiersRepository->find($data['id']);
  577.                     if(null!=$tiers) {
  578.                         $adresseList $tiers->serializeAdresse();
  579.                     }
  580.                     break;
  581.                 default: break;
  582.             }
  583.         }
  584.         return $this->render('module/module-adresse-list.html.twig', [
  585.             'adresse_list' => $adresseList,
  586.         ]);
  587.     }
  588.     /**
  589.      * @Route("/tiers/adresse/add", methods={"POST"}, name="add_adresse_tiers")
  590.      */
  591.     public function addAdresseTiers(Request $requestSerializerInterface $serializer): Response
  592.     {
  593.         //TODO: page erreur entity manager
  594.         if(null===$this->em) return $this->render('misc/404.html.twig');
  595.         $data array_map('trim'$request->request->all());
  596.         $adresseList = array();
  597.         if($data['type_tiers']!=='' && $data['id']!=='' && $data['lib_adresse']!=='') {
  598.             $adresse = new Adresse();
  599.             $adresse->setLibAdresse($data['lib_adresse'])
  600.                 ->setLigne1($data['ligne_1'])
  601.                 ->setLigne2($data['ligne_2'])
  602.                 ->setCodePostal($data['code_postal'])
  603.                 ->setVille(mb_strtoupper($data['ville']))
  604.                 ->setPays(mb_strtoupper($data['pays']));
  605.             switch($data['type_tiers']) {
  606.                 case 'clients':
  607.                 case 'prestataires':
  608.                     $societeRepository $this->em->getRepository(Societe::class);
  609.                     $societe $societeRepository->find($data['id']);
  610.                     if(null!=$societe) {
  611.                         $adresse->setSociete($societe);
  612.                         $this->em->persist($adresse);
  613.                         $this->em->flush();
  614.                         $adresseList $societe->serializeAdresse();
  615.                     }
  616.                     break;
  617.                 case 'salaries':
  618.                 case 'tiers':
  619.                     $tiersRepository $this->em->getRepository(Tiers::class);
  620.                     $tiers $tiersRepository->find($data['id']);
  621.                     if(null!=$tiers) {
  622.                         $adresse->setTiers($tiers);
  623.                         $this->em->persist($adresse);
  624.                         $this->em->flush();
  625.                         $adresseList $tiers->serializeAdresse();
  626.                     }
  627.                     break;
  628.                 default: break;
  629.             }
  630.         }
  631.         return $this->render('module/module-adresse-list.html.twig', [
  632.             'adresse_list' => $adresseList,
  633.         ]);
  634.     }
  635.     /**
  636.      * @Route("/tiers/update-adresse", methods={"POST"}, name="update_adresse_tiers")
  637.      */
  638.     public function updateAdresseTiers(Request $requestSerializerInterface $serializer): Response
  639.     {
  640.         //TODO: page erreur entity manager
  641.         if(null===$this->em) return $this->render('misc/404.html.twig');
  642.         $data array_map('trim'$request->request->all());
  643.         $adresseRepository $this->em->getRepository(Adresse::class);
  644.         $adresse $adresseRepository->find($data['id_adresse']);
  645.         $adresse->setLibAdresse($data['lib_adresse'])
  646.             ->setLigne1($data['ligne_1'])
  647.             ->setLigne2($data['ligne_2'])
  648.             ->setCodePostal($data['code_postal'])
  649.             ->setVille(mb_strtoupper($data['ville']))
  650.             ->setPays(mb_strtoupper($data['pays']))
  651.         ;
  652.         $this->em->persist($adresse);
  653.         $this->em->flush();
  654.         $adresseList = [];
  655.         if(null!==$adresse->getTiers()) $adresseList $adresse->getTiers()->serializeAdresse();
  656.         if(null!==$adresse->getSociete()) $adresseList $adresse->getSociete()->serializeAdresse();
  657.         return $this->render('module/module-adresse-list.html.twig', [
  658.             'adresse_list' => $adresseList,
  659.         ]);
  660.     }
  661.     /**
  662.      * @Route("/tiers/adresse/delete/{id}", methods={"GET"}, name="delete_adresse_tiers")
  663.      */
  664.     public function deleteAdresseTiers($id): Response
  665.     {
  666.         //TODO: page erreur entity manager
  667.         if(null===$this->em) return $this->render('misc/404.html.twig');
  668.         $adresseRepository $this->em->getRepository(Adresse::class);
  669.         /** @var \App\Entity\Adresse $adresse */
  670.         $adresse $adresseRepository->find($id);
  671.         $this->em->remove($adresse);
  672.         $this->em->flush();
  673.         /** @var \App\Entity\Tiers $tiers */
  674.         $tiers $adresse->getTiers();
  675.         $adresseList $tiers->serializeAdresse();
  676.         return $this->render('module/module-adresse-list.html.twig', [
  677.             'adresse_list' => $adresseList,
  678.         ]);
  679.     }
  680.     //TODO: ajouter update adresse
  681. }