src/Services/EtapsService.php line 124

Open in your IDE?
  1. <?php
  2. /**
  3.  * Created by PhpStorm.
  4.  */
  5. namespace App\Services;
  6. use App\Entity\Alert;
  7. use App\Entity\CategoryDocument;
  8. use App\Entity\CommentDoc;
  9. use App\Entity\CommentEtap;
  10. use App\Entity\ContratConstruction;
  11. use App\Entity\DimensionEtap160;
  12. use App\Entity\Document;
  13. use App\Entity\DocUpload;
  14. use App\Entity\Etap0;
  15. use App\Entity\Etap1;
  16. use App\Entity\Etap121;
  17. use App\Entity\Etap159;
  18. use App\Entity\Etap160;
  19. use App\Entity\Etap161;
  20. use App\Entity\Etap171;
  21. use App\Entity\Etap172;
  22. use App\Entity\Etap173;
  23. use App\Entity\Etap174;
  24. use App\Entity\Etap175;
  25. use App\Entity\Etap1Pcm;
  26. use App\Entity\Etap2;
  27. use App\Entity\Etap201;
  28. use App\Entity\Etap23;
  29. use App\Entity\Etap24Champs;
  30. use App\Entity\Etap26Champs;
  31. use App\Entity\Etap2Pcm;
  32. use App\Entity\Etap3;
  33. use App\Entity\Etap4;
  34. use App\Entity\Etap5;
  35. use App\Entity\Etap50;
  36. use App\Entity\Etap6;
  37. use App\Entity\Etap601;
  38. use App\Entity\Etap602;
  39. use App\Entity\Etap7;
  40. use App\Entity\Etap71;
  41. use App\Entity\Etap71Litige;
  42. use App\Entity\Etap71LitigeCommentaire;
  43. use App\Entity\Etap8;
  44. use App\Entity\Etap80;
  45. use App\Entity\Etap9;
  46. use App\Entity\Etap10;
  47. use App\Entity\Etap11;
  48. use App\Entity\Etap12;
  49. use App\Entity\Etap13;
  50. use App\Entity\Etap14;
  51. use App\Entity\Etap15;
  52. use App\Entity\Etap16;
  53. use App\Entity\Etap17;
  54. use App\Entity\Etap18;
  55. use App\Entity\Etap19;
  56. use App\Entity\Etap20;
  57. use App\Entity\Etap21;
  58. use App\Entity\Etap22;
  59. use App\Entity\Etap24;
  60. use App\Entity\Etap25;
  61. use App\Entity\Etap26;
  62. use App\Entity\Etaps;
  63. use App\Entity\EtapsCategory;
  64. use App\Entity\Fournisseur;
  65. use App\Entity\FournisseurProject;
  66. use App\Entity\ImfomationContratAchat;
  67. use App\Entity\JalonPaiementContratConstruction;
  68. use App\Entity\JalonPaiementEtap16;
  69. use App\Entity\ModuleInformation;
  70. use App\Entity\NumeroCardi;
  71. use App\Entity\OnduleurInformation;
  72. use App\Entity\ParametrageXlsProject;
  73. use App\Entity\PrixAnnexeContratConstruction;
  74. use App\Entity\PrixAnnexeEtap16;
  75. use App\Entity\Project;
  76. use App\Entity\Spv;
  77. use App\Entity\StatusConsruction;
  78. use App\Entity\StatusFoncier;
  79. use App\Entity\StatusRaccordement;
  80. use App\Entity\StatusTracker;
  81. use App\Entity\StatusTrackerConstruction;
  82. use App\Entity\StatusUrbanisme;
  83. use App\Entity\Toiture160;
  84. use App\Entity\TypeValorisation;
  85. use App\Entity\User;
  86. use App\Entity\VisiteTerrain;
  87. use App\Entity\VisiteTerrainV2;
  88. use App\Form\ProjectType;
  89. use App\Form\UserType;
  90. use Kunnu\Dropbox\Dropbox;
  91. use Kunnu\Dropbox\DropboxApp;
  92. use Kunnu\Dropbox\Exceptions\DropboxClientException;
  93. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  94. use Doctrine\ORM\EntityManagerInterface;
  95. use Symfony\Component\Form\FormFactoryInterface;
  96. use Symfony\Component\HttpFoundation\File\UploadedFile;
  97. use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
  98. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  99. use Symfony\Contracts\Translation\TranslatorInterface;
  100. use Symfony\Component\Security\Core\Security;
  101. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  102. use Twig\Environment;
  103. use App\Entity\Centrale;
  104. use Symfony\Component\Validator\Constraints as Assert;
  105. use Symfony\Component\Validator\Validator\ValidatorInterface;
  106. use PhpOffice\PhpSpreadsheet\IOFactory;
  107. class EtapsService
  108. {
  109.     private $em;
  110.     private $trans;
  111.     private $params;
  112.     private $security;
  113.     private $session;
  114.     private $twig;
  115.     private $notification;
  116.     public function __construct(
  117.         Environment $twig,
  118.         SessionInterface $session,
  119.         Security $security,
  120.         ParameterBagInterface $params,
  121.         EntityManagerInterface $em,
  122.         TranslatorInterface $trans,
  123.         ValidatorInterface $validator,
  124.         FlashBagInterface $flashBag,
  125.         UserPasswordEncoderInterface $passwordEncoder,
  126.         Notifications $notifications,
  127.         FormFactoryInterface $form
  128.     ) {
  129.         $this->em = $em;
  130.         $this->trans = $trans;
  131.         $this->params = $params;
  132.         $this->security = $security;
  133.         $this->session = $session;
  134.         $this->twig = $twig;
  135.         $this->validator = $validator;
  136.         $this->form = $form;
  137.         $this->flashBag = $flashBag;
  138.         $this->passwordEncoder = $passwordEncoder;
  139.         $this->notification = $notifications;
  140.     }
  141.     public function addComment($request)
  142.     {
  143.         $comment = $request->get('comment');
  144.         $etapNum = $request->get('etapNum');
  145.         $tokenUser = $request->get('tokenUser');
  146.         $tokenProject = $request->get('tokenProject');
  147.         $commentEtapId = $request->get('commentEtapId');
  148.         if($comment  and $tokenUser and $tokenProject){
  149.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  150.             $user = $this->em->getRepository(User::class)->findOneBy(['token'=>$tokenUser]);
  151.             if($project && $user){
  152.                 if($commentEtapId){
  153.                     $commentEntity = $this->em->getRepository(CommentEtap::class)->find($commentEtapId);
  154.                     if(!$commentEntity){
  155.                         $commentEntity = new CommentEtap();
  156.                     }
  157.                 }else{
  158.                     $commentEntity = new CommentEtap();
  159.                 }
  160.                 $commentEntity->setProject($project);
  161.                 $commentEntity->setUser($user);
  162.                 $commentEntity->setComment($comment);
  163.                 $commentEntity->setEtapNum($etapNum);
  164.                 $this->em->persist($commentEntity);
  165.                 $this->em->flush();
  166.                 return [
  167.                     'commentEntity' => $commentEntity,
  168.                     'success' => true
  169.                 ];
  170.             }
  171.          }
  172.         return [
  173.             'success' => false
  174.         ];
  175.     }
  176.     public function deleteComment($request)
  177.     {
  178.         $commentEtapId = $request->get('commentEtapId');
  179.         if($commentEtapId){
  180.             $commentEntity = $this->em->getRepository(CommentEtap::class)->find($commentEtapId);
  181.             if($commentEntity) {
  182.                 $this->em->remove($commentEntity);
  183.                 $this->em->flush();
  184.                 return [
  185.                     'success' => true
  186.                 ];
  187.             }
  188.         }
  189.         return [
  190.             'success' => false
  191.         ];
  192.     }
  193.     public function changeStatusNextEtap($etap){
  194.         if(is_object($etap)){
  195.             $this->em->refresh($etap);
  196.             $project = $etap->getProject();
  197.             $category = $etap->getEtap()->getCategory();
  198.             $etapNexNum = $etap->getEtap()->getEtapsNum()+1;
  199.             $etapLigne = $this->em->getRepository(Etaps::class)->getEtapByCreteria($category,$etapNexNum,$project);
  200.             if(!$etapLigne){
  201.                 $etapLigne = $this->em->getRepository(Etaps::class)->getEtapByCreteria($category,$etapNexNum+2,$project);
  202.                 if(!$etapLigne){
  203.                     $etapLigne = $this->em->getRepository(Etaps::class)->getEtapByCreteria($category,$etapNexNum+3,$project);
  204.                     if(!$etapLigne){
  205.                         $etapLigne = $this->em->getRepository(Etaps::class)->getEtapByCreteria($category,$etapNexNum+4,$project);
  206.                         if(!$etapLigne){
  207.                             $nexCategoryNum = $category->getNum()+1;
  208.                             $nexCategoryEntity = $this->em->getRepository(EtapsCategory::class)->findOneBy(['num'=>$nexCategoryNum]);
  209.                             if($nexCategoryEntity){
  210.                                 $etapLigne = $this->em->getRepository(Etaps::class)->getEtapByCreteria($nexCategoryEntity,0,$project);
  211.                                 if(!$etapLigne){
  212.                                     $etapLigne = $this->em->getRepository(Etaps::class)->getEtapByCreteria($nexCategoryEntity,1,$project);
  213.                                 }
  214.                             }
  215.                         }
  216.                     }
  217.                 }
  218.             }
  219.             if($etapLigne){
  220.                 $nextEtapClass = 'App\\Entity\\Etap' . $etapLigne->getNum();
  221.                 $nexEtap = $this->em->getRepository($nextEtapClass)->findOneBy(['project' => $project->getId()]);
  222.                 if ($nexEtap) {
  223.                     if ($nexEtap->getStatus() == Etaps::STATUS_EN_COURS) {
  224.                         $this->em->persist($nexEtap);
  225.                         $this->em->flush();
  226.                         $project = $etap->getProject();
  227.                         $project->setNumEtapEncours($nexEtap->getEtap()->getNum());
  228.                         $this->em->persist($project);
  229.                         $this->em->flush();
  230.                     }
  231.                 }
  232.             }
  233.         }
  234.     }
  235.     public function changeStatuEtapValideNotNeedCondition($etap){
  236.         if(is_object($etap)){
  237.             $this->em->refresh($etap);
  238.             if(!$etap->getEtap()->getIsNeedCondition()){
  239.                 $etap->setStatus(Etaps::STATUS_VALIDE);
  240.                 $etap->setValideAt(new \DateTime());
  241.                 $this->em->persist($etap);
  242.                 $this->em->flush();
  243.             }
  244.             $this->changeStatusNextEtap($etap);
  245.         }
  246.     }
  247.     private function checkUserAction($user,$project,$etap){
  248.         if(in_array('ROLE_DEV',$user->getRoles())){
  249.             if($user->getId() == $project->getDeveloppeur()->getId()){
  250.                 if($etap->getStatus() == Etaps::STATUS_FERMEE  or $etap->getStatus() == Etaps::STATUS_REFUSE ){
  251.                     return false;
  252.                 }
  253.             }
  254.         }elseif(in_array('ROLE_EPC',$user->getRoles())){
  255.             if($user->getId() == $project->getEpc()->getId()) {
  256.                 if ($etap->getStatus() == Etaps::STATUS_FERMEE or $etap->getStatus() == Etaps::STATUS_REFUSE) {
  257.                     return  false;
  258.                 }
  259.             }
  260.         }
  261.         return true;
  262.     }
  263.     public function changeStatus($etap,$status,$commentRefuse=null,$commentDemande=null){
  264.         if(is_object($etap)){
  265.             $etap->setStatus($status);
  266.             if($status == Etaps::STATUS_VALIDE){
  267.                 $etap->setValideAt(new \DateTime());
  268.             }
  269.             if($commentRefuse){
  270.                 $etap->setCommentRefuse($commentRefuse) ;
  271.                 $etap->setRefuseAt(new \DateTime());
  272.             }
  273.             if($commentDemande){
  274.                 $etap->setCommentDemande($commentDemande);
  275.                 $etap->setCommentDemandeAt(new \DateTime());
  276.             }
  277.             $this->em->persist($etap);
  278.             $this->em->flush();
  279.         }
  280.     }
  281.     public function addArchiveDoc($array){
  282.         if(count($array)> 0){
  283.             foreach ($array as $item){
  284.                 $item->setIsArchived(1);
  285.                 $this->em->persist($item);
  286.                 $this->em->flush();
  287.             }
  288.         }
  289.     }
  290.     public function submitEtap0($request,$user)
  291.     {
  292.         $fileInfoArchiMultiple = $request->get('fileInfoArchiMultiple');
  293.         $fileMsaAttestationMultiple = $request->get('fileMsaAttestationMultiple');
  294.         $fileMsaReleveExploitationMultiple = $request->get('fileMsaReleveExploitationMultiple');
  295.         $fileFicheBesoinAgricoleMultiple = $request->get('fileFicheBesoinAgricoleMultiple');
  296.         $fileLettreMotivationMultiple = $request->get('fileLettreMotivationMultiple');
  297.         $fileICPEMultiple = $request->get('fileICPEMultiple');
  298.         $fileReglementUrbanismeMultiple = $request->get('fileReglementUrbanismeMultiple');
  299.         $fileAutreEtap0Multiple = $request->get('fileAutreEtap0Multiple');
  300.         $commentaireEtap0 = $request->get('commentaireEtap0');
  301.         $architecte = $request->get('architecte');
  302.         $etapToken = $request->get('etapToken');
  303.         $tokenProject = $request->get('tokenProject');
  304.         if($etapToken and $tokenProject){
  305.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  306.             $etap = $this->em->getRepository(Etap0::class)->findOneBy(['token'=>$etapToken]);
  307.             if($project && $etap){
  308.                 if(!$this->checkUserAction($user,$project,$etap)){
  309.                     return [
  310.                         'success' => false
  311.                     ];
  312.                 }
  313.                 if($fileInfoArchiMultiple){
  314.                     $array = explode(',',$fileInfoArchiMultiple);
  315.                     foreach ($array as $item){
  316.                         $fileInfoArchiMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  317.                         if($fileInfoArchiMultipleEntity){
  318.                             $nomenclature = $this->getNomenclature($etap,$fileInfoArchiMultipleEntity,'Infos pour archi (bardage, aménagement intérieur, solution EP, borne incendie…)');
  319.                             $etap->addFileInfoArchiMultiple($fileInfoArchiMultipleEntity);
  320.                             $this->uploadFileToDropbox($fileInfoArchiMultipleEntity,$project,"Urbanisme/".$fileInfoArchiMultipleEntity->getId().$nomenclature);
  321.                         }
  322.                     }
  323.                 }
  324.                 if($fileMsaAttestationMultiple){
  325.                     $array = explode(',',$fileMsaAttestationMultiple);
  326.                     foreach ($array as $item){
  327.                         $fileMsaAttestationMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  328.                         if($fileMsaAttestationMultipleEntity){
  329.                             $nomenclature = $this->getNomenclature($etap,$fileMsaAttestationMultipleEntity,'MSA Attestation');
  330.                             $etap->addFileMsaAttestationMultiple($fileMsaAttestationMultipleEntity);
  331.                             $this->uploadFileToDropbox($fileMsaAttestationMultipleEntity,$project,"Urbanisme/".$fileMsaAttestationMultipleEntity->getId().$nomenclature);
  332.                         }
  333.                     }
  334.                 }
  335.                 if($fileMsaReleveExploitationMultiple){
  336.                     $array = explode(',',$fileMsaReleveExploitationMultiple);
  337.                     foreach ($array as $item){
  338.                         $fileMsaReleveExploitationMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  339.                         if($fileMsaReleveExploitationMultipleEntity){
  340.                             $nomenclature = $this->getNomenclature($etap,$fileMsaReleveExploitationMultipleEntity,'MSA Relevé d’exploitation');
  341.                             $etap->addFileMsaReleveExploitationMultiple($fileMsaReleveExploitationMultipleEntity);
  342.                             $this->uploadFileToDropbox($fileMsaReleveExploitationMultipleEntity,$project,"Urbanisme/".$fileMsaReleveExploitationMultipleEntity->getId().$nomenclature);
  343.                         }
  344.                     }
  345.                 }
  346.                 if($fileFicheBesoinAgricoleMultiple){
  347.                     $array = explode(',',$fileFicheBesoinAgricoleMultiple);
  348.                     foreach ($array as $item){
  349.                         $fileFicheBesoinAgricoleMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  350.                         if($fileFicheBesoinAgricoleMultipleEntity){
  351.                             $nomenclature = $this->getNomenclature($etap,$fileFicheBesoinAgricoleMultipleEntity,'Fiche de besoins agricoles');
  352.                             $etap->addFileFicheBesoinAgricoleMultiple($fileFicheBesoinAgricoleMultipleEntity);
  353.                             $this->uploadFileToDropbox($fileFicheBesoinAgricoleMultipleEntity,$project,"Urbanisme/".$fileFicheBesoinAgricoleMultipleEntity->getId().$nomenclature);
  354.                         }
  355.                     }
  356.                 }
  357.                 if($fileLettreMotivationMultiple){
  358.                     $array = explode(',',$fileLettreMotivationMultiple);
  359.                     foreach ($array as $item){
  360.                         $fileLettreMotivationMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  361.                         if($fileLettreMotivationMultipleEntity){
  362.                             $nomenclature = $this->getNomenclature($etap,$fileLettreMotivationMultipleEntity,'Lettre de motivation');
  363.                             $etap->addFileLettreMotivationMultiple($fileLettreMotivationMultipleEntity);
  364.                             $this->uploadFileToDropbox($fileLettreMotivationMultipleEntity,$project,"Urbanisme/".$fileLettreMotivationMultipleEntity->getId().$nomenclature);
  365.                         }
  366.                     }
  367.                 }
  368.                 if($fileICPEMultiple){
  369.                     $array = explode(',',$fileICPEMultiple);
  370.                     foreach ($array as $item){
  371.                         $fileICPEMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  372.                         if($fileICPEMultipleEntity){
  373.                             $nomenclature = $this->getNomenclature($etap,$fileICPEMultipleEntity,'ICPE (attestation non-soumission ou preuve de dépôt déclaration)');
  374.                             $etap->addFileICPEMultiple($fileICPEMultipleEntity);
  375.                             $this->uploadFileToDropbox($fileICPEMultipleEntity,$project,"Urbanisme/".$fileICPEMultipleEntity->getId().$nomenclature);
  376.                         }
  377.                     }
  378.                 }
  379.                 if($fileReglementUrbanismeMultiple){
  380.                     $array = explode(',',$fileReglementUrbanismeMultiple);
  381.                     foreach ($array as $item){
  382.                         $fileReglementUrbanismeMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  383.                         if($fileReglementUrbanismeMultipleEntity){
  384.                             $nomenclature = $this->getNomenclature($etap,$fileReglementUrbanismeMultipleEntity,'Règlement d’urbanisme » (PLU / PLUi)');
  385.                             $etap->addFileReglementUrbanismeMultiple($fileReglementUrbanismeMultipleEntity);
  386.                             $this->uploadFileToDropbox($fileReglementUrbanismeMultipleEntity,$project,"Urbanisme/".$fileReglementUrbanismeMultipleEntity->getId().$nomenclature);
  387.                         }
  388.                     }
  389.                 }
  390.                 if($fileAutreEtap0Multiple){
  391.                     $array = explode(',',$fileAutreEtap0Multiple);
  392.                     foreach ($array as $item){
  393.                         $fileAutreEtap0MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  394.                         if($fileAutreEtap0MultipleEntity){
  395.                             $nomenclature = $this->getNomenclature($etap,$fileAutreEtap0MultipleEntity,'Règlement d’urbanisme » (PLU / PLUi)');
  396.                             $etap->addFileAutreEtap0Multiple($fileAutreEtap0MultipleEntity);
  397.                             $this->uploadFileToDropbox($fileAutreEtap0MultipleEntity,$project,"Urbanisme/".$fileAutreEtap0MultipleEntity->getId().$nomenclature);
  398.                         }
  399.                     }
  400.                 }
  401.                 if($commentaireEtap0 and $commentaireEtap0 != ''){
  402.                     $etap->setCommentaireEtap0($commentaireEtap0);
  403.                 }else{
  404.                     $etap->setCommentaireEtap0(null);
  405.                 }
  406.                 if($architecte and $architecte != 0){
  407.                     $fournisseur = $this->em->getRepository(Fournisseur::class)->find($architecte);
  408.                     if($fournisseur){
  409.                         $etap->setArchitecte($fournisseur);
  410.                     }else{
  411.                         $etap->setArchitecte(null);
  412.                     }
  413.                 }else {
  414.                     $etap->setArchitecte(null);
  415.                 }
  416.                 $this->em->persist($etap);
  417.                 $this->em->flush();
  418.                 $this->updateStatusTracker($project); // set status tracker
  419.                 $this->flashBag->add(
  420.                     'success',
  421.                     'L\'opération a été effectuée avec succès.'
  422.                 );
  423.                 return [
  424.                     'etap' => $etap,
  425.                     'success' => true
  426.                 ];
  427.             }
  428.         }
  429.         return [
  430.             'success' => false
  431.         ];
  432.     }
  433.     public function submitEtap1($request,$user)
  434.     {
  435.         $fileDossierPcDpMultiple = $request->get('fileDossierPcDpMultiple');
  436.         $fileAutreDocPcMultiple = $request->get('fileAutreDocPcMultiple');
  437.         $fileRecepisseComplementPcMultiple = $request->get('fileRecepisseComplementPcMultiple');
  438.         $fileDemandeComplementPcMultiple = $request->get('fileDemandeComplementPcMultiple');
  439.         $fileRecepisseDepotPcMultiple = $request->get('fileRecepisseDepotPcMultiple');
  440.         $fileArretePcDpMultiple = $request->get('fileArretePcDpMultiple');
  441.         $fileCertificatNonOppositionEtap1Multiple = $request->get('fileCertificatNonOppositionEtap1Multiple');
  442.         $dateArretePcEtap = $request->get('dateArretePcEtap');
  443.         $referenceDp = $request->get('referenceDp');
  444.         $referencePc = $request->get('referencePc');
  445.         $dateDepotPc = $request->get('dateDepotPc');
  446.         $dateDemandeComplement = $request->get('dateDemandeComplement');
  447.         $isDelaiInstruction = $request->get('isDelaiInstruction');
  448.         $delaiInstruction = $request->get('delaiInstruction');
  449.         $dateDepotComplement = $request->get('dateDepotComplement');
  450.         $isNotDateDemandeComplement = $request->get('isNotDateDemandeComplement');
  451.         $isDateArretePcProrogation = $request->get('isDateArretePcProrogation');
  452.         $champLibre = $request->get('champLibre');
  453.         // dp mixte
  454.         $fileDossierPcDpMixteMultiple = $request->get('fileDossierPcDpMixteMultiple');
  455.         $fileAutreDocPcDpMixteMultiple = $request->get('fileAutreDocPcDpMixteMultiple');
  456.         $fileRecepisseComplementPcDpMixteMultiple = $request->get('fileRecepisseComplementPcDpMixteMultiple');
  457.         $fileDemandeComplementPcDpMixteMultiple = $request->get('fileDemandeComplementPcDpMixteMultiple');
  458.         $fileRecepisseDepotPcDpMixteMultiple = $request->get('fileRecepisseDepotPcDpMixteMultiple');
  459.         $fileArretePcDpMixteMultiple = $request->get('fileArretePcDpMixteMultiple');
  460.         $dateArretePcDpMixte = $request->get('dateArretePcDpMixte');
  461.         $referencePcDpMixte = $request->get('referencePcDpMixte');
  462.         $dateDepotPcDpMixte = $request->get('dateDepotPcDpMixte');
  463.         $dateDemandeComplementPcDpMixte = $request->get('dateDemandeComplementPcDpMixte');
  464.         $isDelaiInstructionPcDpMixte = $request->get('isDelaiInstructionPcDpMixte');
  465.         $delaiInstructionPcDpMixte = $request->get('delaiInstructionPcDpMixte');
  466.         $dateDepotComplementPcDpMixte = $request->get('dateDepotComplementPcDpMixte');
  467.         $isDateArretePcProrogationPcDpMixte = $request->get('isDateArretePcProrogationPcDpMixte');
  468.         $champLibrePcDpMixte = $request->get('champLibrePcDpMixte');
  469.         // dp mixte
  470.         $etapToken = $request->get('etapToken');
  471.         $tokenProject = $request->get('tokenProject');
  472.         $etap1Pcm = $request->get('etap1Pcm');
  473.         if($etapToken and $tokenProject){
  474.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  475.             $etap = $this->em->getRepository(Etap1::class)->findOneBy(['token'=>$etapToken]);
  476.             if($project && $etap){
  477.                 if(!$this->checkUserAction($user,$project,$etap)){
  478.                     return [
  479.                         'success' => false
  480.                     ];
  481.                 }
  482.                 if($etap1Pcm){
  483.                     foreach ($etap1Pcm as $item){
  484.                         if(isset($item['id']) and $item['id'] != ''){
  485.                             $etap1PcmEntity = $this->em->getRepository(Etap1Pcm::class)->findOneBy(['token'=>$item['id']]) ;
  486.                         }else{
  487.                             $etap1PcmEntity = new Etap1Pcm() ;
  488.                         }
  489.                         if(isset($item['fileDossierPcmpMultiple']) and $item['fileDossierPcmpMultiple'] != ''){
  490.                             $array = explode(',',$item['fileDossierPcmpMultiple']);
  491.                             foreach ($array as $item1){
  492.                                 $fileDossierPcmpMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  493.                                 $nomenclature = $this->getNomenclature($etap,$fileDossierPcmpMultipleEntity,'Dossier PCM');
  494.                                 $etap1PcmEntity->addFileDossierPcmpMultiple($fileDossierPcmpMultipleEntity);
  495.                                 $this->uploadFileToDropbox($fileDossierPcmpMultipleEntity,$project,"Urbanisme/".$fileDossierPcmpMultipleEntity->getId().$nomenclature);
  496.                             }
  497.                         }
  498.                         if(isset($item['fileArretePcmMultiple']) and $item['fileArretePcmMultiple'] != ''){
  499.                             $array = explode(',',$item['fileArretePcmMultiple']);
  500.                             foreach ($array as $item1){
  501.                                 $fileArretePcmMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  502.                                 $nomenclature = $this->getNomenclature($etap,$fileArretePcmMultipleEntity,'Arrêté PCM (Permis de construire modificatif)');
  503.                                 $etap1PcmEntity->addFileArretePcmMultiple($fileArretePcmMultipleEntity);
  504.                                 $this->uploadFileToDropbox($fileArretePcmMultipleEntity,$project,"Urbanisme/".$fileArretePcmMultipleEntity->getId().$nomenclature);
  505.                             }
  506.                         }
  507.                         if(isset($item['fileRecepisseDepotPcmMultiple']) and $item['fileRecepisseDepotPcmMultiple'] != ''){
  508.                             $array = explode(',',$item['fileRecepisseDepotPcmMultiple']);
  509.                             foreach ($array as $item1){
  510.                                 $fileRecepisseDepotPcmMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  511.                                 $nomenclature = $this->getNomenclature($etap,$fileRecepisseDepotPcmMultipleEntity,'Récépissé dépôt PCM');
  512.                                 $etap1PcmEntity->addFileRecepisseDepotPcmMultiple($fileRecepisseDepotPcmMultipleEntity);
  513.                                 $this->uploadFileToDropbox($fileRecepisseDepotPcmMultipleEntity,$project,"Urbanisme/".$fileRecepisseDepotPcmMultipleEntity->getId().$nomenclature);
  514.                             }
  515.                         }
  516.                         if(isset($item['fileDemandeComplementPcmMultiple']) and $item['fileDemandeComplementPcmMultiple'] != ''){
  517.                             $array = explode(',',$item['fileDemandeComplementPcmMultiple']);
  518.                             foreach ($array as $item1){
  519.                                 $fileDemandeComplementPcmMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  520.                                 $nomenclature = $this->getNomenclature($etap,$fileDemandeComplementPcmMultipleEntity,'Demande compléments PCM');
  521.                                 $etap1PcmEntity->addFileDemandeComplementPcmMultiple($fileDemandeComplementPcmMultipleEntity);
  522.                                 $this->uploadFileToDropbox($fileDemandeComplementPcmMultipleEntity,$project,"Urbanisme/".$fileDemandeComplementPcmMultipleEntity->getId().$nomenclature);
  523.                             }
  524.                         }
  525.                         if(isset($item['fileRecepisseComplementPcmMultiple']) and $item['fileRecepisseComplementPcmMultiple'] != ''){
  526.                             $array = explode(',',$item['fileRecepisseComplementPcmMultiple']);
  527.                             foreach ($array as $item1){
  528.                                 $fileRecepisseComplementPcmMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  529.                                 $nomenclature = $this->getNomenclature($etap,$fileRecepisseComplementPcmMultipleEntity,'Récépissé compléments PCM');
  530.                                 $etap1PcmEntity->addFileRecepisseComplementPcmMultiple($fileRecepisseComplementPcmMultipleEntity);
  531.                                 $this->uploadFileToDropbox($fileRecepisseComplementPcmMultipleEntity,$project,"Urbanisme/".$fileRecepisseComplementPcmMultipleEntity->getId().$nomenclature);
  532.                             }
  533.                         }
  534.                         if(isset($item['fileAutreDocPcmMultiple']) and $item['fileAutreDocPcmMultiple'] != ''){
  535.                             $array = explode(',',$item['fileAutreDocPcmMultiple']);
  536.                             foreach ($array as $item1){
  537.                                 $fileAutreDocPcmMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  538.                                 $nomenclature = $this->getNomenclature($etap,$fileAutreDocPcmMultipleEntity,'Autre (prolongation délai d’instruction) PCM');
  539.                                 $etap1PcmEntity->addFileAutreDocPcmMultiple($fileAutreDocPcmMultipleEntity);
  540.                                 $this->uploadFileToDropbox($fileAutreDocPcmMultipleEntity,$project,"Urbanisme/".$fileAutreDocPcmMultipleEntity->getId().$nomenclature);
  541.                             }
  542.                         }
  543.                         if(isset($item['dateArretePcm']) and $item['dateArretePcm'] != ''){
  544.                             $etap1PcmEntity->setDateArretePcm(new \DateTime($item['dateArretePcm']));
  545.                         }else{
  546.                             $etap1PcmEntity->setDateArretePcm(null);
  547.                         }
  548.                         if(isset($item['referencePcm']) and $item['referencePcm'] != ''){
  549.                             $etap1PcmEntity->setReferencePcm($item['referencePcm']);
  550.                         }else{
  551.                             $etap1PcmEntity->setReferencePcm(null);
  552.                         }
  553.                         if(isset($item['dateDepotPcm']) and $item['dateDepotPcm'] != ''){
  554.                             $etap1PcmEntity->setDateDepotPCM(new \DateTime($item['dateDepotPcm']));
  555.                         }else{
  556.                             $etap1PcmEntity->setDateDepotPCM(null);
  557.                         }
  558.                         if(isset($item['dateDemandeComplement']) and $item['dateDemandeComplement'] != ''){
  559.                             $etap1PcmEntity->setDateDemandeComplement(new \DateTime($item['dateDemandeComplement']));
  560.                         }else{
  561.                             $etap1PcmEntity->setDateDemandeComplement(null);
  562.                         }
  563.                         if(isset($item['isDelaiInstruction'])){
  564.                             $etap1PcmEntity->setIsDelaiInstruction($item['isDelaiInstruction']);
  565.                         }
  566.                         if(isset($item['delaiInstruction'])){
  567.                             $etap1PcmEntity->setDelaiInstruction((int)$item['delaiInstruction']);
  568.                         }
  569.                         if(isset($item['isDateArretePcmProrogation'])){
  570.                             $etap1PcmEntity->setIsDateArretePCMProrogation($item['isDateArretePcmProrogation']);
  571.                         }
  572.                         if(isset($item['isNotDateDemandeComplementPcm'])){
  573.                             $etap1PcmEntity->setIsNotDateDemandeComplementPcm($item['isNotDateDemandeComplementPcm']);
  574.                         }
  575.                         if(isset($item['dateDepotComplement']) and $item['dateDepotComplement'] != ''){
  576.                             $etap1PcmEntity->setDateDepotComplement(new \DateTime($item['dateDepotComplement']));
  577.                         }else{
  578.                             $etap1PcmEntity->setDateDepotComplement(null);
  579.                         }
  580.                         if(isset($item['champLibrePcm'])){
  581.                             $etap1PcmEntity->setChampLibrePcm($item['champLibrePcm']);
  582.                         }
  583.                         $etap1PcmEntity->setNatureActe(isset($item['natureActe']) && $item['natureActe'] != '' ? $item['natureActe'] : null);
  584.                         $etap1PcmEntity->setEtap1($etap);
  585.                         $this->em->persist($etap1PcmEntity);
  586.                         $this->em->flush();
  587.                     }
  588.                 }
  589.                 if($project->getTypologieProject() && $project->getTypologieProject()->getId() == 1){
  590.                     $str = 'DP';
  591.                 }else{
  592.                     $str = 'PC';
  593.                 }
  594.                 if($fileDossierPcDpMultiple){
  595.                     $array = explode(',',$fileDossierPcDpMultiple);
  596.                     foreach ($array as $item){
  597.                         $fileDossierPcDpMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  598.                         if($fileDossierPcDpMultipleEntity){
  599.                             $nomenclature = $this->getNomenclature($etap,$fileDossierPcDpMultipleEntity,'Dossier '.$str);
  600.                             $etap->addFileDossierPcDpMultiple($fileDossierPcDpMultipleEntity);
  601.                             $this->uploadFileToDropbox($fileDossierPcDpMultipleEntity,$project,"Urbanisme/".$fileDossierPcDpMultipleEntity->getId().$nomenclature);
  602.                         }
  603.                     }
  604.                 }
  605.                 if($fileArretePcDpMultiple){
  606.                     $array = explode(',',$fileArretePcDpMultiple);
  607.                     foreach ($array as $item){
  608.                         $fileArretePcDpMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  609.                         if($fileArretePcDpMultipleEntity){
  610.                             $nomenclature = $this->getNomenclature($etap,$fileArretePcDpMultipleEntity,'Arrêté '.$str);
  611.                             $etap->addFileArretePcDpMultiple($fileArretePcDpMultipleEntity);
  612.                             $this->uploadFileToDropbox($fileArretePcDpMultipleEntity,$project,"Urbanisme/".$fileArretePcDpMultipleEntity->getId().$nomenclature);
  613.                         }
  614.                     }
  615.                 }
  616.                 if($fileCertificatNonOppositionEtap1Multiple){
  617.                     $array = explode(',',$fileCertificatNonOppositionEtap1Multiple);
  618.                     foreach ($array as $item){
  619.                         $fileCertificatNonOppositionEtap1MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  620.                         if($fileCertificatNonOppositionEtap1MultipleEntity){
  621.                             $nomenclature = $this->getNomenclature($etap,$fileCertificatNonOppositionEtap1MultipleEntity,'certificat de non-opposition');
  622.                             $etap->addFileCertificatNonOppositionEtap1Multiple($fileCertificatNonOppositionEtap1MultipleEntity);
  623.                             $this->uploadFileToDropbox($fileCertificatNonOppositionEtap1MultipleEntity,$project,"Urbanisme/".$fileCertificatNonOppositionEtap1MultipleEntity->getId().$nomenclature);
  624.                         }
  625.                     }
  626.                 }
  627.                 if($fileRecepisseDepotPcMultiple){
  628.                     $array = explode(',',$fileRecepisseDepotPcMultiple);
  629.                     foreach ($array as $item){
  630.                         $fileRecepisseDepotPcMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  631.                         if($fileRecepisseDepotPcMultipleEntity){
  632.                             $nomenclature = $this->getNomenclature($etap,$fileRecepisseDepotPcMultipleEntity,'Récépissé dépôt '.$str);
  633.                             $etap->addFileRecepisseDepotPcMultiple($fileRecepisseDepotPcMultipleEntity);
  634.                             $this->uploadFileToDropbox($fileRecepisseDepotPcMultipleEntity,$project,"Urbanisme/".$fileRecepisseDepotPcMultipleEntity->getId().$nomenclature);
  635.                         }
  636.                     }
  637.                 }
  638.                 if($fileDemandeComplementPcMultiple){
  639.                     $array = explode(',',$fileDemandeComplementPcMultiple);
  640.                     foreach ($array as $item){
  641.                         $fileDemandeComplementPcMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  642.                         if($fileDemandeComplementPcMultipleEntity){
  643.                             $nomenclature = $this->getNomenclature($etap,$fileDemandeComplementPcMultipleEntity,'Demande compléments '.$str);
  644.                             $etap->addFileDemandeComplementPcMultiple($fileDemandeComplementPcMultipleEntity);
  645.                             $this->uploadFileToDropbox($fileDemandeComplementPcMultipleEntity,$project,"Urbanisme/".$fileDemandeComplementPcMultipleEntity->getId().$nomenclature);
  646.                         }
  647.                     }
  648.                 }
  649.                 if($fileRecepisseComplementPcMultiple){
  650.                     $array = explode(',',$fileRecepisseComplementPcMultiple);
  651.                     foreach ($array as $item){
  652.                         $fileRecepisseComplementPcMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  653.                         if($fileRecepisseComplementPcMultipleEntity){
  654.                             $nomenclature = $this->getNomenclature($etap,$fileRecepisseComplementPcMultipleEntity,'Récépissé compléments '.$str);
  655.                             $etap->addFileRecepisseComplementPcMultiple($fileRecepisseComplementPcMultipleEntity);
  656.                             $this->uploadFileToDropbox($fileRecepisseComplementPcMultipleEntity,$project,"Urbanisme/".$fileRecepisseComplementPcMultipleEntity->getId().$nomenclature);
  657.                         }
  658.                     }
  659.                 }
  660.                 if($fileAutreDocPcMultiple){
  661.                     $array = explode(',',$fileAutreDocPcMultiple);
  662.                     foreach ($array as $item){
  663.                         $fileAutreDocPcMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  664.                         if($fileAutreDocPcMultipleEntity){
  665.                             $nomenclature = $this->getNomenclature($etap,$fileAutreDocPcMultipleEntity,'Autre (prolongation délai d’instruction) '.$str);
  666.                             $etap->addFileAutreDocPcMultiple($fileAutreDocPcMultipleEntity);
  667.                             $this->uploadFileToDropbox($fileAutreDocPcMultipleEntity,$project,"Urbanisme/".$fileAutreDocPcMultipleEntity->getId().$nomenclature);
  668.                         }
  669.                     }
  670.                 }
  671.                 if($dateArretePcEtap){
  672.                     $etap->setDateArretePcDp(new \DateTime($dateArretePcEtap));
  673.                     $project->setDateArretePc(new \DateTime($dateArretePcEtap));
  674.                 }else{
  675.                     $etap->setDateArretePcDp(null);
  676.                     $project->setDateArretePc(null);
  677.                 }
  678.                 if($referenceDp){
  679.                     $etap->setReferenceDp($referenceDp);
  680.                 }
  681.                 if($referencePc){
  682.                     $etap->setReferencePc($referencePc);
  683.                 }
  684.                 if($dateDepotPc){
  685.                     $etap->setDateDepotPc(new \DateTime($dateDepotPc));
  686.                 }else{
  687.                     $etap->setDateDepotPc(null);
  688.                 }
  689.                 if($dateDemandeComplement){
  690.                     $etap->setDateDemandeComplement(new \DateTime($dateDemandeComplement));
  691.                 }else{
  692.                     $etap->setDateDemandeComplement(null);
  693.                 }
  694.                 $etap->setIsDelaiInstruction($isDelaiInstruction);
  695.                 $etap->setIsNotDateDemandeComplement($isNotDateDemandeComplement);
  696.                 $etap->setDelaiInstruction((int)$delaiInstruction);
  697.                 $etap->setIsDateArretePcProrogation($isDateArretePcProrogation);
  698.                 $etap->setChampLibre($champLibre);
  699.                 if($dateDepotComplement){
  700.                     $etap->setDateDepotComplement(new \DateTime($dateDepotComplement));
  701.                 }else{
  702.                     $etap->setDateDepotComplement(null);
  703.                 }
  704.                 // dp mixte
  705.                 if($fileDossierPcDpMixteMultiple){
  706.                     $array = explode(',',$fileDossierPcDpMixteMultiple);
  707.                     foreach ($array as $item){
  708.                         $fileDossierPcDpMixteMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  709.                         if($fileDossierPcDpMixteMultipleEntity){
  710.                             $nomenclature = $this->getNomenclature($etap,$fileDossierPcDpMixteMultipleEntity,'Dossier dp (mixte)');
  711.                             $etap->addFileDossierPcDpMixteMultiple($fileDossierPcDpMixteMultipleEntity);
  712.                             $this->uploadFileToDropbox($fileDossierPcDpMixteMultipleEntity,$project,"Urbanisme/".$fileDossierPcDpMixteMultipleEntity->getId().$nomenclature);
  713.                         }
  714.                     }
  715.                 }
  716.                 if($fileArretePcDpMixteMultiple){
  717.                     $array = explode(',',$fileArretePcDpMixteMultiple);
  718.                     foreach ($array as $item){
  719.                         $fileArretePcDpMixteMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  720.                         if($fileArretePcDpMixteMultipleEntity){
  721.                             $nomenclature = $this->getNomenclature($etap,$fileArretePcDpMixteMultipleEntity,'Arrêté dp (mixte)');
  722.                             $etap->addFileArretePcDpMixteMultiple($fileArretePcDpMixteMultipleEntity);
  723.                             $this->uploadFileToDropbox($fileArretePcDpMixteMultipleEntity,$project,"Urbanisme/".$fileArretePcDpMixteMultipleEntity->getId().$nomenclature);
  724.                         }
  725.                     }
  726.                 }
  727.                 if($fileRecepisseDepotPcDpMixteMultiple){
  728.                     $array = explode(',',$fileRecepisseDepotPcDpMixteMultiple);
  729.                     foreach ($array as $item){
  730.                         $fileRecepisseDepotPcDpMixteMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  731.                         if($fileRecepisseDepotPcDpMixteMultipleEntity){
  732.                             $nomenclature = $this->getNomenclature($etap,$fileRecepisseDepotPcDpMixteMultipleEntity,'Récépissé dépôt dp (mixte)');
  733.                             $etap->addFileRecepisseDepotPcDpMixteMultiple($fileRecepisseDepotPcDpMixteMultipleEntity);
  734.                             $this->uploadFileToDropbox($fileRecepisseDepotPcDpMixteMultipleEntity,$project,"Urbanisme/".$fileRecepisseDepotPcDpMixteMultipleEntity->getId().$nomenclature);
  735.                         }
  736.                     }
  737.                 }
  738.                 if($fileDemandeComplementPcDpMixteMultiple){
  739.                     $array = explode(',',$fileDemandeComplementPcDpMixteMultiple);
  740.                     foreach ($array as $item){
  741.                         $fileDemandeComplementPcDpMixteMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  742.                         if($fileDemandeComplementPcDpMixteMultipleEntity){
  743.                             $nomenclature = $this->getNomenclature($etap,$fileDemandeComplementPcDpMixteMultipleEntity,'Demande compléments dp (mixte)');
  744.                             $etap->addFileDemandeComplementPcDpMixteMultiple($fileDemandeComplementPcDpMixteMultipleEntity);
  745.                             $this->uploadFileToDropbox($fileDemandeComplementPcDpMixteMultipleEntity,$project,"Urbanisme/".$fileDemandeComplementPcDpMixteMultipleEntity->getId().$nomenclature);
  746.                         }
  747.                     }
  748.                 }
  749.                 if($fileRecepisseComplementPcDpMixteMultiple){
  750.                     $array = explode(',',$fileRecepisseComplementPcDpMixteMultiple);
  751.                     foreach ($array as $item){
  752.                         $fileRecepisseComplementPcDpMixteMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  753.                         if($fileRecepisseComplementPcDpMixteMultipleEntity){
  754.                             $nomenclature = $this->getNomenclature($etap,$fileRecepisseComplementPcDpMixteMultipleEntity,'Récépissé compléments dp (mixte)');
  755.                             $etap->addFileRecepisseComplementPcDpMixteMultiple($fileRecepisseComplementPcDpMixteMultipleEntity);
  756.                             $this->uploadFileToDropbox($fileRecepisseComplementPcDpMixteMultipleEntity,$project,"Urbanisme/".$fileRecepisseComplementPcDpMixteMultipleEntity->getId().$nomenclature);
  757.                         }
  758.                     }
  759.                 }
  760.                 if($fileAutreDocPcDpMixteMultiple){
  761.                     $array = explode(',',$fileAutreDocPcDpMixteMultiple);
  762.                     foreach ($array as $item){
  763.                         $fileAutreDocPcDpMixteMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  764.                         if($fileAutreDocPcDpMixteMultipleEntity){
  765.                             $nomenclature = $this->getNomenclature($etap,$fileAutreDocPcDpMixteMultipleEntity,'Autre (prolongation délai d’instruction) dp (mixte)');
  766.                             $etap->addFileAutreDocPcDpMixteMultiple($fileAutreDocPcDpMixteMultipleEntity);
  767.                             $this->uploadFileToDropbox($fileAutreDocPcDpMixteMultipleEntity,$project,"Urbanisme/".$fileAutreDocPcDpMixteMultipleEntity->getId().$nomenclature);
  768.                         }
  769.                     }
  770.                 }
  771.                 if($dateArretePcDpMixte){
  772.                     $etap->setDateArretePcDpMixte(new \DateTime($dateArretePcDpMixte));
  773.                 }else{
  774.                     $etap->setDateArretePcDpMixte(null);
  775.                 }
  776.                 if($referencePcDpMixte){
  777.                     $etap->setReferencePcDpMixte($referencePcDpMixte);
  778.                 }
  779.                 if($dateDepotPcDpMixte){
  780.                     $etap->setDateDepotPcDpMixte(new \DateTime($dateDepotPcDpMixte));
  781.                 }else{
  782.                     $etap->setDateDepotPcDpMixte(null);
  783.                 }
  784.                 if($dateDemandeComplementPcDpMixte){
  785.                     $etap->setDateDemandeComplementPcDpMixte(new \DateTime($dateDemandeComplementPcDpMixte));
  786.                 }else{
  787.                     $etap->setDateDemandeComplementPcDpMixte(null);
  788.                 }
  789.                 $etap->setIsDelaiInstructionPcDpMixte($isDelaiInstructionPcDpMixte);
  790.                 $etap->setDelaiInstructionPcDpMixte($delaiInstructionPcDpMixte);
  791.                 $etap->setIsDateArretePcProrogationPcDpMixte($isDateArretePcProrogationPcDpMixte);
  792.                 $etap->setChampLibrePcDpMixte($champLibrePcDpMixte);
  793.                 if($dateDepotComplementPcDpMixte){
  794.                     $etap->setDateDepotComplementPcDpMixte(new \DateTime($dateDepotComplementPcDpMixte));
  795.                 }else{
  796.                     $etap->setDateDepotComplementPcDpMixte(null);
  797.                 }
  798.                 //dp mixte
  799.                 $this->em->persist($etap);
  800.                 $this->em->persist($project);
  801.                 $this->em->flush();
  802.                 $this->updateStatusTracker($project); // set status tracker
  803.                 $this->notification->addAlertPc($project);
  804.                 $this->addAlertEtap1AndEtap2($project);
  805.                 $this->flashBag->add(
  806.                     'success',
  807.                     'L\'opération a été effectuée avec succès.'
  808.                 );
  809.                 return [
  810.                     'etap' => $etap,
  811.                     'success' => true
  812.                 ];
  813.             }
  814.         }
  815.         return [
  816.             'success' => false
  817.         ];
  818.     }
  819.     public function submitEtap2($request,$user)
  820.     {
  821.         $filePVPassageHuissierMultiple = $request->get('filePVPassageHuissierMultiple');
  822.         $fileCertificatNonRecoursMultiple = $request->get('fileCertificatNonRecoursMultiple');
  823.         $fileCertificatNonRetraitMultiple = $request->get('fileCertificatNonRetraitMultiple');
  824.         $fileCertificatNonOppositionMultiple = $request->get('fileCertificatNonOppositionMultiple');
  825.         $fileDemandeAnrMarieMultiple = $request->get('fileDemandeAnrMarieMultiple');
  826.         $fileDemandeAnrTaMultiple = $request->get('fileDemandeAnrTaMultiple');
  827.         $fileAttestationHonneurAnrMairieTaMultiple = $request->get('fileAttestationHonneurAnrMairieTaMultiple');
  828.         $date1PassageHuissier = $request->get('date1PassageHuissier');
  829.         $date2PassageHuissier = $request->get('date2PassageHuissier');
  830.         $date3PassageHuissier = $request->get('date3PassageHuissier');
  831.         $datePcDpPurge = $request->get('datePcDpPurge');
  832.         $fournisseurId = $request->get('fournisseur');
  833.         $etapToken = $request->get('etapToken');
  834.         $tokenProject = $request->get('tokenProject');
  835.         $etap2Pcm = $request->get('etap2Pcm');
  836.         if($etapToken and $tokenProject){
  837.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  838.             $etap = $this->em->getRepository(Etap2::class)->findOneBy(['token'=>$etapToken]);
  839.             if($project && $etap){
  840.                 if(!$this->checkUserAction($user,$project,$etap)){
  841.                     return [
  842.                         'success' => false
  843.                     ];
  844.                 }
  845.                 if($etap2Pcm) {
  846.                     foreach ($etap2Pcm as $item) {
  847.                         if (isset($item['id']) and $item['id'] != '') {
  848.                             $etap2PcmEntity = $this->em->getRepository(Etap2Pcm::class)->findOneBy(['token' => $item['id']]);
  849.                         } else {
  850.                             $etap2PcmEntity = new Etap2Pcm();
  851.                         }
  852.                         if (isset($item['filePVPassageHuissierPcmMultiple']) and $item['filePVPassageHuissierPcmMultiple'] != '') {
  853.                             $array = explode(',', $item['filePVPassageHuissierPcmMultiple']);
  854.                             foreach ($array as $item1) {
  855.                                 $filePVPassageHuissierPcmMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $item1]);
  856.                                 $nomenclature = $this->getNomenclature($etap, $filePVPassageHuissierPcmMultipleEntity, 'PV passage huissier PCM');
  857.                                 $etap2PcmEntity->addFilePVPassageHuissierPcmMultiple($filePVPassageHuissierPcmMultipleEntity);
  858.                             }
  859.                         }
  860.                         if (isset($item['fileCertificatNonRecoursPcmMultiple']) and $item['fileCertificatNonRecoursPcmMultiple'] != '') {
  861.                             $array = explode(',', $item['fileCertificatNonRecoursPcmMultiple']);
  862.                             foreach ($array as $item1) {
  863.                                 $fileCertificatNonRecoursPcmMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $item1]);
  864.                                 $nomenclature = $this->getNomenclature($etap, $fileCertificatNonRecoursPcmMultipleEntity, 'Certificat de non-recours (Tribunal Administratif) PCM');
  865.                                 $etap2PcmEntity->addFileCertificatNonRecoursPcmMultiple($fileCertificatNonRecoursPcmMultipleEntity);
  866.                             }
  867.                         }
  868.                         if (isset($item['fileCertificatNonRetraitPcmMultiple']) and $item['fileCertificatNonRetraitPcmMultiple'] != '') {
  869.                             $array = explode(',', $item['fileCertificatNonRetraitPcmMultiple']);
  870.                             foreach ($array as $item1) {
  871.                                 $fileCertificatNonRetraitPcmMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $item1]);
  872.                                 $nomenclature = $this->getNomenclature($etap, $fileCertificatNonRetraitPcmMultipleEntity, 'Certificat de non-retrait (Mairie) PCM');
  873.                                 $etap2PcmEntity->addFileCertificatNonRetraitPcmMultiple($fileCertificatNonRetraitPcmMultipleEntity);
  874.                             }
  875.                         }
  876.                         if (isset($item['fileDemandeAnrMariePcmMultiple']) and $item['fileDemandeAnrMariePcmMultiple'] != '') {
  877.                             $array = explode(',', $item['fileDemandeAnrMariePcmMultiple']);
  878.                             foreach ($array as $item1) {
  879.                                 $fileDemandeAnrMariePcmMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $item1]);
  880.                                 $nomenclature = $this->getNomenclature($etap, $fileDemandeAnrMariePcmMultipleEntity, 'Demande d’ANR Mairie PCM');
  881.                                 $etap2PcmEntity->addFileDemandeAnrMariePcmMultiple($fileDemandeAnrMariePcmMultipleEntity);
  882.                             }
  883.                         }
  884.                         if (isset($item['fileDemandeAnrTaPcmMultiple']) and $item['fileDemandeAnrTaPcmMultiple'] != '') {
  885.                             $array = explode(',', $item['fileDemandeAnrTaPcmMultiple']);
  886.                             foreach ($array as $item1) {
  887.                                 $fileDemandeAnrTaPcmMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $item1]);
  888.                                 $nomenclature = $this->getNomenclature($etap, $fileDemandeAnrTaPcmMultipleEntity, 'Demande d’ANR TA PCM');
  889.                                 $etap2PcmEntity->addFileDemandeAnrTaPcmMultiple($fileDemandeAnrTaPcmMultipleEntity);
  890.                             }
  891.                         }
  892.                         if (isset($item['fileAttestationHonneurAnrMairieTaPcmMultiple']) and $item['fileAttestationHonneurAnrMairieTaPcmMultiple'] != '') {
  893.                             $array = explode(',', $item['fileAttestationHonneurAnrMairieTaPcmMultiple']);
  894.                             foreach ($array as $item1) {
  895.                                 $fileAttestationHonneurAnrMairieTaPcmMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $item1]);
  896.                                 $nomenclature = $this->getNomenclature($etap, $fileAttestationHonneurAnrMairieTaPcmMultipleEntity, 'Attestation sur l’honneur ANR Mairie / TA PCM');
  897.                                 $etap2PcmEntity->addFileAttestationHonneurAnrMairieTaPcmMultiple($fileAttestationHonneurAnrMairieTaPcmMultipleEntity);
  898.                             }
  899.                         }
  900.                         if(isset($item['date1PassageHuissierPcm']) and $item['date1PassageHuissierPcm'] != ''){
  901.                             $etap2PcmEntity->setDate1PassageHuissierPcm(new \DateTime($item['date1PassageHuissierPcm']));
  902.                         }else{
  903.                             $etap2PcmEntity->setDate1PassageHuissierPcm(null);
  904.                         }
  905.                         if(isset($item['date2PassageHuissierPcm']) and $item['date2PassageHuissierPcm'] != ''){
  906.                             $etap2PcmEntity->setDate2PassageHuissierPcm(new \DateTime($item['date2PassageHuissierPcm']));
  907.                         }else{
  908.                             $etap2PcmEntity->setDate2PassageHuissierPcm(null);
  909.                         }
  910.                         if(isset($item['date3PassageHuissierPcm']) and $item['date3PassageHuissierPcm'] != ''){
  911.                             $etap2PcmEntity->setDate3PassageHuissierPcm(new \DateTime($item['date3PassageHuissierPcm']));
  912.                         }else{
  913.                             $etap2PcmEntity->setDate3PassageHuissierPcm(null);
  914.                         }
  915.                         if(isset($item['date3PassageHuissierPcm']) and $item['date3PassageHuissierPcm'] != ''){
  916.                             $etap2PcmEntity->setDate3PassageHuissierPcm(new \DateTime($item['date3PassageHuissierPcm']));
  917.                         }else{
  918.                             $etap2PcmEntity->setDate3PassageHuissierPcm(null);
  919.                         }
  920.                         if(isset($item['fournisseuritem']) and $item['fournisseuritem'] != 0){
  921.                             $fournisseur = $this->em->getRepository(Fournisseur::class)->find($item['fournisseuritem']);
  922.                             if($fournisseur){
  923.                                 $etap2PcmEntity->setFournisseurPcm($fournisseur);
  924.                             }else{
  925.                                 $etap2PcmEntity->setFournisseurPcm(null);
  926.                             }
  927.                         }else {
  928.                             $etap2PcmEntity->setFournisseurPcm(null);
  929.                         }
  930.                         $etap2PcmEntity->setNatureActe(isset($item['natureActe']) && $item['natureActe'] != '' ? $item['natureActe'] : null);
  931.                         $etap2PcmEntity->setEtap2($etap);
  932.                         $this->em->persist($etap2PcmEntity);
  933.                         $this->em->flush();
  934.                     }
  935.                 }
  936.                 if($filePVPassageHuissierMultiple){
  937.                     $array = explode(',',$filePVPassageHuissierMultiple);
  938.                     foreach ($array as $item){
  939.                         $filePVPassageHuissierMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  940.                         $nomenclature = $this->getNomenclature($etap,$filePVPassageHuissierMultipleEntity,'PV passage huissier');
  941.                         $etap->addFilePVPassageHuissierMultiple($filePVPassageHuissierMultipleEntity);
  942.                         $this->uploadFileToDropbox($filePVPassageHuissierMultipleEntity,$project,"Urbanisme/".$filePVPassageHuissierMultipleEntity->getId().$nomenclature);
  943.                     }
  944.                 }
  945.                 if($fileCertificatNonRecoursMultiple){
  946.                     $array = explode(',',$fileCertificatNonRecoursMultiple);
  947.                     foreach ($array as $item){
  948.                         $fileCertificatNonRecoursMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  949.                         $nomenclature = $this->getNomenclature($etap,$fileCertificatNonRecoursMultipleEntity,'Certificat de non-recours');
  950.                         $etap->addFileCertificatNonRecoursMultiple($fileCertificatNonRecoursMultipleEntity);
  951.                         $this->uploadFileToDropbox($fileCertificatNonRecoursMultipleEntity,$project,"Urbanisme/".$fileCertificatNonRecoursMultipleEntity->getId().$nomenclature);
  952.                     }
  953.                 }
  954.                 if($fileCertificatNonRetraitMultiple){
  955.                     $array = explode(',',$fileCertificatNonRetraitMultiple);
  956.                     foreach ($array as $item){
  957.                         $fileCertificatNonRetraitMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  958.                         $nomenclature = $this->getNomenclature($etap,$fileCertificatNonRetraitMultipleEntity,'Certificat de non-retrait');
  959.                         $etap->addFileCertificatNonRetraitMultiple($fileCertificatNonRetraitMultipleEntity);
  960.                         $this->uploadFileToDropbox($fileCertificatNonRetraitMultipleEntity,$project,"Urbanisme/".$fileCertificatNonRetraitMultipleEntity->getId().$nomenclature);
  961.                     }
  962.                 }
  963.                 if($fileCertificatNonOppositionMultiple){
  964.                     $array = explode(',',$fileCertificatNonOppositionMultiple);
  965.                     foreach ($array as $item){
  966.                         $fileCertificatNonOppositionMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  967.                         $nomenclature = $this->getNomenclature($etap,$fileCertificatNonOppositionMultipleEntity,'Certificat de non-opposition');
  968.                         $etap->addFileCertificatNonOppositionMultiple($fileCertificatNonOppositionMultipleEntity);
  969.                         $this->uploadFileToDropbox($fileCertificatNonOppositionMultipleEntity,$project,"Urbanisme/".$fileCertificatNonOppositionMultipleEntity->getId().$nomenclature);
  970.                     }
  971.                 }
  972.                 if($fileDemandeAnrMarieMultiple){
  973.                     $array = explode(',',$fileDemandeAnrMarieMultiple);
  974.                     foreach ($array as $item){
  975.                         $fileDemandeAnrMarieMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  976.                         $nomenclature = $this->getNomenclature($etap,$fileDemandeAnrMarieMultipleEntity,'Demande d’ANR Mairie');
  977.                         $etap->addFileDemandeAnrMarieMultiple($fileDemandeAnrMarieMultipleEntity);
  978.                         $this->uploadFileToDropbox($fileDemandeAnrMarieMultipleEntity,$project,"Urbanisme/".$fileDemandeAnrMarieMultipleEntity->getId().$nomenclature);
  979.                     }
  980.                 }
  981.                 if($fileDemandeAnrTaMultiple){
  982.                     $array = explode(',',$fileDemandeAnrTaMultiple);
  983.                     foreach ($array as $item){
  984.                         $fileDemandeAnrTaMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  985.                         $nomenclature = $this->getNomenclature($etap,$fileDemandeAnrTaMultipleEntity,'Demande d’ANR TA');
  986.                         $etap->addFileDemandeAnrTaMultiple($fileDemandeAnrTaMultipleEntity);
  987.                         $this->uploadFileToDropbox($fileDemandeAnrTaMultipleEntity,$project,"Urbanisme/".$fileDemandeAnrTaMultipleEntity->getId().$nomenclature);
  988.                     }
  989.                 }
  990.                 if($fileAttestationHonneurAnrMairieTaMultiple){
  991.                     $array = explode(',',$fileAttestationHonneurAnrMairieTaMultiple);
  992.                     foreach ($array as $item){
  993.                         $fileAttestationHonneurAnrMairieTaMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  994.                         $nomenclature = $this->getNomenclature($etap,$fileAttestationHonneurAnrMairieTaMultipleEntity,'Attestation sur l’honneur ANR Mairie / TA');
  995.                         $etap->addFileAttestationHonneurAnrMairieTaMultiple($fileAttestationHonneurAnrMairieTaMultipleEntity);
  996.                         $this->uploadFileToDropbox($fileAttestationHonneurAnrMairieTaMultipleEntity,$project,"Urbanisme/".$fileAttestationHonneurAnrMairieTaMultipleEntity->getId().$nomenclature);
  997.                     }
  998.                 }
  999.                 if($date1PassageHuissier){
  1000.                     $etap->setDate1PassageHuissier(new \DateTime($date1PassageHuissier));
  1001.                 }else{
  1002.                     $etap->setDate1PassageHuissier(null);
  1003.                 }
  1004.                 if($date2PassageHuissier){
  1005.                     $etap->setDate2PassageHuissier(new \DateTime($date2PassageHuissier));
  1006.                 }else{
  1007.                     $etap->setDate2PassageHuissier(null);
  1008.                 }
  1009.                 if($date3PassageHuissier){
  1010.                     $etap->setDate3PassageHuissier(new \DateTime($date3PassageHuissier));
  1011.                 }else{
  1012.                     $etap->setDate3PassageHuissier(null);
  1013.                 }
  1014.                 if($datePcDpPurge){
  1015.                     $etap->setDatePcDpPurge(new \DateTime($datePcDpPurge));
  1016.                 }else{
  1017.                     $etap->setDatePcDpPurge(null);
  1018.                 }
  1019.                 if($fournisseurId and $fournisseurId != 0){
  1020.                     $fournisseur = $this->em->getRepository(Fournisseur::class)->find($fournisseurId);
  1021.                     if($fournisseur){
  1022.                         $etap->setFournisseur($fournisseur);
  1023.                     }else{
  1024.                         $etap->setFournisseur(null);
  1025.                     }
  1026.                 }else {
  1027.                     $etap->setFournisseur(null);
  1028.                 }
  1029.                 $this->em->persist($etap);
  1030.                 $this->em->flush();
  1031.                 $this->updateStatusTracker($project); // set status tracker
  1032.                 $this->addAlertEtap1AndEtap2($project);
  1033.                 $this->flashBag->add(
  1034.                     'success',
  1035.                     'L\'opération a été effectuée avec succès.'
  1036.                 );
  1037.                 return [
  1038.                     'etap' => $etap,
  1039.                     'success' => true
  1040.                 ];
  1041.             }
  1042.         }
  1043.         return [
  1044.             'success' => false
  1045.         ];
  1046.     }
  1047.     public function submitEtap3($request,$user)
  1048.     {
  1049.         $fileDocDrocMultiple = $request->get('fileDocDrocMultiple');
  1050.         $dateDocDrocEtap = $request->get('dateDocDrocEtap');
  1051.         $etapToken = $request->get('etapToken');
  1052.         $tokenProject = $request->get('tokenProject');
  1053.         if($etapToken and $tokenProject){
  1054.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  1055.             $etap = $this->em->getRepository(Etap3::class)->findOneBy(['token'=>$etapToken]);
  1056.             if($project && $etap){
  1057.                 if(!$this->checkUserAction($user,$project,$etap)){
  1058.                     return [
  1059.                         'success' => false
  1060.                     ];
  1061.                 }
  1062.                 if($fileDocDrocMultiple){
  1063.                     $array = explode(',',$fileDocDrocMultiple);
  1064.                     foreach ($array as $item){
  1065.                         $fileDocDrocMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1066.                         $nomenclature = $this->getNomenclature($etap,$fileDocDrocMultipleEntity,'DOC / DROC');
  1067.                         $etap->addFileDocDrocMultiple($fileDocDrocMultipleEntity);
  1068.                         $this->uploadFileToDropbox($fileDocDrocMultipleEntity,$project,"Urbanisme/".$fileDocDrocMultipleEntity->getId().$nomenclature);
  1069.                     }
  1070.                 }
  1071.                 if($dateDocDrocEtap){
  1072.                     $etap->setDateDocDroc(new \DateTime($dateDocDrocEtap));
  1073.                 }else{
  1074.                     $etap->setDateDocDroc(null);
  1075.                 }
  1076.                 $this->em->persist($etap);
  1077.                 $this->em->flush();
  1078.                 $this->updateStatusTracker($project); // set status tracker
  1079.                 $this->flashBag->add(
  1080.                     'success',
  1081.                     'L\'opération a été effectuée avec succès.'
  1082.                 );
  1083.                 return [
  1084.                     'etap' => $etap,
  1085.                     'success' => true
  1086.                 ];
  1087.             }
  1088.         }
  1089.         return [
  1090.             'success' => false
  1091.         ];
  1092.     }
  1093.     public function submitEtap4($request,$user)
  1094.     {
  1095.         $fileDaactMultiple = $request->get('fileDaactMultiple');
  1096.         $fileCerfaEnvoyeMultiple = $request->get('fileCerfaEnvoyeMultiple');
  1097.         $fileLrarMultiple = $request->get('fileLrarMultiple');
  1098.         $dateDaactEtap = $request->get('dateDaactEtap');
  1099.         $dateSignatureDaact = $request->get('dateSignatureDaact');
  1100.         $etapToken = $request->get('etapToken');
  1101.         $tokenProject = $request->get('tokenProject');
  1102.         if($etapToken and $tokenProject){
  1103.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  1104.             $etap = $this->em->getRepository(Etap4::class)->findOneBy(['token'=>$etapToken]);
  1105.             if($project && $etap){
  1106.                 if(!$this->checkUserAction($user,$project,$etap)){
  1107.                     return [
  1108.                         'success' => false
  1109.                     ];
  1110.                 }
  1111.                 if($fileDaactMultiple){
  1112.                     $array = explode(',',$fileDaactMultiple);
  1113.                     foreach ($array as $item){
  1114.                         $fileDaactMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1115.                         $nomenclature = $this->getNomenclature($etap,$fileDaactMultipleEntity,'DAACT');
  1116.                         $etap->addFileDaactMultiple($fileDaactMultipleEntity);
  1117.                         $this->uploadFileToDropbox($fileDaactMultipleEntity,$project,"Urbanisme/".$fileDaactMultipleEntity->getId().$nomenclature);
  1118.                     }
  1119.                 }
  1120.                 if($fileCerfaEnvoyeMultiple){
  1121.                     $array = explode(',',$fileCerfaEnvoyeMultiple);
  1122.                     foreach ($array as $item){
  1123.                         $fileCerfaEnvoyeMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1124.                         $nomenclature = $this->getNomenclature($etap,$fileCerfaEnvoyeMultipleEntity,'CERFA envoyé');
  1125.                         $etap->addFileCerfaEnvoyeMultiple($fileCerfaEnvoyeMultipleEntity);
  1126.                         $this->uploadFileToDropbox($fileCerfaEnvoyeMultipleEntity,$project,"Urbanisme/".$fileCerfaEnvoyeMultipleEntity->getId().$nomenclature);
  1127.                     }
  1128.                 }
  1129.                 if($fileLrarMultiple){
  1130.                     $array = explode(',',$fileLrarMultiple);
  1131.                     foreach ($array as $item){
  1132.                         $fileLrarMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1133.                         $nomenclature = $this->getNomenclature($etap,$fileLrarMultipleEntity,'LRAR');
  1134.                         $etap->addFileLrarMultiple($fileLrarMultipleEntity);
  1135.                         $this->uploadFileToDropbox($fileLrarMultipleEntity,$project,"Urbanisme/".$fileLrarMultipleEntity->getId().$nomenclature);
  1136.                     }
  1137.                 }
  1138.                 if($dateDaactEtap){
  1139.                     $etap->setDateDaact(new \DateTime($dateDaactEtap));
  1140.                 }else{
  1141.                     $etap->setDateDaact(null);
  1142.                 }
  1143.                 if($dateSignatureDaact){
  1144.                     $etap->setDateSignatureDaact(new \DateTime($dateSignatureDaact));
  1145.                 }else{
  1146.                     $etap->setDateSignatureDaact(null);
  1147.                 }
  1148.                 $this->em->persist($etap);
  1149.                 $this->em->flush();
  1150.                 $this->updateStatusTracker($project); // set status tracker
  1151.                 $this->flashBag->add(
  1152.                     'success',
  1153.                     'L\'opération a été effectuée avec succès.'
  1154.                 );
  1155.                 return [
  1156.                     'etap' => $etap,
  1157.                     'success' => true
  1158.                 ];
  1159.             }
  1160.         }
  1161.         return [
  1162.             'success' => false
  1163.         ];
  1164.     }
  1165.     public function submitEtap5($request,$user)
  1166.     {
  1167.         $filePromessebailMultiple = $request->get('filePromessebailMultiple');
  1168.         $fileLeveeOptionMultiple = $request->get('fileLeveeOptionMultiple');
  1169.         $fileActeSubstitutionMultiple = $request->get('fileActeSubstitutionMultiple');
  1170.         $dateExpirationPromesseBailEtap = $request->get('dateExpirationPromesseBailEtap');
  1171.         $LeveeOption = $request->get('leveeOption');
  1172.         $d1Etap = $request->get('d1Etap');
  1173.         $d2Etap = $request->get('d2Etap');
  1174.         $loyerConfirme = $request->get('loyerConfirme');
  1175.         $loyerEnNature = $request->get('loyerEnNature');
  1176.         $soulteConfirme = $request->get('soulteConfirme');
  1177.         $typeBail = $request->get('typeBail');
  1178.         $dureeBail = $request->get('dureeBail');
  1179.         $terrassement = $request->get('terrassement');
  1180.         $tranchee = $request->get('tranchee');
  1181.         $bardage = $request->get('bardage');
  1182.         $renovationCharpente = $request->get('renovationCharpente');
  1183.         $desamiantage = $request->get('desamiantage');
  1184.         $fileLoiMultiple = $request->get('fileLoiMultiple');
  1185.         $filePromesseAchatMultiple = $request->get('filePromesseAchatMultiple');
  1186.         $dateSignature = $request->get('dateSignature');
  1187.         $dateFinExclusiviteLoi = $request->get('dateFinExclusiviteLoi');
  1188.         $dateEcheancePromesse = $request->get('dateEcheancePromesse');
  1189.         $honoraireApporteur = $request->get('honoraireApporteur');
  1190.         $indemniteTransitoire = $request->get('indemniteTransitoire');
  1191.         $puissanceSignee = $request->get('puissanceSignee');
  1192.         $prixAchatFoncier = $request->get('prixAchatFoncier');
  1193.         $unitePrixAchat = $request->get('unitePrixAchat');
  1194.         $remunerationExploitantAgricole = $request->get('remunerationExploitantAgricole');
  1195.         $capaciteInstalleeSignee = $request->get('capaciteInstalleeSignee');
  1196.         $etapToken = $request->get('etapToken');
  1197.         $tokenProject = $request->get('tokenProject');
  1198.         if($etapToken and $tokenProject){
  1199.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  1200.             $etap = $this->em->getRepository(Etap5::class)->findOneBy(['token'=>$etapToken]);
  1201.             if($project && $etap){
  1202.                 if(!$this->checkUserAction($user,$project,$etap)){
  1203.                     return [
  1204.                         'success' => false
  1205.                     ];
  1206.                 }
  1207.                 if($filePromessebailMultiple){
  1208.                     $array = explode(',',$filePromessebailMultiple);
  1209.                     foreach ($array as $item){
  1210.                         $filePromessebailMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1211.                         $nomenclature = $this->getNomenclature($etap,$filePromessebailMultipleEntity,'Promesse de bail');
  1212.                         $etap->addFilePromessebailMultiple($filePromessebailMultipleEntity);
  1213.                         $this->uploadFileToDropbox($filePromessebailMultipleEntity,$project,"Maitrise foncière/".$filePromessebailMultipleEntity->getId().$nomenclature);
  1214.                     }
  1215.                 }
  1216.                 if($fileLeveeOptionMultiple){
  1217.                     $array = explode(',',$fileLeveeOptionMultiple);
  1218.                     foreach ($array as $item){
  1219.                         $fileLeveeOptionMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1220.                         $nomenclature = $this->getNomenclature($etap,$fileLeveeOptionMultipleEntity,'Levée d’option');
  1221.                         $etap->addFileLeveeOptionMultiple($fileLeveeOptionMultipleEntity);
  1222.                         $this->uploadFileToDropbox($fileLeveeOptionMultipleEntity,$project,"Maitrise foncière/".$fileLeveeOptionMultipleEntity->getId().$nomenclature);
  1223.                     }
  1224.                 }
  1225.                 if($fileActeSubstitutionMultiple){
  1226.                     $array = explode(',',$fileActeSubstitutionMultiple);
  1227.                     foreach ($array as $item){
  1228.                         $fileActeSubstitutionMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1229.                         $nomenclature = $this->getNomenclature($etap,$fileActeSubstitutionMultipleEntity,'Acte de substitution');
  1230.                         $etap->addFileActeSubstitutionMultiple($fileActeSubstitutionMultipleEntity);
  1231.                         $this->uploadFileToDropbox($fileActeSubstitutionMultipleEntity,$project,"Maitrise foncière/".$fileActeSubstitutionMultipleEntity->getId().$nomenclature);
  1232.                     }
  1233.                 }
  1234.                 if($fileLoiMultiple){
  1235.                     $array = explode(',',$fileLoiMultiple);
  1236.                     foreach ($array as $item){
  1237.                         $fileLoiMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1238.                         $nomenclature = $this->getNomenclature($etap,$fileLoiMultipleEntity,'LOI');
  1239.                         $etap->addFileLoiMultiple($fileLoiMultipleEntity);
  1240.                         $this->uploadFileToDropbox($fileLoiMultipleEntity,$project,"Maitrise foncière/".$fileLoiMultipleEntity->getId().$nomenclature);
  1241.                     }
  1242.                 }
  1243.                 if($filePromesseAchatMultiple){
  1244.                     $array = explode(',',$filePromesseAchatMultiple);
  1245.                     foreach ($array as $item){
  1246.                         $filePromesseAchatMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1247.                         $nomenclature = $this->getNomenclature($etap,$filePromesseAchatMultipleEntity,'Promesse d\'achat');
  1248.                         $etap->addFilePromesseAchatMultiple($filePromesseAchatMultipleEntity);
  1249.                         $this->uploadFileToDropbox($filePromesseAchatMultipleEntity,$project,"Maitrise foncière/".$filePromesseAchatMultipleEntity->getId().$nomenclature);
  1250.                     }
  1251.                 }
  1252.                 if($dateSignature){
  1253.                     $etap->setDateSignature(new \DateTime($dateSignature));
  1254.                 }else{
  1255.                     $etap->setDateSignature(null);
  1256.                 }
  1257.                 if($dateFinExclusiviteLoi){
  1258.                     $etap->setDateFinExclusiviteLoi(new \DateTime($dateFinExclusiviteLoi));
  1259.                 }else{
  1260.                     $etap->setDateFinExclusiviteLoi(null);
  1261.                 }
  1262.                 // Echéance promesse (non modifiable) = Date PDB + durée de validité (d1) + durée de prorogation (d2), en mois
  1263.                 if($dateExpirationPromesseBailEtap){
  1264.                     $echeancePromesse = new \DateTime($dateExpirationPromesseBailEtap);
  1265.                     $moisEcheance = (int)$d1Etap + (int)$d2Etap;
  1266.                     if($moisEcheance > 0){
  1267.                         $echeancePromesse->modify('+'.$moisEcheance.' months');
  1268.                     }
  1269.                     $etap->setDateEcheancePromesse($echeancePromesse);
  1270.                 }else{
  1271.                     $etap->setDateEcheancePromesse(null);
  1272.                 }
  1273.                 if($dateExpirationPromesseBailEtap){
  1274.                     $etap->setDateExpirationPromesseBail(new \DateTime($dateExpirationPromesseBailEtap));
  1275.                 }else{
  1276.                     $etap->setDateExpirationPromesseBail(null);
  1277.                 }
  1278.                 if($LeveeOption){
  1279.                     $etap->setLeveeOption(new \DateTime($LeveeOption));
  1280.                 }else{
  1281.                     $etap->setLeveeOption(null);
  1282.                 }
  1283.                 $etap->setD1((int)$d1Etap);
  1284.                 $etap->setD2((int)$d2Etap);
  1285.                 $etap->setLoyerConfirme($loyerConfirme);
  1286.                 $project->setLoyerVise($loyerConfirme);
  1287.                 $etap->setLoyerEnNature($loyerEnNature);
  1288.                 $etap->setSoulteConfirme($soulteConfirme);
  1289.                 $project->setSoulteVise($soulteConfirme);
  1290.                 $etap->setTypeBail($typeBail);
  1291.                 $etap->setTerrassement($terrassement);
  1292.                 $etap->setTranchee($tranchee);
  1293.                 $etap->setBardage($bardage);
  1294.                 $etap->setRenovationCharpente($renovationCharpente);
  1295.                 $etap->setDesamiantage($desamiantage);
  1296.                 $etap->setDureeBail($dureeBail);
  1297.                 $etap->setHonoraireApporteur($honoraireApporteur);
  1298.                 $etap->setIndemniteTransitoire($indemniteTransitoire);
  1299.                 $etap->setPuissanceSignee($puissanceSignee);
  1300.                 $etap->setPrixAchatFoncier($prixAchatFoncier);
  1301.                 $etap->setUnitePrixAchat($unitePrixAchat);
  1302.                 $etap->setRemunerationExploitantAgricole($remunerationExploitantAgricole);
  1303.                 $etap->setCapaciteInstalleeSignee($capaciteInstalleeSignee);
  1304.                 $this->em->persist($etap);
  1305.                 $this->em->persist($project);
  1306.                 $this->em->flush();
  1307.                 $project->setDateExpirationPromesseBail($etap->getDateExpirationPromesseBail());
  1308.                 $project->setD1($etap->getD1());
  1309.                 $this->em->persist($project);
  1310.                 $this->em->flush();
  1311.                 $this->updateStatusTracker($project); // set status tracker
  1312.                 $this->flashBag->add(
  1313.                     'success',
  1314.                     'L\'opération a été effectuée avec succès.'
  1315.                 );
  1316.                 $this->notification->addAlertBail($project);
  1317.                 return [
  1318.                     'etap' => $etap,
  1319.                     'success' => true
  1320.                 ];
  1321.             }
  1322.         }
  1323.         return [
  1324.             'success' => false
  1325.         ];
  1326.     }
  1327.     public function submitEtap50($request,$user)
  1328.     {
  1329.         $statutAo = $request->get('statutAo');
  1330.         $typeConsultation = $request->get('typeConsultation');
  1331.         $phase = $request->get('phase');
  1332.         $dateRendu = $request->get('dateRendu');
  1333.         // Champs LOI réutilisés depuis l'étape "Promesse de bail" (Etap5)
  1334.         $dateSignature = $request->get('dateSignature');
  1335.         $dateFinExclusiviteLoi = $request->get('dateFinExclusiviteLoi');
  1336.         $fileLoiMultiple = $request->get('fileLoiMultiple');
  1337.         $etapToken = $request->get('etapToken');
  1338.         $tokenProject = $request->get('tokenProject');
  1339.         if($etapToken and $tokenProject){
  1340.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  1341.             $etap = $this->em->getRepository(Etap50::class)->findOneBy(['token'=>$etapToken]);
  1342.             if($project && $etap){
  1343.                 if(!$this->checkUserAction($user,$project,$etap)){
  1344.                     return [
  1345.                         'success' => false
  1346.                     ];
  1347.                 }
  1348.                 $etap->setStatutAo($statutAo);
  1349.                 $etap->setTypeConsultation($typeConsultation);
  1350.                 $etap->setPhase($phase);
  1351.                 if($dateRendu){
  1352.                     $etap->setDateRendu(new \DateTime($dateRendu));
  1353.                 }else{
  1354.                     $etap->setDateRendu(null);
  1355.                 }
  1356.                 $this->em->persist($etap);
  1357.                 $this->em->flush();
  1358.                 // LOI : données partagées avec l'étape "Promesse de bail" (Etap5)
  1359.                 $etap5 = $this->em->getRepository(Etap5::class)->findOneBy(['project'=>$project->getId()]);
  1360.                 if($etap5){
  1361.                     if($fileLoiMultiple){
  1362.                         $array = explode(',',$fileLoiMultiple);
  1363.                         foreach ($array as $item){
  1364.                             $fileLoiMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1365.                             if($fileLoiMultipleEntity){
  1366.                                 $nomenclature = $this->getNomenclature($etap5,$fileLoiMultipleEntity,'LOI');
  1367.                                 $etap5->addFileLoiMultiple($fileLoiMultipleEntity);
  1368.                                 $this->uploadFileToDropbox($fileLoiMultipleEntity,$project,"Maitrise foncière/".$fileLoiMultipleEntity->getId().$nomenclature);
  1369.                             }
  1370.                         }
  1371.                     }
  1372.                     if($dateSignature){
  1373.                         $etap5->setDateSignature(new \DateTime($dateSignature));
  1374.                     }else{
  1375.                         $etap5->setDateSignature(null);
  1376.                     }
  1377.                     if($dateFinExclusiviteLoi){
  1378.                         $etap5->setDateFinExclusiviteLoi(new \DateTime($dateFinExclusiviteLoi));
  1379.                     }else{
  1380.                         $etap5->setDateFinExclusiviteLoi(null);
  1381.                     }
  1382.                     $this->em->persist($etap5);
  1383.                     $this->em->flush();
  1384.                 }
  1385.                 $this->updateStatusTracker($project); // set status tracker
  1386.                 $this->flashBag->add(
  1387.                     'success',
  1388.                     'L\'opération a été effectuée avec succès.'
  1389.                 );
  1390.                 return [
  1391.                     'etap' => $etap,
  1392.                     'success' => true
  1393.                 ];
  1394.             }
  1395.         }
  1396.         return [
  1397.             'success' => false
  1398.         ];
  1399.     }
  1400.     public function submitEtap6($request,$user)
  1401.     {
  1402.         $fileEtatDecriptifMultiple = $request->get('fileEtatDecriptifMultiple');
  1403.         $fileEtatHypothecaireMultiple = $request->get('fileEtatHypothecaireMultiple');
  1404.         $filePublicationSPRMultiple = $request->get('filePublicationSPRMultiple');
  1405.         $fileTitreProprieteMultiple = $request->get('fileTitreProprieteMultiple');
  1406.         $fileAutreEtap6 = $request->get('fileAutreEtap6');
  1407.         $fileProcurationBailleur = $request->get('fileProcurationBailleur');
  1408.         $fileStatuts = $request->get('fileStatuts');
  1409.         $fileKbis = $request->get('fileKbis');
  1410.         $fileAccordMl = $request->get('fileAccordMl');
  1411.         $fileLivretFamille = $request->get('fileLivretFamille');
  1412.         $fileCarteIdentite = $request->get('fileCarteIdentite');
  1413.         $fileExtraitMatriceCadastrale = $request->get('fileExtraitMatriceCadastrale');
  1414.         $nomNotaire = $request->get('nomNotaire');
  1415.         $parcellesProjet = $request->get('parcellesProjet');
  1416.         $proprietaires = $request->get('proprietaires');
  1417.         $situationFonciere = $request->get('situationFonciere');
  1418.         $statutMainlevee = $request->get('statutMainlevee');
  1419.         $etapToken = $request->get('etapToken');
  1420.         $tokenProject = $request->get('tokenProject');
  1421.         if($etapToken and $tokenProject){
  1422.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  1423.             $etap = $this->em->getRepository(Etap6::class)->findOneBy(['token'=>$etapToken]);
  1424.             if($project && $etap){
  1425.                 if(!$this->checkUserAction($user,$project,$etap)){
  1426.                     return [
  1427.                         'success' => false
  1428.                     ];
  1429.                 }
  1430.                 if($fileEtatDecriptifMultiple){
  1431.                     $array = explode(',',$fileEtatDecriptifMultiple);
  1432.                     foreach ($array as $item){
  1433.                         $fileEtatDecriptifMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1434.                         $nomenclature = $this->getNomenclature($etap,$fileEtatDecriptifMultipleEntity,'Détachement parcellaire');
  1435.                         $etap->addFileEtatDecriptifMultiple($fileEtatDecriptifMultipleEntity);
  1436.                         $this->uploadFileToDropbox($fileEtatDecriptifMultipleEntity,$project,"Maitrise foncière/".$fileEtatDecriptifMultipleEntity->getId().$nomenclature);
  1437.                     }
  1438.                 }
  1439.                 if($fileEtatHypothecaireMultiple){
  1440.                     $array = explode(',',$fileEtatHypothecaireMultiple);
  1441.                     foreach ($array as $item){
  1442.                         $fileEtatHypothecaireMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1443.                         $nomenclature = $this->getNomenclature($etap,$fileEtatHypothecaireMultipleEntity,'Etat hypothécaire');
  1444.                         $etap->addFileEtatHypothecaireMultiple($fileEtatHypothecaireMultipleEntity);
  1445.                         $this->uploadFileToDropbox($fileEtatHypothecaireMultipleEntity,$project,"Maitrise foncière/".$fileEtatHypothecaireMultipleEntity->getId().$nomenclature);
  1446.                     }
  1447.                 }
  1448.                 if($filePublicationSPRMultiple){
  1449.                     $array = explode(',',$filePublicationSPRMultiple);
  1450.                     foreach ($array as $item){
  1451.                         $filePublicationSPRMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1452.                         $nomenclature = $this->getNomenclature($etap,$filePublicationSPRMultipleEntity,'Publication SPF');
  1453.                         $etap->addFilePublicationSPRMultiple($filePublicationSPRMultipleEntity);
  1454.                         $this->uploadFileToDropbox($filePublicationSPRMultipleEntity,$project,"Maitrise foncière/".$filePublicationSPRMultipleEntity->getId().$nomenclature);
  1455.                     }
  1456.                 }
  1457.                 if($fileTitreProprieteMultiple){
  1458.                     $array = explode(',',$fileTitreProprieteMultiple);
  1459.                     foreach ($array as $item){
  1460.                         $fileTitreProprieteMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1461.                         $nomenclature = $this->getNomenclature($etap,$fileTitreProprieteMultipleEntity,'Titre de propriété');
  1462.                         $etap->addFileTitreProprieteMultiple($fileTitreProprieteMultipleEntity);
  1463.                         $this->uploadFileToDropbox($fileTitreProprieteMultipleEntity,$project,"Maitrise foncière/".$fileTitreProprieteMultipleEntity->getId().$nomenclature);
  1464.                     }
  1465.                 }
  1466.                 if($fileAutreEtap6){
  1467.                     $array = explode(',',$fileAutreEtap6);
  1468.                     foreach ($array as $item){
  1469.                         $fileAutreEtap6Entity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1470.                         $nomenclature = $this->getNomenclature($etap,$fileAutreEtap6Entity,'Autres (Cession de bail, projet de bail…)');
  1471.                         $etap->addFileAutreEtap6($fileAutreEtap6Entity);
  1472.                         $this->uploadFileToDropbox($fileAutreEtap6Entity,$project,"Maitrise foncière/".$fileAutreEtap6Entity->getId().$nomenclature);
  1473.                     }
  1474.                 }
  1475.                 if($fileProcurationBailleur){
  1476.                     $array = explode(',',$fileProcurationBailleur);
  1477.                     foreach ($array as $item){
  1478.                         $fileProcurationBailleurEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1479.                         $nomenclature =  $this->getNomenclature($etap,$fileProcurationBailleurEntity,'Autres (Cession de bail, projet de bail…)');
  1480.                         $etap->addFileProcurationBailleur($fileProcurationBailleurEntity);
  1481.                         $this->uploadFileToDropbox($fileProcurationBailleurEntity,$project,"Maitrise foncière/".$fileProcurationBailleurEntity->getId().$nomenclature);
  1482.                     }
  1483.                 }
  1484.                 if($fileStatuts){
  1485.                     $array = explode(',',$fileStatuts);
  1486.                     foreach ($array as $item){
  1487.                         $fileStatutsEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1488.                         $nomenclature =  $this->getNomenclature($etap,$fileStatutsEntity,'Statuts');
  1489.                         $etap->addFileStatuts($fileStatutsEntity);
  1490.                         $this->uploadFileToDropbox($fileStatutsEntity,$project,"Maitrise foncière/".$fileStatutsEntity->getId().$nomenclature);
  1491.                     }
  1492.                 }
  1493.                 if($fileKbis){
  1494.                     $array = explode(',',$fileKbis);
  1495.                     foreach ($array as $item){
  1496.                         $fileKbisEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1497.                         $nomenclature =  $this->getNomenclature($etap,$fileKbisEntity,'Kbis');
  1498.                         $etap->addFileKbi($fileKbisEntity);
  1499.                         $this->uploadFileToDropbox($fileKbisEntity,$project,"Maitrise foncière/".$fileKbisEntity->getId().$nomenclature);
  1500.                     }
  1501.                 }
  1502.                 if($fileAccordMl){
  1503.                     $array = explode(',',$fileAccordMl);
  1504.                     foreach ($array as $item){
  1505.                         $fileAccordMlEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1506.                         $nomenclature =  $this->getNomenclature($etap,$fileAccordMlEntity,' Accord ML');
  1507.                         $etap->addFileAccordMl($fileAccordMlEntity);
  1508.                         $this->uploadFileToDropbox($fileAccordMlEntity,$project,"Maitrise foncière/".$fileAccordMlEntity->getId().$nomenclature);
  1509.                     }
  1510.                 }
  1511.                 if($fileLivretFamille){
  1512.                     $array = explode(',',$fileLivretFamille);
  1513.                     foreach ($array as $item){
  1514.                         $fileLivretFamilleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1515.                         $nomenclature =  $this->getNomenclature($etap,$fileLivretFamilleEntity,'Livret de famille');
  1516.                         $etap->addFileLivretFamille($fileLivretFamilleEntity);
  1517.                         $this->uploadFileToDropbox($fileLivretFamilleEntity,$project,"Maitrise foncière/".$fileLivretFamilleEntity->getId().$nomenclature);
  1518.                     }
  1519.                 }
  1520.                 if($fileCarteIdentite){
  1521.                     $array = explode(',',$fileCarteIdentite);
  1522.                     foreach ($array as $item){
  1523.                         $fileCarteIdentiteEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1524.                         $nomenclature =  $this->getNomenclature($etap,$fileCarteIdentiteEntity,' Carte d’identité');
  1525.                         $etap->addFileCarteIdentite($fileCarteIdentiteEntity);
  1526.                         $this->uploadFileToDropbox($fileCarteIdentiteEntity,$project,"Maitrise foncière/".$fileCarteIdentiteEntity->getId().$nomenclature);
  1527.                     }
  1528.                 }
  1529.                 if($fileExtraitMatriceCadastrale){
  1530.                     $array = explode(',',$fileExtraitMatriceCadastrale);
  1531.                     foreach ($array as $item){
  1532.                         $fileExtraitMatriceCadastraleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1533.                         $nomenclature =  $this->getNomenclature($etap,$fileExtraitMatriceCadastraleEntity,'Extrait de matrice cadastrale');
  1534.                         $etap->addFileExtraitMatriceCadastrale($fileExtraitMatriceCadastraleEntity);
  1535.                         $this->uploadFileToDropbox($fileExtraitMatriceCadastraleEntity,$project,"Maitrise foncière/".$fileExtraitMatriceCadastraleEntity->getId().$nomenclature);
  1536.                     }
  1537.                 }
  1538.                 $etap->setNomNotaire($nomNotaire);
  1539.                 $etap->setParcellesProjet($parcellesProjet);
  1540.                 $etap->setProprietaires($proprietaires);
  1541.                 $etap->setSituationFonciere($situationFonciere);
  1542.                 $etap->setStatutMainlevee($statutMainlevee);
  1543.                 $this->em->persist($etap);
  1544.                 $this->em->flush();
  1545.                 $this->updateStatusTracker($project); // set status tracker
  1546.                 $this->flashBag->add(
  1547.                     'success',
  1548.                     'L\'opération a été effectuée avec succès.'
  1549.                 );
  1550.                 return [
  1551.                     'etap' => $etap,
  1552.                     'success' => true
  1553.                 ];
  1554.             }
  1555.         }
  1556.         return [
  1557.             'success' => false
  1558.         ];
  1559.     }
  1560.     public function submitEtap601($request,$user)
  1561.     {
  1562.         $fileEtatDecriptifMultiple = $request->get('fileEtatDecriptifMultiple');
  1563.         $filePlanServitudesMultiple = $request->get('filePlanServitudesMultiple');
  1564.         $dateLancement = $request->get('dateLancement');
  1565.         $dateIntervention = $request->get('dateIntervention');
  1566.         $fournisseurId = $request->get('fournisseurId');
  1567.         $etapToken = $request->get('etapToken');
  1568.         $tokenProject = $request->get('tokenProject');
  1569.         if($etapToken and $tokenProject){
  1570.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  1571.             $etap = $this->em->getRepository(Etap601::class)->findOneBy(['token'=>$etapToken]);
  1572.             if($project && $etap){
  1573.                 if(!$this->checkUserAction($user,$project,$etap)){
  1574.                     return [
  1575.                         'success' => false
  1576.                     ];
  1577.                 }
  1578.                 if($fileEtatDecriptifMultiple){
  1579.                     $array = explode(',',$fileEtatDecriptifMultiple);
  1580.                     foreach ($array as $item){
  1581.                         $fileEtatDecriptifMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1582.                         $nomenclature = $this->getNomenclature($etap,$fileEtatDecriptifMultipleEntity,'DA / EDDV');
  1583.                         $etap->addFileEtatDecriptifMultiple($fileEtatDecriptifMultipleEntity);
  1584.                         $this->uploadFileToDropbox($fileEtatDecriptifMultipleEntity,$project,"Maitrise foncière/".$fileEtatDecriptifMultipleEntity->getId().$nomenclature);
  1585.                     }
  1586.                 }
  1587.                 if($filePlanServitudesMultiple){
  1588.                     $array = explode(',',$filePlanServitudesMultiple);
  1589.                     foreach ($array as $item){
  1590.                         $filePlanServitudesMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1591.                         $nomenclature =  $this->getNomenclature($etap,$filePlanServitudesMultipleEntity,'Plan de servitudes');
  1592.                         $etap->addFilePlanServitudesMultiple($filePlanServitudesMultipleEntity);
  1593.                         $this->uploadFileToDropbox($filePlanServitudesMultipleEntity,$project,"Maitrise foncière/".$filePlanServitudesMultipleEntity->getId().$nomenclature);
  1594.                     }
  1595.                 }
  1596.                 if($dateLancement){
  1597.                     $etap->setDateLancement(new \DateTime($dateLancement));
  1598.                 }else{
  1599.                     $etap->setDateLancement(null);
  1600.                 }
  1601.                 if($dateIntervention){
  1602.                     $etap->setDateIntervention(new \DateTime($dateIntervention));
  1603.                 }else{
  1604.                     $etap->setDateIntervention(null);
  1605.                 }
  1606.                 if($fournisseurId and $fournisseurId != 0){
  1607.                     $fournisseur = $this->em->getRepository(Fournisseur::class)->find($fournisseurId);
  1608.                     if($fournisseur){
  1609.                         $etap->setFournisseur($fournisseur);
  1610.                     }else{
  1611.                         $etap->setFournisseur(null);
  1612.                     }
  1613.                 }else {
  1614.                     $etap->setFournisseur(null);
  1615.                 }
  1616.                 $this->em->persist($etap);
  1617.                 $this->em->flush();
  1618.                 $this->updateStatusTracker($project); // set status tracker
  1619.                 $this->flashBag->add(
  1620.                     'success',
  1621.                     'L\'opération a été effectuée avec succès.'
  1622.                 );
  1623.                 return [
  1624.                     'etap' => $etap,
  1625.                     'success' => true
  1626.                 ];
  1627.             }
  1628.         }
  1629.         return [
  1630.             'success' => false
  1631.         ];
  1632.     }
  1633.     public function submitEtap602($request,$user)
  1634.     {
  1635.         $fileProcurationBailleur = $request->get('fileProcurationBailleur');
  1636.         $dateLancement = $request->get('dateLancement');
  1637.         $dateEnvoiPocuration = $request->get('dateEnvoiPocuration');
  1638.         $dateSignatureProcuration = $request->get('dateSignatureProcuration');
  1639.         $fournisseurId = $request->get('fournisseurId');
  1640.         $etapToken = $request->get('etapToken');
  1641.         $tokenProject = $request->get('tokenProject');
  1642.         if($etapToken and $tokenProject){
  1643.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  1644.             $etap = $this->em->getRepository(Etap602::class)->findOneBy(['token'=>$etapToken]);
  1645.             if($project && $etap){
  1646.                 if(!$this->checkUserAction($user,$project,$etap)){
  1647.                     return [
  1648.                         'success' => false
  1649.                     ];
  1650.                 }
  1651.                 if($fileProcurationBailleur){
  1652.                     $array = explode(',',$fileProcurationBailleur);
  1653.                     foreach ($array as $item){
  1654.                         $fileProcurationBailleurEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1655.                         $nomenclature = $this->getNomenclature($etap,$fileProcurationBailleurEntity,'Procuration Bailleur');
  1656.                         $etap->addFileProcurationBailleur($fileProcurationBailleurEntity);
  1657.                         $this->uploadFileToDropbox($fileProcurationBailleurEntity,$project,"Maitrise foncière/".$fileProcurationBailleurEntity->getId().$nomenclature);
  1658.                     }
  1659.                 }
  1660.                 if($dateLancement){
  1661.                     $etap->setDateLancement(new \DateTime($dateLancement));
  1662.                 }else{
  1663.                     $etap->setDateLancement(null);
  1664.                 }
  1665.                 if($dateEnvoiPocuration){
  1666.                     $etap->setDateEnvoiPocuration(new \DateTime($dateEnvoiPocuration));
  1667.                 }else{
  1668.                     $etap->setDateEnvoiPocuration(null);
  1669.                 }
  1670.                 if($dateSignatureProcuration){
  1671.                     $etap->setDateSignatureProcuration(new \DateTime($dateSignatureProcuration));
  1672.                 }else{
  1673.                     $etap->setDateSignatureProcuration(null);
  1674.                 }
  1675.                 if($fournisseurId and $fournisseurId != 0){
  1676.                     $fournisseur = $this->em->getRepository(Fournisseur::class)->find($fournisseurId);
  1677.                     if($fournisseur){
  1678.                         $etap->setFournisseur($fournisseur);
  1679.                         if(!$fournisseur->getUser()){
  1680.                             $dataUser = $this->addUserFournisseurInProject($fournisseur);
  1681.                             if(isset($dataUser['success']) and $dataUser['success'] and $dataUser['user']){
  1682.                                 $user = $dataUser['user'];
  1683.                                 $user->setFournisseur($fournisseur);
  1684.                                 $this->em->persist($user);
  1685.                                 $fournisseur->setUser($user);
  1686.                             }
  1687.                         }
  1688.                         $fournisseur->setIsNotaire(true);
  1689.                         $fournisseur->setIsErpAccee(true);
  1690.                         $projectFournisseur = $this->em->getRepository(FournisseurProject::class)->findOneBy(['project'=>$project,'titre'=>'Notaire']);
  1691.                         $projectFournisseur->setFournisseur($fournisseur);
  1692.                         $projectFournisseur->setTitre('Notaire');
  1693.                         $projectFournisseur->setProject($project);
  1694.                         $this->em->persist($projectFournisseur);
  1695.                         $this->em->persist($fournisseur);
  1696.                     }else{
  1697.                         $etap->setFournisseur(null);
  1698.                     }
  1699.                 }else {
  1700.                     $etap->setFournisseur(null);
  1701.                 }
  1702.                 $this->em->persist($etap);
  1703.                 $this->em->flush();
  1704.                 $this->updateStatusTracker($project); // set status tracker
  1705.                 $this->flashBag->add(
  1706.                     'success',
  1707.                     'L\'opération a été effectuée avec succès.'
  1708.                 );
  1709.                 return [
  1710.                     'etap' => $etap,
  1711.                     'success' => true
  1712.                 ];
  1713.             }
  1714.         }
  1715.         return [
  1716.             'success' => false
  1717.         ];
  1718.     }
  1719.     public function submitEtap7($request,$user)
  1720.     {
  1721.         $fileBailSigneMultiple = $request->get('fileBailSigneMultiple');
  1722.         $fileAvenantBailMultiple = $request->get('fileAvenantBailMultiple');
  1723.         $filePreuvePublicationsSPFMultiple = $request->get('filePreuvePublicationsSPFMultiple');
  1724.         $dateSignatureBail = $request->get('dateSignatureBail');
  1725.         $dateFinBail = $request->get('dateFinBail');
  1726.         $nomBailleur = $request->get('nomBailleur');
  1727.         $etapToken = $request->get('etapToken');
  1728.         $tokenProject = $request->get('tokenProject');
  1729.         if($etapToken and $tokenProject){
  1730.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  1731.             $etap = $this->em->getRepository(Etap7::class)->findOneBy(['token'=>$etapToken]);
  1732.             if($project && $etap){
  1733.                 if(!$this->checkUserAction($user,$project,$etap)){
  1734.                     return [
  1735.                         'success' => false
  1736.                     ];
  1737.                 }
  1738.                 if($fileBailSigneMultiple){
  1739.                     $array = explode(',',$fileBailSigneMultiple);
  1740.                     foreach ($array as $item){
  1741.                         $fileBailSigneMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1742.                         $nomenclature =  $this->getNomenclature($etap,$fileBailSigneMultipleEntity,'Bail signé (avec l’ensemble des annexes)');
  1743.                         $etap->addFileBailSigneMultiple($fileBailSigneMultipleEntity);
  1744.                         $this->uploadFileToDropbox($fileBailSigneMultipleEntity,$project,"Maitrise foncière/".$fileBailSigneMultipleEntity->getId().$nomenclature);
  1745.                     }
  1746.                 }
  1747.                 if($fileAvenantBailMultiple){
  1748.                     $array = explode(',',$fileAvenantBailMultiple);
  1749.                     foreach ($array as $item){
  1750.                         $fileAvenantBailMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1751.                         $nomenclature =  $this->getNomenclature($etap,$fileAvenantBailMultipleEntity,'Avenant au bail');
  1752.                         $etap->addFileAvenantBailMultiple($fileAvenantBailMultipleEntity);
  1753.                         $this->uploadFileToDropbox($fileAvenantBailMultipleEntity,$project,"Maitrise foncière/".$fileAvenantBailMultipleEntity->getId().$nomenclature);
  1754.                     }
  1755.                 }
  1756.                 if($filePreuvePublicationsSPFMultiple){
  1757.                     $array = explode(',',$filePreuvePublicationsSPFMultiple);
  1758.                     foreach ($array as $item){
  1759.                         $filePreuvePublicationsSPFMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1760.                         $nomenclature =  $this->getNomenclature($etap,$filePreuvePublicationsSPFMultipleEntity,'Preuve de publications SPF"');
  1761.                         $etap->addFilePreuvePublicationsSPFMultiple($filePreuvePublicationsSPFMultipleEntity);
  1762.                     }
  1763.                 }
  1764.                 if($dateSignatureBail){
  1765.                     $etap->setDateSignatureBail(new \DateTime($dateSignatureBail));
  1766.                 }else{
  1767.                     $etap->setDateSignatureBail(null);
  1768.                 }
  1769.                 if($dateFinBail){
  1770.                     $etap->setDateFinBail(new \DateTime($dateFinBail));
  1771.                 }else{
  1772.                     $etap->setDateFinBail(null);
  1773.                 }
  1774.                 $etap->setNomBailleur($nomBailleur);
  1775.                 $this->em->persist($etap);
  1776.                 $this->em->flush();
  1777.                 $this->updateStatusTracker($project); // set status tracker
  1778.                 $this->flashBag->add(
  1779.                     'success',
  1780.                     'L\'opération a été effectuée avec succès.'
  1781.                 );
  1782.                 $this->notification->addAlertBail($project);
  1783.                 return [
  1784.                     'etap' => $etap,
  1785.                     'success' => true
  1786.                 ];
  1787.             }
  1788.         }
  1789.         return [
  1790.             'success' => false
  1791.         ];
  1792.     }
  1793.     public function submitEtap71($request,$user)
  1794.     {
  1795.         $etapToken = $request->get('etapToken');
  1796.         $tokenProject = $request->get('tokenProject');
  1797.         $etap71Litige = $request->get('etap71Litige');
  1798.         if($etapToken and $tokenProject){
  1799.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  1800.             $etap = $this->em->getRepository(Etap71::class)->findOneBy(['token'=>$etapToken]);
  1801.             if($project && $etap){
  1802.                 if(!$this->checkUserAction($user,$project,$etap)){
  1803.                     return [
  1804.                         'success' => false
  1805.                     ];
  1806.                 }
  1807.                 if($etap71Litige) {
  1808.                     foreach ($etap71Litige as $item) {
  1809.                         if (isset($item['id']) and $item['id'] != '') {
  1810.                             $etap71LitigeEntity = $this->em->getRepository(Etap71Litige::class)->findOneBy(['token' => $item['id']]);
  1811.                         } else {
  1812.                             $etap71LitigeEntity = new Etap71Litige();
  1813.                         }
  1814.                         if (isset($item['fileDocLitigeMultiple']) and $item['fileDocLitigeMultiple'] != '') {
  1815.                             $array = explode(',', $item['fileDocLitigeMultiple']);
  1816.                             foreach ($array as $item1) {
  1817.                                 $fileDocLitigeMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $item1]);
  1818.                                 $nomenclature = $this->getNomenclature($etap, $fileDocLitigeMultipleEntity, 'Litige document');
  1819.                                 $etap71LitigeEntity->addFileDocLitigeMultiple($fileDocLitigeMultipleEntity);
  1820.                             }
  1821.                         }
  1822.                         if(isset($item['titreLitige']) and $item['titreLitige'] != ''){
  1823.                             $etap71LitigeEntity->setTitreLitige($item['titreLitige']);
  1824.                         }else{
  1825.                             $etap71LitigeEntity->setTitreLitige(null);
  1826.                         }
  1827.                         $etap71LitigeEntity->setEtap71($etap);
  1828.                         $this->em->persist($etap71LitigeEntity);
  1829.                         $this->em->flush();
  1830.                         if (isset($item['comments'])) {
  1831.                           foreach ($item['comments'] as $comments){
  1832.                               if(isset($comments['id']) and $comments['id'] != ''){
  1833.                                   $comment = $this->em->getRepository(Etap71LitigeCommentaire::class)->find($comments['id']);
  1834.                               }else{
  1835.                                   $comment = new Etap71LitigeCommentaire();
  1836.                                   $comment->setCreatedAt(new \DateTime('now',new \DateTimeZone('Europe/Paris')));
  1837.                                   $comment->setUserCreated($this->security->getUser());
  1838.                               }
  1839.                               $comment->setComment($comments['comment']);
  1840.                               $comment->setEtap71Litige($etap71LitigeEntity);
  1841.                               $this->em->persist($comment);
  1842.                               $this->em->flush();
  1843.                           }
  1844.                         }
  1845.                     }
  1846.                 }
  1847.                 $this->em->persist($etap);
  1848.                 $this->em->flush();
  1849.                 $this->updateStatusTracker($project); // set status tracker
  1850.                 $this->flashBag->add(
  1851.                     'success',
  1852.                     'L\'opération a été effectuée avec succès.'
  1853.                 );
  1854.                 return [
  1855.                     'etap' => $etap,
  1856.                     'success' => true
  1857.                 ];
  1858.             }
  1859.         }
  1860.         return [
  1861.             'success' => false
  1862.         ];
  1863.     }
  1864.     public function submitEtap80($request,$user)
  1865.     {
  1866.         $fileIPR = $request->get('fileIPR');
  1867.         $filePRAC = $request->get('filePRAC');
  1868.         $distancePdl = $request->get('distancePdl');
  1869.         $natureRaccordement = $request->get('natureRaccordement');
  1870.         $etapToken = $request->get('etapToken');
  1871.         $tokenProject = $request->get('tokenProject');
  1872.         if($etapToken and $tokenProject){
  1873.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  1874.             $etap = $this->em->getRepository(Etap80::class)->findOneBy(['token'=>$etapToken]);
  1875.             if($project && $etap){
  1876.                 if(!$this->checkUserAction($user,$project,$etap)){
  1877.                     return [
  1878.                         'success' => false
  1879.                     ];
  1880.                 }
  1881.                 if($fileIPR){
  1882.                     $array = explode(',',$fileIPR);
  1883.                     foreach ($array as $item){
  1884.                         $fileIPREntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1885.                         $nomenclature =  $this->getNomenclature($etap,$fileIPREntity,'IPR');
  1886.                         $etap->addFileIPR($fileIPREntity);
  1887.                         $this->uploadFileToDropbox($fileIPREntity,$project,"Raccordement ENEDIS/".$fileIPREntity->getId().$nomenclature);
  1888.                     }
  1889.                 }
  1890.                 if($filePRAC){
  1891.                     $array = explode(',',$filePRAC);
  1892.                     foreach ($array as $item){
  1893.                         $filePRACEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1894.                         $nomenclature =  $this->getNomenclature($etap,$filePRACEntity,'PRAC');
  1895.                         $etap->addFilePRAC($filePRACEntity);
  1896.                         $this->uploadFileToDropbox($filePRACEntity,$project,"Raccordement ENEDIS/".$filePRACEntity->getId().$nomenclature);
  1897.                     }
  1898.                 }
  1899.                 $etap->setDistancePdl($distancePdl);
  1900.                 $etap->setNatureRaccordement($natureRaccordement);
  1901.                 $this->em->persist($etap);
  1902.                 $this->em->flush();
  1903.                 $this->updateStatusTracker($project); // set status tracker
  1904.                 $this->flashBag->add(
  1905.                     'success',
  1906.                     'L\'opération a été effectuée avec succès.'
  1907.                 );
  1908.                 return [
  1909.                     'etap' => $etap,
  1910.                     'success' => true
  1911.                 ];
  1912.             }
  1913.         }
  1914.         return [
  1915.             'success' => false
  1916.         ];
  1917.     }
  1918.     public function submitEtap8($request,$user)
  1919.     {
  1920.         $fileKbisEtsMultiple = $request->get('fileKbisEtsMultiple');
  1921.         $profileCreateur = $request->get('profileCreateur');
  1922.         $adresseEtablissement = $request->get('adresseEtablissement');
  1923.         $cityEtablissement = $request->get('cityEtablissement');
  1924.         $codePostalEtablissement = $request->get('codePostalEtablissement');
  1925.         $latEtablissement = $request->get('latEtablissement');
  1926.         $longiEtablissement = $request->get('longiEtablissement');
  1927.         $numParcelleEtablissement = $request->get('numParcelleEtablissement');
  1928.         $siretEts = $request->get('siretEts');
  1929.         $spvEtablissement = $request->get('spvEtablissement');
  1930.         $etapToken = $request->get('etapToken');
  1931.         $tokenProject = $request->get('tokenProject');
  1932.         if($etapToken and $tokenProject){
  1933.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  1934.             $etap = $this->em->getRepository(Etap8::class)->findOneBy(['token'=>$etapToken]);
  1935.             if($project && $etap){
  1936.                 if(!$this->checkUserAction($user,$project,$etap)){
  1937.                     return [
  1938.                         'success' => false
  1939.                     ];
  1940.                 }
  1941.                 if($fileKbisEtsMultiple){
  1942.                     $array = explode(',',$fileKbisEtsMultiple);
  1943.                     foreach ($array as $item){
  1944.                         $fileKbisEtsMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  1945.                         $nomenclature =  $this->getNomenclature($etap,$fileKbisEtsMultipleEntity,'Kbis de l’ETS');
  1946.                         $etap->addFileKbisEtsMultiple($fileKbisEtsMultipleEntity);
  1947.                         $this->uploadFileToDropbox($fileKbisEtsMultipleEntity,$project,"Raccordement ENEDIS/".$fileKbisEtsMultipleEntity->getId().$nomenclature);
  1948.                     }
  1949.                 }
  1950.                 $etap->setProfileCreateur($profileCreateur);
  1951.                 $etap->setAdresseEtablissement($adresseEtablissement);
  1952.                 $etap->setCityEtablissement($cityEtablissement);
  1953.                 $etap->setCodePostalEtablissement($codePostalEtablissement);
  1954.                 $etap->setLatEtablissement($latEtablissement);
  1955.                 $etap->setLongiEtablissement($longiEtablissement);
  1956.                 $etap->setNumParcelleEtablissement($numParcelleEtablissement);
  1957.                 $etap->setSiretEts($siretEts);
  1958.                 if($spvEtablissement){
  1959.                     $spvEtablissementEntity = $this->em->getRepository(Spv::class)->find($spvEtablissement);
  1960.                     $etap->setSpvEtablissement($spvEtablissementEntity);
  1961.                 }
  1962.                 $this->em->persist($etap);
  1963.                 $this->em->flush();
  1964.                 $this->updateStatusTracker($project); // set status tracker
  1965.                 $this->flashBag->add(
  1966.                     'success',
  1967.                     'L\'opération a été effectuée avec succès.'
  1968.                 );
  1969.                 return [
  1970.                     'etap' => $etap,
  1971.                     'success' => true
  1972.                 ];
  1973.             }
  1974.         }
  1975.         return [
  1976.             'success' => false
  1977.         ];
  1978.     }
  1979.     public function submitEtap9($request,$user)
  1980.     {
  1981.         $fileMailEnedisConfirmationMultiple = $request->get('fileMailEnedisConfirmationMultiple');
  1982.         $fileDemandeRaccordementMultiple = $request->get('fileDemandeRaccordementMultiple');
  1983.         $fileGarantieBancaireMultiple = $request->get('fileGarantieBancaireMultiple');
  1984.         $dateT0 = $request->get('dateT0');
  1985.         $dateMaximaleAchevement = $request->get('dateMaximaleAchevement');
  1986.         $dateConsignation = $request->get('dateConsignation');
  1987.         $tarifFit = $request->get('tarifFit');
  1988.         $etapToken = $request->get('etapToken');
  1989.         $tokenProject = $request->get('tokenProject');
  1990.         if($etapToken and $tokenProject){
  1991.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  1992.             $etap = $this->em->getRepository(Etap9::class)->findOneBy(['token'=>$etapToken]);
  1993.             if($project && $etap){
  1994.                 if(!$this->checkUserAction($user,$project,$etap)){
  1995.                     return [
  1996.                         'success' => false
  1997.                     ];
  1998.                 }
  1999.                 $etap24 = $this->em->getRepository(Etap24::class)->findOneBy(['project'=>$project->getId()]);
  2000.                 if($fileMailEnedisConfirmationMultiple){
  2001.                     $array = explode(',',$fileMailEnedisConfirmationMultiple);
  2002.                     foreach ($array as $item){
  2003.                         $fileMailEnedisConfirmationMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2004.                         $nomenclature =  $this->getNomenclature($etap,$fileMailEnedisConfirmationMultipleEntity,'Mail d’ENEDIS de confirmation');
  2005.                         $etap->addFileMailEnedisConfirmationMultiple($fileMailEnedisConfirmationMultipleEntity);
  2006.                         $this->uploadFileToDropbox($fileMailEnedisConfirmationMultipleEntity,$project,"Raccordement ENEDIS/".$fileMailEnedisConfirmationMultipleEntity->getId().$nomenclature);
  2007.                         if(count($etap24->getEtap24Champs()) > 0) {
  2008.                             foreach ($etap24->getEtap24Champs() as $etap24Cahmps){
  2009.                                 if($etap24Cahmps->getTypeValorisation() && ($etap24Cahmps->getTypeValorisation()->getCategory() == TypeValorisation::type_ao_cre or $etap24Cahmps->getTypeValorisation()->getCategory() == TypeValorisation::type_guichet_ouvert)){
  2010.                                     $etap24Cahmps->addFileMailEnedisConfirmationEtap25Multiple($fileMailEnedisConfirmationMultipleEntity);
  2011.                                     $this->em->persist($etap24Cahmps);
  2012.                                 }
  2013.                             }
  2014.                         }
  2015.                     }
  2016.                 }
  2017.                 if($fileDemandeRaccordementMultiple){
  2018.                     $array = explode(',',$fileDemandeRaccordementMultiple);
  2019.                     foreach ($array as $item){
  2020.                         $fileDemandeRaccordementMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2021.                         $nomenclature =  $this->getNomenclature($etap,$fileDemandeRaccordementMultipleEntity,'Demande de raccordement');
  2022.                         $etap->addFileDemandeRaccordementMultiple($fileDemandeRaccordementMultipleEntity);
  2023.                         $this->uploadFileToDropbox($fileDemandeRaccordementMultipleEntity,$project,"Raccordement ENEDIS/".$fileDemandeRaccordementMultipleEntity->getId().$nomenclature);
  2024.                         if(count($etap24->getEtap24Champs()) > 0) {
  2025.                             foreach ($etap24->getEtap24Champs() as $etap24Cahmps){
  2026.                                 if($etap24Cahmps->getTypeValorisation() && ($etap24Cahmps->getTypeValorisation()->getCategory() == TypeValorisation::type_ao_cre or $etap24Cahmps->getTypeValorisation()->getCategory() == TypeValorisation::type_guichet_ouvert)){
  2027.                                     $etap24Cahmps->addFileDemandeRaccordementEtap25Multiple($fileDemandeRaccordementMultipleEntity);
  2028.                                     $this->em->persist($etap24Cahmps);
  2029.                                 }
  2030.                             }
  2031.                         }
  2032.                     }
  2033.                 }
  2034.                 if($fileGarantieBancaireMultiple){
  2035.                     $array = explode(',',$fileGarantieBancaireMultiple);
  2036.                     foreach ($array as $item){
  2037.                         $fileGarantieBancaireMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2038.                         $nomenclature =  $this->getNomenclature($etap,$fileGarantieBancaireMultipleEntity,'Garantie bancaire');
  2039.                         $etap->addFileGarantieBancaireMultiple($fileGarantieBancaireMultipleEntity);
  2040.                         if(count($etap24->getEtap24Champs()) > 0) {
  2041.                             foreach ($etap24->getEtap24Champs() as $etap24Cahmps){
  2042.                                 if($etap24Cahmps->getTypeValorisation() && ($etap24Cahmps->getTypeValorisation()->getCategory() == TypeValorisation::type_ao_cre)){
  2043.                                     $etap24Cahmps->addFileGarantieBancaireEtap25Multiple($fileGarantieBancaireMultipleEntity);
  2044.                                     $this->em->persist($etap24Cahmps);
  2045.                                 }
  2046.                             }
  2047.                         }
  2048.                     }
  2049.                 }
  2050.                 if($dateT0){
  2051.                     $etap->setDateT0(new \DateTime($dateT0));
  2052.                     $project->setDateT0Date(new \DateTime($dateT0));
  2053.                     if(count($etap24->getEtap24Champs()) > 0) {
  2054.                         foreach ($etap24->getEtap24Champs() as $etap24Cahmps) {
  2055.                             $etap24Cahmps->setDateT0(new \DateTime($dateT0));
  2056.                             $this->em->persist($etap24Cahmps);
  2057.                         }
  2058.                     }
  2059.                 }else{
  2060.                     $etap->setDateT0(null);
  2061.                     $project->setDateT0Date(null);
  2062.                     foreach ($etap24->getEtap24Champs() as $etap24Cahmps) {
  2063.                         $etap24Cahmps->setDateT0(null);
  2064.                         $this->em->persist($etap24Cahmps);
  2065.                     }
  2066.                 }
  2067.                 if($dateMaximaleAchevement){
  2068.                     $etap->setDateMaximaleAchevement(new \DateTime($dateMaximaleAchevement));
  2069.                 }else{
  2070.                     $etap->setDateMaximaleAchevement(null);
  2071.                 }
  2072.                 if($dateConsignation){
  2073.                     $etap->setDateConsignation(new \DateTime($dateConsignation));
  2074.                 }else{
  2075.                     $etap->setDateConsignation(null);
  2076.                 }
  2077.                 $etap->setTarifFit($tarifFit);
  2078.                 $project->setTarifRevente($tarifFit);
  2079.                 $this->em->persist($etap);
  2080.                 $this->em->flush();
  2081.                 $this->notification->addAlertT0($project);
  2082.                 $this->updateStatusTracker($project); // set status tracker
  2083.                 $this->flashBag->add(
  2084.                     'success',
  2085.                     'L\'opération a été effectuée avec succès.'
  2086.                 );
  2087.                 return [
  2088.                     'etap' => $etap,
  2089.                     'success' => true
  2090.                 ];
  2091.             }
  2092.         }
  2093.         return [
  2094.             'success' => false
  2095.         ];
  2096.     }
  2097.     public function submitEtap10($request,$user)
  2098.     {
  2099.         $filePtfMultiple = $request->get('filePtfMultiple');
  2100.         $fileCrdSigneeMultiple = $request->get('fileCrdSigneeMultiple');
  2101.         $filePreuveVirementMultiple = $request->get('filePreuveVirementMultiple');
  2102.         $fileCrdSigneeSansPtfMultiple = $request->get('fileCrdSigneeSansPtfMultiple');
  2103.         $filePreuveVirementSansPtfMultiple = $request->get('filePreuveVirementSansPtfMultiple');
  2104.         $fileAvenantCrdMultiple = $request->get('fileAvenantCrdMultiple');
  2105.         $fileAvenantCrdMesMultiple = $request->get('fileAvenantCrdMesMultiple');
  2106.         $isPtf= $request->get('isPtf');
  2107.         $montantAcompte= $request->get('montantAcompte');
  2108.         $montantCoutTotal= $request->get('montantCoutTotal');
  2109.         $montantAcompteSansPtf= $request->get('montantAcompteSansPtf');
  2110.         $montantCrdSansPtf= $request->get('montantCrdSansPtf');
  2111.         $referenceEnedis = $request->get('referenceEnedis');
  2112.         $avenantCrdMes = $request->get('avenantCrdMes');
  2113.         $etapToken = $request->get('etapToken');
  2114.         $tokenProject = $request->get('tokenProject');
  2115.         if($etapToken and $tokenProject){
  2116.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  2117.             $etap = $this->em->getRepository(Etap10::class)->findOneBy(['token'=>$etapToken]);
  2118.             if($project && $etap){
  2119.                 if(!$this->checkUserAction($user,$project,$etap)){
  2120.                     return [
  2121.                         'success' => false
  2122.                     ];
  2123.                 }
  2124.                 if($filePtfMultiple){
  2125.                     $array = explode(',',$filePtfMultiple);
  2126.                     foreach ($array as $item){
  2127.                         $filePtfMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2128.                         $nomenclature =  $this->getNomenclature($etap,$filePtfMultipleEntity,'PTF');
  2129.                         $etap->addFilePtfMultiple($filePtfMultipleEntity);
  2130.                         $this->uploadFileToDropbox($filePtfMultipleEntity,$project,"Raccordement ENEDIS/".$filePtfMultipleEntity->getId().$nomenclature);
  2131.                     }
  2132.                 }
  2133.                 if($fileCrdSigneeMultiple){
  2134.                     $array = explode(',',$fileCrdSigneeMultiple);
  2135.                     foreach ($array as $item){
  2136.                         $fileCrdSigneeMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2137.                         if($item && $fileCrdSigneeMultipleEntity){
  2138.                             $nomenclature =  $this->getNomenclature($etap,$fileCrdSigneeMultipleEntity,'CRD signée');
  2139.                             $etap->addFileCrdSigneeMultiple($fileCrdSigneeMultipleEntity);
  2140.                             $this->uploadFileToDropbox($fileCrdSigneeMultipleEntity,$project,"Raccordement ENEDIS/".$fileCrdSigneeMultipleEntity->getId().$nomenclature);
  2141.                         }
  2142.                      }
  2143.                 }
  2144.                 if($filePreuveVirementMultiple){
  2145.                     $array = explode(',',$filePreuveVirementMultiple);
  2146.                     foreach ($array as $item){
  2147.                         $filePreuveVirementMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2148.                         $nomenclature =  $this->getNomenclature($etap,$filePreuveVirementMultipleEntity,'Preuve de virement');
  2149.                         $etap->addFilePreuveVirementMultiple($filePreuveVirementMultipleEntity);
  2150.                         $this->uploadFileToDropbox($filePreuveVirementMultipleEntity,$project,"Raccordement ENEDIS/".$filePreuveVirementMultipleEntity->getId().$nomenclature);
  2151.                     }
  2152.                 }
  2153.                 if($fileCrdSigneeSansPtfMultiple){
  2154.                     $array = explode(',',$fileCrdSigneeSansPtfMultiple);
  2155.                     foreach ($array as $item){
  2156.                         $fileCrdSigneeSansPtfMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2157.                         $nomenclature =  $this->getNomenclature($etap,$fileCrdSigneeSansPtfMultipleEntity,'CRD signée');
  2158.                         $etap->addFileCrdSigneeSansPtfMultiple($fileCrdSigneeSansPtfMultipleEntity);
  2159.                         $this->uploadFileToDropbox($fileCrdSigneeSansPtfMultipleEntity,$project,"Raccordement ENEDIS/".$fileCrdSigneeSansPtfMultipleEntity->getId().$nomenclature);
  2160.                     }
  2161.                 }
  2162.                 if($filePreuveVirementSansPtfMultiple){
  2163.                     $array = explode(',',$filePreuveVirementSansPtfMultiple);
  2164.                     foreach ($array as $item){
  2165.                         $filePreuveVirementSansPtfMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2166.                         $nomenclature =  $this->getNomenclature($etap,$filePreuveVirementSansPtfMultipleEntity,'Preuve de virement');
  2167.                         $etap->addFilePreuveVirementSansPtfMultiple($filePreuveVirementSansPtfMultipleEntity);
  2168.                         $this->uploadFileToDropbox($filePreuveVirementSansPtfMultipleEntity,$project,"Raccordement ENEDIS/".$filePreuveVirementSansPtfMultipleEntity->getId().$nomenclature);
  2169.                     }
  2170.                 }
  2171.                 if($fileAvenantCrdMesMultiple){
  2172.                     $array = explode(',',$fileAvenantCrdMesMultiple);
  2173.                     foreach ($array as $item){
  2174.                         $fileAvenantCrdMesMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2175.                         $nomenclature =  $this->getNomenclature($etap,$fileAvenantCrdMesMultipleEntity,'Avenant CRD pour MES');
  2176.                         $etap->addFileAvenantCrdMesMultiple($fileAvenantCrdMesMultipleEntity);
  2177.                         $this->uploadFileToDropbox($fileAvenantCrdMesMultipleEntity,$project,"Raccordement ENEDIS/".$fileAvenantCrdMesMultipleEntity->getId().$nomenclature);
  2178.                     }
  2179.                 }
  2180.                 if($fileAvenantCrdMultiple){
  2181.                     $array = explode(',',$fileAvenantCrdMultiple);
  2182.                     foreach ($array as $item){
  2183.                         $fileAvenantCrdMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2184.                         $nomenclature =  $this->getNomenclature($etap,$fileAvenantCrdMultipleEntity,'Avenant CRD');
  2185.                         $etap->addFileAvenantCrdMultiple($fileAvenantCrdMultipleEntity);
  2186.                         $this->uploadFileToDropbox($fileAvenantCrdMultipleEntity,$project,"Raccordement ENEDIS/".$fileAvenantCrdMultipleEntity->getId().$nomenclature);
  2187.                     }
  2188.                 }
  2189.                 $etap->setIsPtf($isPtf);
  2190.                 $etap->setMontantAcompte($montantAcompte);
  2191.                 $etap->setMontantCoutTotal($montantCoutTotal);
  2192.                 $etap->setMontantAcompteSansPtf($montantAcompteSansPtf);
  2193.                 $etap->setMontantCrdSansPtf($montantCrdSansPtf);
  2194.                 $etap->setReferenceEnedis($referenceEnedis);
  2195.                 $etap->setAvenantCrdMes($avenantCrdMes);
  2196.                 $this->em->persist($etap);
  2197.                 $this->em->flush();
  2198.                 $this->updateStatusTracker($project); // set status tracker
  2199.                 $this->flashBag->add(
  2200.                     'success',
  2201.                     'L\'opération a été effectuée avec succès.'
  2202.                 );
  2203.                 return [
  2204.                     'etap' => $etap,
  2205.                     'success' => true
  2206.                 ];
  2207.             }
  2208.         }
  2209.         return [
  2210.             'success' => false
  2211.         ];
  2212.     }
  2213.     public function submitEtap11($request,$user)
  2214.     {
  2215.         $filePreuveVirement = $request->get('filePreuveVirement');
  2216.         $etapToken = $request->get('etapToken');
  2217.         $tokenProject = $request->get('tokenProject');
  2218.         if($etapToken and $tokenProject){
  2219.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  2220.             $etap = $this->em->getRepository(Etap11::class)->findOneBy(['token'=>$etapToken]);
  2221.             if($project && $etap){
  2222.                 if(!$this->checkUserAction($user,$project,$etap)){
  2223.                     return [
  2224.                         'success' => false
  2225.                     ];
  2226.                 }
  2227.                 if($filePreuveVirement){
  2228.                     $filePreuveVirementEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$filePreuveVirement]);
  2229.                     $nomenclature =  $this->getNomenclature($etap,$filePreuveVirementEntity,'Preuve de virement');
  2230.                     $etap->setFilePreuveVirement($filePreuveVirementEntity);
  2231.                     $this->uploadFileToDropbox($filePreuveVirementEntity,$project,"Raccordement ENEDIS/".$nomenclature);
  2232.                 }
  2233.                 $this->em->persist($etap);
  2234.                 $this->em->flush();
  2235.                 $this->updateStatusTracker($project); // set status tracker
  2236.                 $this->flashBag->add(
  2237.                     'success',
  2238.                     'L\'opération a été effectuée avec succès.'
  2239.                 );
  2240.                 return [
  2241.                     'etap' => $etap,
  2242.                     'success' => true
  2243.                 ];
  2244.             }
  2245.         }
  2246.         return [
  2247.             'success' => false
  2248.         ];
  2249.     }
  2250.     public function submitEtap12($request,$user)
  2251.     {
  2252.         $fileCexSigneMultiple = $request->get('fileCexSigneMultiple');
  2253.         $fileCardiSigneMultiple = $request->get('fileCardiSigneMultiple');
  2254.         $fileAvenantCardiMultiple = $request->get('fileAvenantCardiMultiple');
  2255.         $numeroCardi = $request->get('numeroCardi');
  2256.         $numeroCardiMultiple = $request->get('numeroCardiMultiple');
  2257.         $identifiantEnedis = $request->get('identifiantEnedis');
  2258.         $etapToken = $request->get('etapToken');
  2259.         $tokenProject = $request->get('tokenProject');
  2260.         if($etapToken and $tokenProject){
  2261.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  2262.             $etap = $this->em->getRepository(Etap12::class)->findOneBy(['token'=>$etapToken]);
  2263.             if($project && $etap){
  2264.                 if(!$this->checkUserAction($user,$project,$etap)){
  2265.                     return [
  2266.                         'success' => false
  2267.                     ];
  2268.                 }
  2269.                 if($fileCexSigneMultiple){
  2270.                     $array = explode(',',$fileCexSigneMultiple);
  2271.                     foreach ($array as $item){
  2272.                         $fileCexSigneMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2273.                         if($fileCexSigneMultipleEntity){
  2274.                            $nomenclature = $this->getNomenclature($etap,$fileCexSigneMultipleEntity,'CEX signé');
  2275.                            $etap->addFileCexSigneMultiple($fileCexSigneMultipleEntity);
  2276.                            $this->uploadFileToDropbox($fileCexSigneMultipleEntity,$project,"Raccordement ENEDIS/".$fileCexSigneMultipleEntity->getId().$nomenclature);
  2277.                         }
  2278.                     }
  2279.                 }
  2280.                 if($fileCardiSigneMultiple){
  2281.                     $array = explode(',',$fileCardiSigneMultiple);
  2282.                     foreach ($array as $item){
  2283.                         $fileCardiSigneMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2284.                         if($fileCardiSigneMultipleEntity){
  2285.                             $nomenclature = $this->getNomenclature($etap,$fileCardiSigneMultipleEntity,'CARDi signé');
  2286.                             $etap->addFileCardiSigneMultiple($fileCardiSigneMultipleEntity);
  2287.                             $this->uploadFileToDropbox($fileCardiSigneMultipleEntity,$project,"Raccordement ENEDIS/".$fileCardiSigneMultipleEntity->getId().$nomenclature);
  2288.                         }
  2289.                    }
  2290.                 }
  2291.                 if($fileAvenantCardiMultiple){
  2292.                     $array = explode(',',$fileAvenantCardiMultiple);
  2293.                     foreach ($array as $item){
  2294.                         $fileAvenantCardiMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2295.                         if($fileAvenantCardiMultipleEntity){
  2296.                             $nomenclature = $this->getNomenclature($etap,$fileAvenantCardiMultipleEntity,'Avenant CARDi');
  2297.                             $etap->addFileAvenantCardiMultiple($fileAvenantCardiMultipleEntity);
  2298.                             $this->uploadFileToDropbox($fileAvenantCardiMultipleEntity,$project,"Raccordement ENEDIS/".$fileAvenantCardiMultipleEntity->getId().$nomenclature);
  2299.                         }
  2300.                     }
  2301.                 }
  2302.                 $etap->setNumeroCardi($numeroCardi);
  2303.                 $etap->setIdentifiantEnedis($identifiantEnedis);
  2304.                 $this->em->persist($etap);
  2305.                 $this->em->flush();
  2306.                 if($numeroCardiMultiple){
  2307.                     foreach ($numeroCardiMultiple as $item){
  2308.                         if(isset($item['id'])&& !empty($item['id'])){
  2309.                             $numeroCardiEntity = $this->em->getRepository(NumeroCardi::class)->find($item['id']);
  2310.                             if($numeroCardiEntity){
  2311.                                 $numeroCardiEntity->setNumeroCardi($item['numeroCardi']);
  2312.                                 $numeroCardiEntity->setIdentifiantEnedis($item['identifiantEnedis']);
  2313.                                 $numeroCardiEntity->setEtap12($etap);
  2314.                                 $this->em->persist($numeroCardiEntity);
  2315.                                 $this->em->flush();
  2316.                             }
  2317.                         }else{
  2318.                             $numeroCardiEntity = new NumeroCardi();
  2319.                             $numeroCardiEntity->setNumeroCardi($item['numeroCardi']);
  2320.                             $numeroCardiEntity->setIdentifiantEnedis($item['identifiantEnedis']);
  2321.                             $numeroCardiEntity->setEtap12($etap);
  2322.                             $this->em->persist($numeroCardiEntity);
  2323.                             $this->em->flush();
  2324.                         }
  2325.                     }
  2326.                 }
  2327.                 $this->updateStatusTracker($project); // set status tracker
  2328.                 $this->flashBag->add(
  2329.                     'success',
  2330.                     'L\'opération a été effectuée avec succès.'
  2331.                 );
  2332.                 return [
  2333.                     'etap' => $etap,
  2334.                     'success' => true
  2335.                 ];
  2336.             }
  2337.         }
  2338.         return [
  2339.             'success' => false
  2340.         ];
  2341.     }
  2342.     public function submitEtap121($request,$user)
  2343.     {
  2344.         $fileDocument121Multiple = $request->get('fileDocument121Multiple');
  2345.         $datePrevisionnelleInstallationPDL = $request->get('datePrevisionnelleInstallationPDL');
  2346.         $dateInstallationPDL = $request->get('dateInstallationPDL');
  2347.         $dateMiseSousTensionEnedis = $request->get('dateMiseSousTensionEnedis');
  2348.         $etapToken = $request->get('etapToken');
  2349.         $tokenProject = $request->get('tokenProject');
  2350.         if($etapToken and $tokenProject){
  2351.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  2352.             $etap = $this->em->getRepository(Etap121::class)->findOneBy(['token'=>$etapToken]);
  2353.             if($project && $etap){
  2354.                 if(!$this->checkUserAction($user,$project,$etap)){
  2355.                     return [
  2356.                         'success' => false
  2357.                     ];
  2358.                 }
  2359.                 if($dateMiseSousTensionEnedis){
  2360.                     $etap->setDateMiseSousTensionEnedis(new \DateTime($dateMiseSousTensionEnedis));
  2361.                 }else{
  2362.                     $etap->setDateMiseSousTensionEnedis(null);
  2363.                 }
  2364.                 if($dateInstallationPDL){
  2365.                     $etap->setDateInstallationPDL(new \DateTime($dateInstallationPDL));
  2366.                 }else{
  2367.                     $etap->setDateInstallationPDL(null);
  2368.                 }
  2369.                 if($datePrevisionnelleInstallationPDL){
  2370.                     $etap->setDatePrevisionnelleInstallationPDL(new \DateTime($datePrevisionnelleInstallationPDL));
  2371.                 }else{
  2372.                     $etap->setDatePrevisionnelleInstallationPDL(null);
  2373.                 }
  2374.                 if($fileDocument121Multiple){
  2375.                     $array = explode(',',$fileDocument121Multiple);
  2376.                     foreach ($array as $item){
  2377.                         $fileDocument121MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2378.                         $nomenclature = $this->getNomenclature($etap,$fileDocument121MultipleEntity,'Installation PDL');
  2379.                         $etap->addFileDocument121Multiple($fileDocument121MultipleEntity);
  2380.                         $this->uploadFileToDropbox($fileDocument121MultipleEntity,$project,"Raccordement ENEDIS/".$fileDocument121MultipleEntity->getId().$nomenclature);
  2381.                     }
  2382.                 }
  2383.                 $this->em->persist($etap);
  2384.                 $this->em->flush();
  2385.                 $this->updateStatusTracker($project); // set status tracker
  2386.                 $this->flashBag->add(
  2387.                     'success',
  2388.                     'L\'opération a été effectuée avec succès.'
  2389.                 );
  2390.                 return [
  2391.                     'etap' => $etap,
  2392.                     'success' => true
  2393.                 ];
  2394.             }
  2395.         }
  2396.         return [
  2397.             'success' => false
  2398.         ];
  2399.     }
  2400.     public function submitEtap13($request,$user)
  2401.     {
  2402.         $fileConsuelMultiple = $request->get('fileConsuelMultiple');
  2403.         $fileAttestationBureauControleMultiple = $request->get('fileAttestationBureauControleMultiple');
  2404.         $fileDREMultiple = $request->get('fileDREMultiple');
  2405.         $dateConsuel = $request->get('dateConsuel');
  2406.         $etapToken = $request->get('etapToken');
  2407.         $tokenProject = $request->get('tokenProject');
  2408.         if($etapToken and $tokenProject){
  2409.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  2410.             $etap = $this->em->getRepository(Etap13::class)->findOneBy(['token'=>$etapToken]);
  2411.             if($project && $etap){
  2412.                 $etap20 = $this->em->getRepository(Etap20::class)->findOneBy(['project'=>$project->getId()]);
  2413.                 if(!$this->checkUserAction($user,$project,$etap)){
  2414.                     return [
  2415.                         'success' => false
  2416.                     ];
  2417.                 }
  2418.                 if($fileConsuelMultiple){
  2419.                     $array = explode(',',$fileConsuelMultiple);
  2420.                     foreach ($array as $item){
  2421.                         $fileConsuelMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2422.                         $nomenclature = $this->getNomenclature($etap,$fileConsuelMultipleEntity,'Consuel');
  2423.                         $etap->addFileConsuelMultiple($fileConsuelMultipleEntity);
  2424.                         $etap20->addFileConsuelEtap20Multiple($fileConsuelMultipleEntity);
  2425.                         $this->uploadFileToDropbox($fileConsuelMultipleEntity,$project,"Raccordement ENEDIS/".$fileConsuelMultipleEntity->getId().$nomenclature);
  2426.                     }
  2427.                 }
  2428.                 if($fileAttestationBureauControleMultiple){
  2429.                     $array = explode(',',$fileAttestationBureauControleMultiple);
  2430.                     foreach ($array as $item){
  2431.                         $fileAttestationBureauControleMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2432.                         $nomenclature = $this->getNomenclature($etap,$fileAttestationBureauControleMultipleEntity,'Attestation bureau de contrôle S21');
  2433.                         $etap->addFileAttestationBureauControleMultiple($fileAttestationBureauControleMultipleEntity);
  2434.                         $this->uploadFileToDropbox($fileAttestationBureauControleMultipleEntity,$project,"Raccordement ENEDIS/".$fileAttestationBureauControleMultipleEntity->getId().$nomenclature);
  2435.                     }
  2436.                 }
  2437.                 if($fileDREMultiple){
  2438.                     $array = explode(',',$fileDREMultiple);
  2439.                     foreach ($array as $item){
  2440.                         $fileDREMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2441.                         $nomenclature = $this->getNomenclature($etap,$fileDREMultipleEntity,'DRE');
  2442.                         $etap->addFileDREMultiple($fileDREMultipleEntity);
  2443.                         $this->uploadFileToDropbox($fileDREMultipleEntity,$project,"Raccordement ENEDIS/".$fileDREMultipleEntity->getId().$nomenclature);
  2444.                     }
  2445.                 }
  2446.                 if($dateConsuel){
  2447.                     $etap->setDateConsuel(new \DateTime($dateConsuel));
  2448.                     $etap20->setDateConsuelEtap20(new \DateTime($dateConsuel));
  2449.                 }else{
  2450.                     $etap->setDateConsuel(null);
  2451.                     $etap20->setDateConsuelEtap20(null);
  2452.                 }
  2453.                 $this->em->persist($etap20);
  2454.                 $this->em->persist($etap);
  2455.                 $this->em->flush();
  2456.                 $this->notification->addAlertPc($project);
  2457.                 $this->notification->addAlertT0($project);
  2458.                 $this->updateStatusTracker($project); // set status tracker
  2459.                 $this->flashBag->add(
  2460.                     'success',
  2461.                     'L\'opération a été effectuée avec succès.'
  2462.                 );
  2463.                 return [
  2464.                     'etap' => $etap,
  2465.                     'success' => true
  2466.                 ];
  2467.             }
  2468.         }
  2469.         return [
  2470.             'success' => false
  2471.         ];
  2472.     }
  2473.     public function submitEtap14($request,$user)
  2474.     {
  2475.         $fileDoeMultiple = $request->get('fileDoeMultiple');
  2476.         $fileARPE = $request->get('fileARPE');
  2477.         $fileDEIE = $request->get('fileDEIE');
  2478.         $fileAttestationS21Multiple = $request->get('fileAttestationS21Multiple');
  2479.         $dateMiseEnService = $request->get('dateMiseEnService');
  2480.         $dateMesPrevisionnelle = $request->get('dateMesPrevisionnelle');
  2481.         $adresseMiseEnService = $request->get('adresseMiseEnService');
  2482.         $cityMiseEnService = $request->get('cityMiseEnService');
  2483.         $codePostalMiseEnService = $request->get('codePostalMiseEnService');
  2484.         $firstnameProprietaire = $request->get('firstnameProprietaire');
  2485.         $lastnameProprietaire = $request->get('lastnameProprietaire');
  2486.         $phoneProprietaire = $request->get('phoneProprietaire');
  2487.         $emailProprietaire = $request->get('emailProprietaire');
  2488.         $procedureAcces = $request->get('procedureAcces');
  2489.         $etapToken = $request->get('etapToken');
  2490.         $tokenProject = $request->get('tokenProject');
  2491.         if($etapToken and $tokenProject){
  2492.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  2493.             $etap = $this->em->getRepository(Etap14::class)->findOneBy(['token'=>$etapToken]);
  2494.             if($project && $etap){
  2495.                 $etap21 = $this->em->getRepository(Etap21::class)->findOneBy(['project'=>$project->getId()]);
  2496.                 if(!$this->checkUserAction($user,$project,$etap)){
  2497.                     return [
  2498.                         'success' => false
  2499.                     ];
  2500.                 }
  2501.                 if($fileDoeMultiple){
  2502.                     $array = explode(',',$fileDoeMultiple);
  2503.                     foreach ($array as $item){
  2504.                         $fileDoeMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2505.                         $nomenclature = $this->getNomenclature($etap,$fileDoeMultipleEntity,'Attestation de mise en service');
  2506.                         $etap->addFileDoeMultiple($fileDoeMultipleEntity);
  2507. //                        $this->uploadFileToDropbox($fileDoeMultipleEntity,$project,"Raccordement ENEDIS/".$fileDoeMultipleEntity->getId().$nomenclature);
  2508.                     }
  2509.                 }
  2510.                 if($fileARPE){
  2511.                     $array = explode(',',$fileARPE);
  2512.                     foreach ($array as $item){
  2513.                         $fileARPEEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2514.                         $nomenclature = $this->getNomenclature($etap,$fileARPEEntity,'ARPE');
  2515.                         $etap->addFileARPE($fileARPEEntity);
  2516.                     }
  2517.                 }
  2518.                 if($fileDEIE){
  2519.                     $array = explode(',',$fileDEIE);
  2520.                     foreach ($array as $item){
  2521.                         $fileDEIEEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2522.                         $nomenclature = $this->getNomenclature($etap,$fileDEIEEntity,'DEIE');
  2523.                         $etap->addFileDEIE($fileDEIEEntity);
  2524.                     }
  2525.                 }
  2526.                 if($fileAttestationS21Multiple){
  2527.                     $array = explode(',',$fileAttestationS21Multiple);
  2528.                     foreach ($array as $item){
  2529.                         $fileAttestationS21MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2530.                         $nomenclature = $this->getNomenclature($etap,$fileAttestationS21MultipleEntity,'Attestation S21 (attestation de conformité) ');
  2531.                         $etap->addFileAttestationS21Multiple($fileAttestationS21MultipleEntity);
  2532. //                        $this->uploadFileToDropbox($fileAttestationS21MultipleEntity,$project,"Raccordement ENEDIS/".$fileAttestationS21MultipleEntity->getId().$nomenclature);
  2533.                     }
  2534.                 }
  2535.                 if($dateMiseEnService){
  2536.                     $etap->setDateMiseEnService(new \DateTime($dateMiseEnService));
  2537.                     $project->setDateMiseEnService(new \DateTime($dateMiseEnService));
  2538.                     $etap21->setDateMiseEnService(new \DateTime($dateMiseEnService));
  2539.                 }else{
  2540.                     $etap->setDateMiseEnService(null);
  2541.                     $project->setDateMiseEnService(null);
  2542.                     $etap21->setDateMiseEnService(null);
  2543.                 }
  2544.                 if($dateMesPrevisionnelle){
  2545.                     $etap->setDateMesPrevisionnelle(new \DateTime($dateMesPrevisionnelle));
  2546.                 }else{
  2547.                     $etap->setDateMesPrevisionnelle(null);
  2548.                 }
  2549.                     $etap->setAdresseMiseEnService($adresseMiseEnService);
  2550.                     $etap->setCityMiseEnService($cityMiseEnService);
  2551.                     $etap->setCodePostalMiseEnService($codePostalMiseEnService);
  2552.                     $etap->setFirstnameProprietaire($firstnameProprietaire);
  2553.                     $etap->setLastnameProprietaire($lastnameProprietaire);
  2554.                     $etap->setPhoneProprietaire($phoneProprietaire);
  2555.                     $etap->setEmailProprietaire($emailProprietaire);
  2556.                     $etap->setProcedureAcces($procedureAcces);
  2557.                 $this->em->persist($etap);
  2558.                 $this->em->flush();
  2559.                 $this->updateStatusTracker($project); // set status tracker
  2560.                 $this->flashBag->add(
  2561.                     'success',
  2562.                     'L\'opération a été effectuée avec succès.'
  2563.                 );
  2564.                 return [
  2565.                     'etap' => $etap,
  2566.                     'success' => true
  2567.                 ];
  2568.             }
  2569.         }
  2570.         return [
  2571.             'success' => false
  2572.         ];
  2573.     }
  2574.     public function submitEtap15($request,$user)
  2575.     {
  2576.         $fileContratAchatSigneMultiple = $request->get('fileContratAchatSigneMultiple');
  2577.         $fileAttestionProducteurMultiple = $request->get('fileAttestionProducteurMultiple');
  2578.         $fileAttestionInstallateurMultiple = $request->get('fileAttestionInstallateurMultiple');
  2579.         $fileArContratAchatMultiple = $request->get('fileArContratAchatMultiple');
  2580.         $dateDebutContratAchat = $request->get('dateDebutContratAchat');
  2581.         $dateFinContratAchat = $request->get('dateFinContratAchat');
  2582.         $tarifContratAchat = $request->get('tarifContratAchat');
  2583.         $peridiciteFacturation = $request->get('peridiciteFacturation');
  2584.         $numeroContratAchat = $request->get('numeroContratAchat');
  2585.         $informationMultiple = $request->get('informationMultiple');
  2586.         $etapToken = $request->get('etapToken');
  2587.         $tokenProject = $request->get('tokenProject');
  2588.         if($etapToken and $tokenProject){
  2589.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  2590.             $etap = $this->em->getRepository(Etap15::class)->findOneBy(['token'=>$etapToken]);
  2591.             if($project && $etap){
  2592.                 if(!$this->checkUserAction($user,$project,$etap)){
  2593.                     return [
  2594.                         'success' => false
  2595.                     ];
  2596.                 }
  2597.                 if($informationMultiple){
  2598.                     foreach ($informationMultiple as $item){
  2599.                         if(isset($item['id'])&& !empty($item['id'])){
  2600.                             $informationMultipleEntity = $this->em->getRepository(ImfomationContratAchat::class)->find($item['id']);
  2601.                             if($informationMultipleEntity){
  2602.                                 $informationMultipleEntity->setTarifContratAchat($item['tarifContratAchat']);
  2603.                                 if($item['dateDebutContratAchat']){
  2604.                                     $informationMultipleEntity->setDateDebutContratAchat(new \DateTime($item['dateDebutContratAchat']));
  2605.                                 }else{
  2606.                                     $informationMultipleEntity->setDateDebutContratAchat(null);
  2607.                                 }
  2608.                                 if($item['dateFinContratAchat']){
  2609.                                     $informationMultipleEntity->setDateFinContratAchat(new \DateTime($item['dateFinContratAchat']));
  2610.                                 }else{
  2611.                                     $informationMultipleEntity->setDateFinContratAchat(null);
  2612.                                 }
  2613.                                 $informationMultipleEntity->setPeridiciteFacturation($item['peridiciteFacturation']);
  2614.                                 $informationMultipleEntity->setNumeroContratAchat($item['numeroContratAchat']);
  2615.                                 $informationMultipleEntity->setTypeContrat($item['typeContrat']);
  2616.                                 $informationMultipleEntity->setEtap15($etap);
  2617.                                 $this->em->persist($informationMultipleEntity);
  2618.                                 $this->em->flush();
  2619.                             }
  2620.                         }else{
  2621.                             $informationMultipleEntity = new ImfomationContratAchat();
  2622.                             $informationMultipleEntity->setTarifContratAchat($item['tarifContratAchat']);
  2623.                             if($item['dateDebutContratAchat']){
  2624.                                 $informationMultipleEntity->setDateDebutContratAchat(new \DateTime($item['dateDebutContratAchat']));
  2625.                             }else{
  2626.                                 $informationMultipleEntity->setDateDebutContratAchat(null);
  2627.                             }
  2628.                             if($item['dateFinContratAchat']){
  2629.                                 $informationMultipleEntity->setDateFinContratAchat(new \DateTime($item['dateFinContratAchat']));
  2630.                             }else{
  2631.                                 $informationMultipleEntity->setDateFinContratAchat(null);
  2632.                             }
  2633.                             $informationMultipleEntity->setPeridiciteFacturation($item['peridiciteFacturation']);
  2634.                             $informationMultipleEntity->setNumeroContratAchat($item['numeroContratAchat']);
  2635.                             $informationMultipleEntity->setTypeContrat($item['typeContrat']);
  2636.                             $informationMultipleEntity->setEtap15($etap);
  2637.                             $this->em->persist($informationMultipleEntity);
  2638.                             $this->em->flush();
  2639.                         }
  2640.                     }
  2641.                 }
  2642.                 if($fileContratAchatSigneMultiple){
  2643.                     $array = explode(',',$fileContratAchatSigneMultiple);
  2644.                     foreach ($array as $item){
  2645.                         $fileContratAchatSigneMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2646.                         $nomenclature = $this->getNomenclature($etap,$fileContratAchatSigneMultipleEntity,'Contrat d’achat signé');
  2647.                         $etap->addFileContratAchatSigneMultiple($fileContratAchatSigneMultipleEntity);
  2648.                         $this->uploadFileToDropbox($fileContratAchatSigneMultipleEntity,$project,"Raccordement ENEDIS/".$fileContratAchatSigneMultipleEntity->getId().$nomenclature);
  2649.                     }
  2650.                 }
  2651.                 if($fileAttestionProducteurMultiple){
  2652.                     $array = explode(',',$fileAttestionProducteurMultiple);
  2653.                     foreach ($array as $item){
  2654.                         $fileAttestionProducteurMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2655.                         $nomenclature = $this->getNomenclature($etap,$fileAttestionProducteurMultipleEntity,'Attestation de producteur');
  2656.                         $etap->addFileAttestionProducteurMultiple($fileAttestionProducteurMultipleEntity);
  2657.                         $this->uploadFileToDropbox($fileAttestionProducteurMultipleEntity,$project,"Raccordement ENEDIS/".$fileAttestionProducteurMultipleEntity->getId().$nomenclature);
  2658.                     }
  2659.                 }
  2660.                 if($fileAttestionInstallateurMultiple){
  2661.                     $array = explode(',',$fileAttestionInstallateurMultiple);
  2662.                     foreach ($array as $item){
  2663.                         $fileAttestionInstallateurMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2664.                         $nomenclature = $this->getNomenclature($etap,$fileAttestionInstallateurMultipleEntity,'Attestation de l’installateur');
  2665.                         $etap->addFileAttestionInstallateurMultiple($fileAttestionInstallateurMultipleEntity);
  2666.                         $this->uploadFileToDropbox($fileAttestionInstallateurMultipleEntity,$project,"Raccordement ENEDIS/".$fileAttestionInstallateurMultipleEntity->getId().$nomenclature);
  2667.                     }
  2668.                 }
  2669.                 if($fileArContratAchatMultiple){
  2670.                     $array = explode(',',$fileArContratAchatMultiple);
  2671.                     foreach ($array as $item){
  2672.                         $fileArContratAchatMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2673.                         $nomenclature = $this->getNomenclature($etap,$fileArContratAchatMultipleEntity,'AR Contrat d’achat');
  2674.                         $etap->addFileArContratAchatMultiple($fileArContratAchatMultipleEntity);
  2675.                     }
  2676.                 }
  2677.                 if($dateDebutContratAchat){
  2678.                     $etap->setDateDebutContratAchat(new \DateTime($dateDebutContratAchat));
  2679.                 }
  2680.                 if($dateFinContratAchat){
  2681.                     $etap->setDateFinContratAchat(new \DateTime($dateFinContratAchat));
  2682.                 }
  2683.                 $etap->setTarifContratAchat($tarifContratAchat);
  2684.                 $etap->setPeridiciteFacturation($peridiciteFacturation);
  2685.                 $etap->setNumeroContratAchat($numeroContratAchat);
  2686.                 $this->em->persist($etap);
  2687.                 $this->em->flush();
  2688.                 $this->updateStatusTracker($project); // set status tracker
  2689.                 $this->flashBag->add(
  2690.                     'success',
  2691.                     'L\'opération a été effectuée avec succès.'
  2692.                 );
  2693.                 return [
  2694.                     'etap' => $etap,
  2695.                     'success' => true
  2696.                 ];
  2697.             }
  2698.         }
  2699.         return [
  2700.             'success' => false
  2701.         ];
  2702.     }
  2703.     public function submitEtap16($request,$user)
  2704.     {
  2705.         $etapToken = $request->get('etapToken');
  2706.         $tokenProject = $request->get('tokenProject');
  2707.         $contratConstruction = $request->get('contratConstruction');
  2708.         if($etapToken and $tokenProject){
  2709.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  2710.             $etap = $this->em->getRepository(Etap16::class)->findOneBy(['token'=>$etapToken]);
  2711.             if($project && $etap){
  2712.                 if(!$this->checkUserAction($user,$project,$etap)){
  2713.                     return [
  2714.                         'success' => false
  2715.                     ];
  2716.                 }
  2717.                 if($contratConstruction){
  2718.                     foreach ($contratConstruction as $itemContratConstruction){
  2719.                         if(isset($itemContratConstruction['id']) and $itemContratConstruction['id'] != ''){
  2720.                             $contratConstructionEntity = $this->em->getRepository(ContratConstruction::class)->findOneBy(['token'=>$itemContratConstruction['id']]) ;
  2721.                         }else{
  2722.                             $contratConstructionEntity = new ContratConstruction() ;
  2723.                         }
  2724.                         $contratConstructionEntity->setEtap16($etap);
  2725.                         $this->em->persist($contratConstructionEntity);
  2726.                         $this->em->flush();
  2727.                         if(isset($itemContratConstruction['fileContratEpcMultiple']) and $itemContratConstruction['fileContratEpcMultiple'] != ''){
  2728.                             $array = explode(',',$itemContratConstruction['fileContratEpcMultiple']);
  2729.                             foreach ($array as $item){
  2730.                                 $fileContratEpcMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2731.                                 if(isset($itemContratConstruction['nameContrat'])  && $contratConstructionEntity->getTitre() == 'Contrat lot Bâtiment'){
  2732.                                     $nomenclature = $this->getNomenclatureContratConstruction($etap,$fileContratEpcMultipleEntity,'Contrat lot Bâtiment',$itemContratConstruction['nameContrat']);
  2733.                                 }elseif (isset($itemContratConstruction['nameContrat'])  && $contratConstructionEntity->getTitre() == 'Contrat lot PV'){
  2734.                                     $nomenclature = $this->getNomenclatureContratConstruction($etap,$fileContratEpcMultipleEntity,'Contrat lot PV',$itemContratConstruction['nameContrat']);
  2735.                                 }elseif (isset($itemContratConstruction['nameContrat'])  && $contratConstructionEntity->getTitre() == 'Contrat EPC'){
  2736.                                     $nomenclature = $this->getNomenclatureContratConstruction($etap,$fileContratEpcMultipleEntity,'Contrat EPC',$itemContratConstruction['nameContrat']);
  2737.                                 }else{
  2738.                                     $nomenclature = $this->getNomenclature($etap,$fileContratEpcMultipleEntity,'Contrat de construction');
  2739.                                 }
  2740.                                 $contratConstructionEntity->addFileContratEpcMultiple($fileContratEpcMultipleEntity);
  2741.                                 $this->uploadFileToDropbox($fileContratEpcMultipleEntity,$project,"Contrats de development et construction/".$fileContratEpcMultipleEntity->getId().$nomenclature);
  2742.                             }
  2743.                         }
  2744.                         if(isset($itemContratConstruction['fileDemandeAgrementMultiple']) and $itemContratConstruction['fileDemandeAgrementMultiple'] != ''){
  2745.                             $array = explode(',',$itemContratConstruction['fileDemandeAgrementMultiple']);
  2746.                             foreach ($array as $item){
  2747.                                 $fileDemandeAgrementMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2748.                                 $nomenclature = $this->getNomenclature($etap,$fileDemandeAgrementMultipleEntity,'Demande d’Agrément');
  2749.                                 $contratConstructionEntity->addFileDemandeAgrementMultiple($fileDemandeAgrementMultipleEntity);
  2750.                                 $this->uploadFileToDropbox($fileDemandeAgrementMultipleEntity,$project,"Contrats de development et construction/".$fileDemandeAgrementMultipleEntity->getId().$nomenclature);
  2751.                             }
  2752.                         }
  2753.                         if(isset($itemContratConstruction['fileAnnexesMultiple']) and $itemContratConstruction['fileAnnexesMultiple'] != ''){
  2754.                             $array = explode(',',$itemContratConstruction['fileAnnexesMultiple']);
  2755.                             foreach ($array as $item){
  2756.                                 $fileAnnexesMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2757.                                 $nomenclature = $this->getNomenclature($etap,$fileAnnexesMultipleEntity,'Annexes (fiches techniques…)');
  2758.                                 $contratConstructionEntity->addFileAnnexesMultiple($fileAnnexesMultipleEntity);
  2759.                                 $this->uploadFileToDropbox($fileAnnexesMultipleEntity,$project,"Contrats de development et construction/".$fileAnnexesMultipleEntity->getId().$nomenclature);
  2760.                             }
  2761.                         }
  2762.                         if(isset($itemContratConstruction['prixEpc']) and $itemContratConstruction['prixEpc'] != ''){
  2763.                             $contratConstructionEntity->setPrixEpc($itemContratConstruction['prixEpc']);
  2764.                         }else {
  2765.                             $contratConstructionEntity->setPrixEpc(null);
  2766.                         }
  2767.                         if(isset($itemContratConstruction['nameContrat']) and $itemContratConstruction['nameContrat'] != ''){
  2768.                             $contratConstructionEntity->setNameContrat($itemContratConstruction['nameContrat']);
  2769.                         }else {
  2770.                             $contratConstructionEntity->setNameContrat(null);
  2771.                         }
  2772.                         if(isset($itemContratConstruction['fournisseurSelected']) and $itemContratConstruction['fournisseurSelected'] != 0){
  2773.                             $fournisseur = $this->em->getRepository(Fournisseur::class)->find($itemContratConstruction['fournisseurSelected']);
  2774.                             if($fournisseur){
  2775.                                 $contratConstructionEntity->setFournisseur($fournisseur);
  2776.                             }else{
  2777.                                 $contratConstructionEntity->setFournisseur(null);
  2778.                             }
  2779.                         }else {
  2780.                             $contratConstructionEntity->setFournisseur(null);
  2781.                         }
  2782.                         if(isset($itemContratConstruction['jalonsPaiement']) and $itemContratConstruction['jalonsPaiement']){
  2783.                             foreach ($itemContratConstruction['jalonsPaiement'] as $value){
  2784.                                 if(isset($value['id'])&& !empty($value['id'])){
  2785.                                     $jalonsPaiementEntity = $this->em->getRepository(JalonPaiementContratConstruction::class)->find($value['id']);
  2786.                                     if($jalonsPaiementEntity){
  2787.                                         $jalonsPaiementEntity->setNomJalonsPaiement($value['nomJalonsPaiement']);
  2788.                                         $jalonsPaiementEntity->setPourcentJalonsPaiement($value['pourcentJalonsPaiement']);
  2789.                                         $jalonsPaiementEntity->setContratConstruction($contratConstructionEntity);
  2790.                                         $this->em->persist($jalonsPaiementEntity);
  2791.                                         $this->em->flush();
  2792.                                     }
  2793.                                 }else{
  2794.                                     $jalonsPaiementEntity = new JalonPaiementContratConstruction();
  2795.                                     $jalonsPaiementEntity->setNomJalonsPaiement($value['nomJalonsPaiement']);
  2796.                                     $jalonsPaiementEntity->setPourcentJalonsPaiement($value['pourcentJalonsPaiement']);
  2797.                                     $jalonsPaiementEntity->setContratConstruction($contratConstructionEntity);
  2798.                                     $this->em->persist($jalonsPaiementEntity);
  2799.                                     $this->em->flush();
  2800.                                 }
  2801.                             }
  2802.                         }
  2803.                         if(isset($itemContratConstruction['prixAnnexe']) and  $itemContratConstruction['prixAnnexe']){
  2804.                             foreach ($itemContratConstruction['prixAnnexe'] as $value){
  2805.                                 if(isset($value['id'])&& !empty($value['id'])){
  2806.                                     $prixAnnexeEntity = $this->em->getRepository(PrixAnnexeContratConstruction::class)->find($value['id']);
  2807.                                     if($prixAnnexeEntity){
  2808.                                         $prixAnnexeEntity->setNom(isset($value['nomPrixAnnexe'])?$value['nomPrixAnnexe']:null);
  2809.                                         $prixAnnexeEntity->setPrix(isset($value['prixPrixAnnexe'])?$value['prixPrixAnnexe']:null);
  2810.                                         $prixAnnexeEntity->setContratConstruction($contratConstructionEntity);
  2811.                                         $this->em->persist($prixAnnexeEntity);
  2812.                                         $this->em->flush();
  2813.                                     }
  2814.                                 }else{
  2815.                                     $prixAnnexeEntity = new PrixAnnexeContratConstruction();
  2816.                                     $prixAnnexeEntity->setNom(isset($value['nomPrixAnnexe'])?$value['nomPrixAnnexe']:null);
  2817.                                     $prixAnnexeEntity->setPrix(isset($value['prixPrixAnnexe'])?$value['prixPrixAnnexe']:null);
  2818.                                     $prixAnnexeEntity->setContratConstruction($contratConstructionEntity);
  2819.                                     $this->em->persist($prixAnnexeEntity);
  2820.                                     $this->em->flush();
  2821.                                 }
  2822.                             }
  2823.                         }
  2824.                         $contratConstructionEntity->setEtap16($etap);
  2825.                         $this->em->persist($contratConstructionEntity);
  2826.                         $this->em->flush();
  2827.                     }
  2828.                 }
  2829.                 $this->em->persist($etap);
  2830.                 $this->em->flush();
  2831.                 $this->updateStatusTracker($project); // set status tracker
  2832.                 $this->flashBag->add(
  2833.                     'success',
  2834.                     'L\'opération a été effectuée avec succès.'
  2835.                 );
  2836.                 return [
  2837.                     'etap' => $etap,
  2838.                     'success' => true
  2839.                 ];
  2840.             }
  2841.         }
  2842.         return [
  2843.             'success' => false
  2844.         ];
  2845.     }
  2846.     public function addOrUpdateCategory($categorys,$setEtap,$etap,$project){
  2847.         if($categorys){
  2848.             foreach ($categorys as $item){
  2849.                 if(isset($item['id'])&& !empty($item['id'])){
  2850.                     $categorysEntity = $this->em->getRepository(CategoryDocument::class)->find($item['id']);
  2851.                     if($categorysEntity){
  2852.                         $categorysEntity->setName($item['nomCategorys']);
  2853.                         $categorysEntity->{$setEtap}($etap);
  2854.                         $this->em->persist($categorysEntity);
  2855.                         $this->em->flush();
  2856.                     }
  2857.                 }else{
  2858.                     $categorysEntity = new CategoryDocument();
  2859.                     $categorysEntity->setName($item['nomCategorys']);
  2860.                     $categorysEntity->{$setEtap}($etap);
  2861.                     $this->em->persist($categorysEntity);
  2862.                     $this->em->flush();
  2863.                 }
  2864.                 if(isset($item['documents'])){
  2865.                     foreach ($item['documents'] as $document){
  2866.                         if(isset($document['id'])&& !empty($document['id'])){
  2867.                             $documentEntity = $this->em->getRepository(Document::class)->find($document['id']);
  2868.                             if($documentEntity){
  2869.                                 if(isset($document['nomDocument']) && !empty($document['nomDocument'])) {
  2870.                                     $documentEntity->setName($document['nomDocument']);
  2871.                                     $documentEntity->setCategory($categorysEntity);
  2872.                                     if (isset($document['fileToken']) && !empty($document['fileToken'])) {
  2873.                                         $doc = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $document['fileToken']]);
  2874.                                         $documentEntity->setDocUpload($doc);
  2875.                                         $nomenclature = $this->getNomenclature($etap, $doc, $document['nomDocument']);
  2876.                                         $this->uploadFileToDropbox($doc, $project, "Contrats de development et construction/" . $nomenclature);
  2877.                                     }
  2878.                                     $this->em->persist($documentEntity);
  2879.                                     $this->em->flush();
  2880.                                 }
  2881.                             }
  2882.                         }else{
  2883.                             if(isset($document['nomDocument']) && !empty($document['nomDocument'])){
  2884.                                 $documentEntity = new Document();
  2885.                                 if($documentEntity){
  2886.                                     $documentEntity->setName($document['nomDocument']);
  2887.                                     $documentEntity->setCategory($categorysEntity);
  2888.                                     if(isset($document['fileToken'])&& !empty($document['fileToken'])){
  2889.                                         $doc = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$document['fileToken']]);
  2890.                                         $documentEntity->setDocUpload($doc);
  2891.                                         $nomenclature =  $this->getNomenclature($etap,$doc,$document['nomDocument']);
  2892.                                         $this->uploadFileToDropbox($doc,$project,"Contrats de development et construction/".$nomenclature);
  2893.                                     }
  2894.                                     $this->em->persist($documentEntity);
  2895.                                     $this->em->flush();
  2896.                                 }
  2897.                             }
  2898.                         }
  2899.                     }
  2900.                 }
  2901.             }
  2902.         }
  2903.     }
  2904.     public function submitEtap160($request,$user)
  2905.     {
  2906.         $biPenteAsymetrique = $request->get('biPenteAsymetrique');
  2907.         $biPenteSymetrique = $request->get('biPenteSymetrique');
  2908.         $lat = $request->get('lat');
  2909.         $longi = $request->get('longi');
  2910.         $moduleInformation = $request->get('moduleInformation');
  2911.         $onduleurInformation = $request->get('onduleurInformation');
  2912.         $dimension = $request->get('dimension');
  2913.         $toiture = $request->get('toiture');
  2914.         $fileDiagnostiqueCharpenteMultiple = $request->get('fileDiagnostiqueCharpenteMultiple');
  2915.         $fileNoticesHydrauliquesMultiple = $request->get('fileNoticesHydrauliquesMultiple');
  2916.         $fileEtudeSoleMultiple = $request->get('fileEtudeSoleMultiple');
  2917.         $fileEvaluationCarboneModuleMultiple = $request->get('fileEvaluationCarboneModuleMultiple');
  2918.         $fileFicheTechniqueModuleMultiple = $request->get('fileFicheTechniqueModuleMultiple');
  2919.         $fileFicheTechniqueOnduleurMultiple = $request->get('fileFicheTechniqueOnduleurMultiple');
  2920.         $fileAttestationBrigageOnduleurMultiple = $request->get('fileAttestationBrigageOnduleurMultiple');
  2921.         $fileFicheGarantiOnduleurMultiple = $request->get('fileFicheGarantiOnduleurMultiple');
  2922.         $fileFicheSystemeIntegrationMultiple = $request->get('fileFicheSystemeIntegrationMultiple');
  2923.         $categorys = $request->get('categorys');
  2924.         $etapToken = $request->get('etapToken');
  2925.         $tokenProject = $request->get('tokenProject');
  2926.         if($etapToken and $tokenProject){
  2927.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  2928.             $etap = $this->em->getRepository(Etap160::class)->findOneBy(['token'=>$etapToken]);
  2929.             $etap159 = $this->em->getRepository(Etap159::class)->findOneBy(['token'=>$etapToken]);
  2930.             if($project && $etap){
  2931.                 if(!$this->checkUserAction($user,$project,$etap)){
  2932.                     return [
  2933.                         'success' => false
  2934.                     ];
  2935.                 }
  2936.                 $etap159 = $this->em->getRepository(Etap159::class)->findOneBy(['project'=>$project->getId()]);
  2937.                 if($fileDiagnostiqueCharpenteMultiple){
  2938.                     $array = explode(',',$fileDiagnostiqueCharpenteMultiple);
  2939.                     foreach ($array as $item){
  2940.                         $fileDiagnostiqueCharpenteMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2941.                         $nomenclature = $this->getNomenclature($etap,$fileDiagnostiqueCharpenteMultipleEntity,'Diagnostic charpente');
  2942.                         $etap->addFileDiagnostiqueCharpenteMultiple($fileDiagnostiqueCharpenteMultipleEntity);
  2943.                         $etap159->addFileDiagnostiqueCharpente159Multiple($fileDiagnostiqueCharpenteMultipleEntity);
  2944.                         $this->uploadFileToDropbox($fileDiagnostiqueCharpenteMultipleEntity,$project,"Contrats de development et construction/".$fileDiagnostiqueCharpenteMultipleEntity->getId().$nomenclature);
  2945.                     }
  2946.                     $this->em->persist($etap159);
  2947.                     $this->em->flush();
  2948.                 }
  2949.                 if($fileNoticesHydrauliquesMultiple){
  2950.                     $array = explode(',',$fileNoticesHydrauliquesMultiple);
  2951.                     foreach ($array as $item){
  2952.                         $fileNoticesHydrauliquesMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2953.                         $nomenclature = $this->getNomenclature($etap,$fileNoticesHydrauliquesMultipleEntity,'Notices hydrauliques ou études gestion eaux pluviales');
  2954.                         $etap->addFileNoticesHydrauliquesMultiple($fileNoticesHydrauliquesMultipleEntity);
  2955.                         $this->uploadFileToDropbox($fileNoticesHydrauliquesMultipleEntity,$project,"Contrats de development et construction/".$fileNoticesHydrauliquesMultipleEntity->getId().$nomenclature);
  2956.                     }
  2957.                     $this->em->persist($etap159);
  2958.                     $this->em->flush();
  2959.                 }
  2960.                 if($fileEtudeSoleMultiple){
  2961.                     $array = explode(',',$fileEtudeSoleMultiple);
  2962.                     foreach ($array as $item){
  2963.                         $fileEtudeSoleMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2964.                         $nomenclature = $this->getNomenclature($etap,$fileEtudeSoleMultipleEntity,'Étude de sol');
  2965.                         $etap->addFileEtudeSoleMultiple($fileEtudeSoleMultipleEntity);
  2966.                         $etap159->addFileGeotechnique159Multiple($fileEtudeSoleMultipleEntity);
  2967.                         $this->uploadFileToDropbox($fileEtudeSoleMultipleEntity,$project,"Contrats de development et construction/".$fileEtudeSoleMultipleEntity->getId().$nomenclature);
  2968.                     }
  2969.                 }
  2970.                 if($fileEvaluationCarboneModuleMultiple){
  2971.                     $array = explode(',',$fileEvaluationCarboneModuleMultiple);
  2972.                     foreach ($array as $item){
  2973.                         $fileEvaluationCarboneModuleMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2974.                         $nomenclature = $this->getNomenclature($etap,$fileEvaluationCarboneModuleMultipleEntity,'Evaluation carbone des modules ');
  2975.                         $etap->addFileEvaluationCarboneModuleMultiple($fileEvaluationCarboneModuleMultipleEntity);
  2976.                         $this->uploadFileToDropbox($fileEvaluationCarboneModuleMultipleEntity,$project,"Contrats de development et construction/".$fileEvaluationCarboneModuleMultipleEntity->getId().$nomenclature);
  2977.                     }
  2978.                 }
  2979.                 if($fileFicheTechniqueModuleMultiple){
  2980.                     $array = explode(',',$fileFicheTechniqueModuleMultiple);
  2981.                     foreach ($array as $item){
  2982.                         $fileFicheTechniqueModuleMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2983.                         $nomenclature = $this->getNomenclature($etap,$fileFicheTechniqueModuleMultipleEntity,'Fiche technique modules ');
  2984.                         $etap->addFileFicheTechniqueModuleMultiple($fileFicheTechniqueModuleMultipleEntity);
  2985.                         $this->uploadFileToDropbox($fileFicheTechniqueModuleMultipleEntity,$project,"Contrats de development et construction/".$fileFicheTechniqueModuleMultipleEntity->getId().$nomenclature);
  2986.                     }
  2987.                 }
  2988.                 if($fileFicheTechniqueOnduleurMultiple){
  2989.                     $array = explode(',',$fileFicheTechniqueOnduleurMultiple);
  2990.                     foreach ($array as $item){
  2991.                         $fileFicheTechniqueOnduleurMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  2992.                         $nomenclature = $this->getNomenclature($etap,$fileFicheTechniqueOnduleurMultipleEntity,'Fiche technique onduleurs ');
  2993.                         $etap->addFileFicheTechniqueOnduleurMultiple($fileFicheTechniqueOnduleurMultipleEntity);
  2994.                         $this->uploadFileToDropbox($fileFicheTechniqueOnduleurMultipleEntity,$project,"Contrats de development et construction/".$fileFicheTechniqueOnduleurMultipleEntity->getId().$nomenclature);
  2995.                     }
  2996.                 }
  2997.                 if($fileAttestationBrigageOnduleurMultiple){
  2998.                     $array = explode(',',$fileAttestationBrigageOnduleurMultiple);
  2999.                     foreach ($array as $item){
  3000.                         $fileAttestationBrigageOnduleurMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3001.                         $nomenclature = $this->getNomenclature($etap,$fileAttestationBrigageOnduleurMultipleEntity,'Attestation de bridage  ');
  3002.                         $etap->addFileAttestationBrigageOnduleurMultiple($fileAttestationBrigageOnduleurMultipleEntity);
  3003.                         $this->uploadFileToDropbox($fileAttestationBrigageOnduleurMultipleEntity,$project,"Contrats de development et construction/".$fileAttestationBrigageOnduleurMultipleEntity->getId().$nomenclature);
  3004.                     }
  3005.                 }
  3006.                 if($fileFicheGarantiOnduleurMultiple){
  3007.                     $array = explode(',',$fileFicheGarantiOnduleurMultiple);
  3008.                     foreach ($array as $item){
  3009.                         $fileFicheGarantiOnduleurMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3010.                         $nomenclature = $this->getNomenclature($etap,$fileFicheGarantiOnduleurMultipleEntity,'Fiches de garantie onduleur');
  3011.                         $etap->addFileFicheGarantiOnduleurMultiple($fileFicheGarantiOnduleurMultipleEntity);
  3012.                         $this->uploadFileToDropbox($fileFicheGarantiOnduleurMultipleEntity,$project,"Contrats de development et construction/".$fileFicheGarantiOnduleurMultipleEntity->getId().$nomenclature);
  3013.                     }
  3014.                 }
  3015.                 if($fileFicheSystemeIntegrationMultiple){
  3016.                     $array = explode(',',$fileFicheSystemeIntegrationMultiple);
  3017.                     foreach ($array as $item){
  3018.                         $fileFicheSystemeIntegrationMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3019.                         $nomenclature = $this->getNomenclature($etap,$fileFicheSystemeIntegrationMultipleEntity,'Fiche technique système d’intégration ');
  3020.                         $etap->addFileFicheSystemeIntegrationMultiple($fileFicheSystemeIntegrationMultipleEntity);
  3021.                         $this->uploadFileToDropbox($fileFicheSystemeIntegrationMultipleEntity,$project,"Contrats de development et construction/".$fileFicheSystemeIntegrationMultipleEntity->getId().$nomenclature);
  3022.                     }
  3023.                 }
  3024.                 if($moduleInformation){
  3025.                     foreach ($moduleInformation as $item){
  3026.                         if(isset($item['id'])&& !empty($item['id'])){
  3027.                             $moduleInformationEntity = $this->em->getRepository(ModuleInformation::class)->find($item['id']);
  3028.                             if($moduleInformationEntity){
  3029.                                 $moduleInformationEntity->setMarque($item['marqueModuleInformation']);
  3030.                                 $moduleInformationEntity->setReference($item['referenceModuleInformation']);
  3031.                                 $moduleInformationEntity->setPan($item['panModuleInformation']);
  3032.                                 $moduleInformationEntity->setNbr($item['nbrModuleInformation']);
  3033.                                 $moduleInformationEntity->setEtap160($etap);
  3034.                                 $this->em->persist($moduleInformationEntity);
  3035.                                 $this->em->flush();
  3036.                             }
  3037.                         }else{
  3038.                             $moduleInformationEntity = new ModuleInformation();
  3039.                             $moduleInformationEntity->setMarque($item['marqueModuleInformation']);
  3040.                             $moduleInformationEntity->setReference($item['referenceModuleInformation']);
  3041.                             $moduleInformationEntity->setPan($item['panModuleInformation']);
  3042.                             $moduleInformationEntity->setNbr($item['nbrModuleInformation']);
  3043.                             $moduleInformationEntity->setEtap160($etap);
  3044.                             $this->em->persist($moduleInformationEntity);
  3045.                             $this->em->flush();
  3046.                         }
  3047.                     }
  3048.                 }
  3049.                 if($onduleurInformation){
  3050.                     foreach ($onduleurInformation as $item){
  3051.                         if(isset($item['id'])&& !empty($item['id'])){
  3052.                             $onduleurInformationEntity = $this->em->getRepository(OnduleurInformation::class)->find($item['id']);
  3053.                             if($onduleurInformationEntity){
  3054.                                 $onduleurInformationEntity->setMarque($item['marqueOnduleurInformation']);
  3055.                                 $onduleurInformationEntity->setPuissance($item['puissanceOnduleurInformation']);
  3056.                                 $onduleurInformationEntity->setPan($item['panOnduleurInformation']);
  3057.                                 $onduleurInformationEntity->setNbr($item['nbrOnduleurInformation']);
  3058.                                 $onduleurInformationEntity->setEtap160($etap);
  3059.                                 $this->em->persist($onduleurInformationEntity);
  3060.                                 $this->em->flush();
  3061.                             }
  3062.                         }else{
  3063.                             $onduleurInformationEntity = new OnduleurInformation();
  3064.                             $onduleurInformationEntity->setMarque($item['marqueOnduleurInformation']);
  3065.                             $onduleurInformationEntity->setPuissance($item['puissanceOnduleurInformation']);
  3066.                             $onduleurInformationEntity->setPan($item['panOnduleurInformation']);
  3067.                             $onduleurInformationEntity->setNbr($item['nbrOnduleurInformation']);
  3068.                             $onduleurInformationEntity->setEtap160($etap);
  3069.                             $this->em->persist($onduleurInformationEntity);
  3070.                             $this->em->flush();
  3071.                         }
  3072.                     }
  3073.                 }
  3074.                 if($dimension){
  3075.                     foreach ($dimension as $item){
  3076.                         if(isset($item['id'])&& !empty($item['id'])){
  3077.                             $dimensionEntity = $this->em->getRepository(DimensionEtap160::class)->find($item['id']);
  3078.                             if($dimensionEntity){
  3079.                                 $dimensionEntity->setLargeur($item['largeurDimension']);
  3080.                                 $dimensionEntity->setLangueur($item['langueurDimension']);
  3081.                                 $dimensionEntity->setHauteurFaitage($item['hauteurFaitageDimension']);
  3082.                                 $dimensionEntity->setHauteurEgout($item['hauteurEgoutDimension']);
  3083.                                 $dimensionEntity->setPan($item['panDimension']);
  3084.                                 $dimensionEntity->setEtap160($etap);
  3085.                                 $this->em->persist($dimensionEntity);
  3086.                                 $this->em->flush();
  3087.                             }
  3088.                         }else{
  3089.                             $dimensionEntity = new DimensionEtap160();
  3090.                             $dimensionEntity->setLargeur($item['largeurDimension']);
  3091.                             $dimensionEntity->setLangueur($item['langueurDimension']);
  3092.                             $dimensionEntity->setHauteurFaitage($item['hauteurFaitageDimension']);
  3093.                             $dimensionEntity->setHauteurEgout($item['hauteurEgoutDimension']);
  3094.                             $dimensionEntity->setPan($item['panDimension']);
  3095.                             $dimensionEntity->setEtap160($etap);
  3096.                             $this->em->persist($dimensionEntity);
  3097.                             $this->em->flush();
  3098.                         }
  3099.                     }
  3100.                 }
  3101.                 if($toiture){
  3102.                     foreach ($toiture as $item){
  3103.                         if(isset($item['id'])&& !empty($item['id'])){
  3104.                             $toitureEntity = $this->em->getRepository(Toiture160::class)->find($item['id']);
  3105.                             if($toitureEntity){
  3106.                                 $toitureEntity->setTypeCouverture($item['typeCouvertureToiture']);
  3107.                                 $toitureEntity->setAngleToiture($item['angleToitureToiture']);
  3108.                                 $toitureEntity->setAzimutToiture($item['azimutToitureToiture']);
  3109.                                 $toitureEntity->setPan($item['panToiture']);
  3110.                                 $toitureEntity->setEtap160($etap);
  3111.                                 $this->em->persist($toitureEntity);
  3112.                                 $this->em->flush();
  3113.                             }
  3114.                         }else{
  3115.                             $toitureEntity = new Toiture160();
  3116.                             $toitureEntity->setTypeCouverture($item['typeCouvertureToiture']);
  3117.                             $toitureEntity->setAngleToiture($item['angleToitureToiture']);
  3118.                             $toitureEntity->setAzimutToiture($item['azimutToitureToiture']);
  3119.                             $toitureEntity->setPan($item['panToiture']);
  3120.                             $toitureEntity->setEtap160($etap);
  3121.                             $this->em->persist($toitureEntity);
  3122.                             $this->em->flush();
  3123.                         }
  3124.                     }
  3125.                 }
  3126.                 $this->addOrUpdateCategory($categorys,'setEtap160',$etap,$project);
  3127.                 $etap->setBiPenteAsymetrique($biPenteAsymetrique);
  3128.                 $etap->setBiPenteSymetrique($biPenteSymetrique);
  3129.                 // Coordonnées GPS : séparateur décimal point obligatoire
  3130.                 $lat = $lat ? str_replace(',', '.', str_replace(' ', '', $lat)) : $lat;
  3131.                 $longi = $longi ? str_replace(',', '.', str_replace(' ', '', $longi)) : $longi;
  3132.                 $etap->setLat($lat);
  3133.                 $etap->setLongi($longi);
  3134.                 $project->setLat($longi);
  3135.                 $project->setLongi($lat);
  3136.                 $this->em->persist($etap);
  3137.                 $this->em->flush();
  3138.                 $this->updateStatusTracker($project); // set status tracker
  3139.                 $this->flashBag->add(
  3140.                     'success',
  3141.                     'L\'opération a été effectuée avec succès.'
  3142.                 );
  3143.                 return [
  3144.                     'etap' => $etap,
  3145.                     'success' => true
  3146.                 ];
  3147.             }
  3148.         }
  3149.         return [
  3150.             'success' => false
  3151.         ];
  3152.     }
  3153.     public function submitEtap161($request,$user)
  3154.     {
  3155.         $fileQualiPVInstallateurMultiple = $request->get('fileQualiPVInstallateurMultiple');
  3156.         $categorys = $request->get('categorys');
  3157.         $etapToken = $request->get('etapToken');
  3158.         $tokenProject = $request->get('tokenProject');
  3159.         if($etapToken and $tokenProject){
  3160.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  3161.             $etap = $this->em->getRepository(Etap161::class)->findOneBy(['token'=>$etapToken]);
  3162.             if($project && $etap){
  3163.                 if(!$this->checkUserAction($user,$project,$etap)){
  3164.                     return [
  3165.                         'success' => false
  3166.                     ];
  3167.                 }
  3168.                 if($fileQualiPVInstallateurMultiple){
  3169.                     $array = explode(',',$fileQualiPVInstallateurMultiple);
  3170.                     foreach ($array as $item){
  3171.                         $fileQualiPVInstallateurMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3172.                         $nomenclature = $this->getNomenclature($etap,$fileQualiPVInstallateurMultipleEntity,'QualiPV de l’installateur');
  3173.                         $etap->addFileQualiPVInstallateurMultiple($fileQualiPVInstallateurMultipleEntity);
  3174.                         $this->uploadFileToDropbox($fileQualiPVInstallateurMultipleEntity,$project,"Raccordement ENEDIS/".$fileQualiPVInstallateurMultipleEntity->getId().$nomenclature);
  3175.                     }
  3176.                 }
  3177.                 $this->addOrUpdateCategory($categorys,'setEtap161',$etap,$project);
  3178.                 $this->em->persist($etap);
  3179.                 $this->em->flush();
  3180.                 $this->updateStatusTracker($project); // set status tracker
  3181.                 $this->flashBag->add(
  3182.                     'success',
  3183.                     'L\'opération a été effectuée avec succès.'
  3184.                 );
  3185.                 return [
  3186.                     'etap' => $etap,
  3187.                     'success' => true
  3188.                 ];
  3189.             }
  3190.         }
  3191.         return [
  3192.             'success' => false
  3193.         ];
  3194.     }
  3195.     public function addEtap601()
  3196.     {
  3197.         $projects = $this->em->getRepository(Project::class)->findAll();
  3198.         foreach ($projects as $project){
  3199.             $etap6 = $this->em->getRepository(Etap6::class)->findOneBy(['project'=>$project->getId()]);
  3200.             $etap601 = $this->em->getRepository(Etap601::class)->findOneBy(['project'=>$project->getId()]);
  3201.             $etap = $this->em->getRepository(Etaps::class)->findOneBy(['num'=>Etaps::ETAP_601]);
  3202.             if(!$etap601){
  3203.                 $etap601 = new Etap601();
  3204.                 $etap601->setProject($project);
  3205.                 $etap601->setEtap($etap);
  3206.                 if($etap6 && count($etap6->getFileEtatDecriptifMultiple()) > 0){
  3207.                     foreach ($etap6->getFileEtatDecriptifMultiple() as $item){
  3208.                         $etap601->addFileEtatDecriptifMultiple($item);
  3209.                     }
  3210.                 }
  3211.                 $etap601->setStatus(Etaps::STATUS_EN_COURS);
  3212.                 $this->em->persist($etap601);
  3213.                 $this->em->flush();
  3214.             }
  3215.         }
  3216.     }
  3217.     public function addEtap602()
  3218.     {
  3219.         $projects = $this->em->getRepository(Project::class)->findAll();
  3220.         foreach ($projects as $project){
  3221.             $etap6 = $this->em->getRepository(Etap6::class)->findOneBy(['project'=>$project->getId()]);
  3222.             $etap602 = $this->em->getRepository(Etap602::class)->findOneBy(['project'=>$project->getId()]);
  3223.             $etap = $this->em->getRepository(Etaps::class)->findOneBy(['num'=>Etaps::ETAP_602]);
  3224.             if(!$etap602){
  3225.                 $etap602 = new Etap602();
  3226.                 $etap602->setProject($project);
  3227.                 $etap602->setEtap($etap);
  3228.                 if($etap6 && count($etap6->getFileProcurationBailleur()) > 0){
  3229.                     foreach ($etap6->getFileProcurationBailleur() as $item){
  3230.                         $etap602->addFileProcurationBailleur($item);
  3231.                     }
  3232.                 }
  3233.                 $etap602->setStatus(Etaps::STATUS_EN_COURS);
  3234.                 $this->em->persist($etap602);
  3235.                 $this->em->flush();
  3236.             }
  3237.         }
  3238.     }
  3239.     public function addEtap0()
  3240.     {
  3241.         $projects = $this->em->getRepository(Project::class)->findAll();
  3242.         foreach ($projects as $project){
  3243.             $etap0 = $this->em->getRepository(Etap0::class)->findOneBy(['project'=>$project->getId()]);
  3244.             $etap = $this->em->getRepository(Etaps::class)->findOneBy(['num'=>Etaps::ETAP_0]);
  3245.             if(!$etap0){
  3246.                 $etap0 = new Etap0();
  3247.                 $etap0->setProject($project);
  3248.                 $etap0->setEtap($etap);
  3249.                 $etap0->setStatus(Etaps::STATUS_EN_COURS);
  3250.                 $this->em->persist($etap0);
  3251.                 $this->em->flush();
  3252.             }
  3253.         }
  3254.     }
  3255.     public function addEtap121()
  3256.     {
  3257.         $projects = $this->em->getRepository(Project::class)->findAll();
  3258.         foreach ($projects as $project){
  3259.             $etap121 = $this->em->getRepository(Etap121::class)->findOneBy(['project'=>$project->getId()]);
  3260.             $etap = $this->em->getRepository(Etaps::class)->findOneBy(['num'=>Etaps::ETAP_121]);
  3261.             if(!$etap121){
  3262.                 $etap121 = new Etap121();
  3263.                 $etap121->setProject($project);
  3264.                 $etap121->setEtap($etap);
  3265.                 $etap121->setStatus(Etaps::STATUS_EN_COURS);
  3266.                 $this->em->persist($etap121);
  3267.                 $this->em->flush();
  3268.             }
  3269.         }
  3270.     }
  3271.     public function addEtap159()
  3272.     {
  3273.         $projects = $this->em->getRepository(Project::class)->findAll();
  3274.         foreach ($projects as $project){
  3275.             $etap159 = $this->em->getRepository(Etap159::class)->findOneBy(['project'=>$project->getId()]);
  3276.             $etap = $this->em->getRepository(Etaps::class)->findOneBy(['num'=>Etaps::ETAP_159]);
  3277.             if(!$etap159){
  3278.                 $etap159 = new Etap159();
  3279.                 $etap159->setProject($project);
  3280.                 $etap159->setEtap($etap);
  3281.                 $etap159->setStatus(Etaps::STATUS_EN_COURS);
  3282.                 $this->em->persist($etap159);
  3283.                 $this->em->flush();
  3284.             }
  3285.         }
  3286.     }
  3287.     public function addEtap23()
  3288.     {
  3289.         $projects = $this->em->getRepository(Project::class)->findAll();
  3290.         foreach ($projects as $project){
  3291.             $etap23 = $this->em->getRepository(Etap23::class)->findOneBy(['project'=>$project->getId()]);
  3292.             $etap = $this->em->getRepository(Etaps::class)->findOneBy(['num'=>Etaps::ETAP_23]);
  3293.             if(!$etap23){
  3294.                 $etap23 = new Etap23();
  3295.                 $etap23->setProject($project);
  3296.                 $etap23->setEtap($etap);
  3297.                 $etap23->setStatus(Etaps::STATUS_EN_COURS);
  3298.                 $this->em->persist($etap23);
  3299.                 $this->em->flush();
  3300.             }
  3301.         }
  3302.     }
  3303.     public function copyEtap16ToContratConstruction()
  3304.     {
  3305.         $projects = $this->em->getRepository(Project::class)->findAll();
  3306.         foreach ($projects as $project){
  3307.             $etap16 = $this->em->getRepository(Etap16::class)->findOneBy(['project'=>$project->getId()]);
  3308.             if($etap16 and count($etap16->getContratConstruction()) == 0){
  3309.                 $contratConstruction = new ContratConstruction();
  3310.                 $contratConstruction->setEtap16($etap16);
  3311.                 $contratConstruction->setPrixEpc($etap16->getPrixEpc());
  3312.                 $this->em->persist($contratConstruction);
  3313.                 $this->em->flush();
  3314.                 $fileContratEpcMultiples = $etap16->getFileContratEpcMultiple();
  3315.                 $fileAnnexesMultiple = $etap16->getFileAnnexesMultiple();
  3316.                 $jalonPaiements = $etap16->getJalonPaiement();
  3317.                 $prixAnnexes = $etap16->getPrixAnnexe();
  3318.                 if($fileAnnexesMultiple){
  3319.                     foreach ($fileAnnexesMultiple as $item){
  3320.                         $contratConstruction->addFileAnnexesMultiple($item);
  3321.                     }
  3322.                 }
  3323.                 if($fileContratEpcMultiples){
  3324.                     foreach ($fileContratEpcMultiples as $item){
  3325.                         $contratConstruction->addFileContratEpcMultiple($item);
  3326.                     }
  3327.                 }
  3328.                 if($jalonPaiements){
  3329.                     foreach ($jalonPaiements as $item){
  3330.                         $jalonPaiementEntity = new JalonPaiementContratConstruction();
  3331.                         $jalonPaiementEntity->setContratConstruction($contratConstruction);
  3332.                         $jalonPaiementEntity->setNomJalonsPaiement($item->getNomJalonsPaiement());
  3333.                         $jalonPaiementEntity->setPourcentJalonsPaiement($item->getPourcentJalonsPaiement());
  3334.                         $this->em->persist($jalonPaiementEntity);
  3335.                         $this->em->flush();
  3336.                     }
  3337.                 }
  3338.                 if($prixAnnexes){
  3339.                     foreach ($prixAnnexes as $item){
  3340.                         $prixAnnexeEntity = new PrixAnnexeContratConstruction();
  3341.                         $prixAnnexeEntity->setContratConstruction($contratConstruction);
  3342.                         $prixAnnexeEntity->setNom($item->getNom());
  3343.                         $prixAnnexeEntity->setPrix($item->getPrix());
  3344.                         $this->em->persist($prixAnnexeEntity);
  3345.                         $this->em->flush();
  3346.                     }
  3347.                 }
  3348.                 $this->em->persist($contratConstruction);
  3349.                 $this->em->flush();
  3350.             }
  3351.         }
  3352.     }
  3353.     public function submitEtap17($request,$user)
  3354.     {
  3355.         $filePlanExecution = $request->get('filePlanExecution');
  3356.         $fileDocumentGeometre = $request->get('fileDocumentGeometre');
  3357.         $etapToken = $request->get('etapToken');
  3358.         $tokenProject = $request->get('tokenProject');
  3359.         if($etapToken and $tokenProject){
  3360.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  3361.             $etap = $this->em->getRepository(Etap17::class)->findOneBy(['token'=>$etapToken]);
  3362.             if($project && $etap){
  3363.                 if(!$this->checkUserAction($user,$project,$etap)){
  3364.                     return [
  3365.                         'success' => false
  3366.                     ];
  3367.                 }
  3368.                 if($filePlanExecution){
  3369.                     $array = explode(',',$filePlanExecution);
  3370.                     foreach ($array as $item){
  3371.                         $filePlanExecutionEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3372.                         $nomenclature =  $this->getNomenclature($etap,$filePlanExecutionEntity,'Plan exécution et étude de structure');
  3373.                         $etap->addFilePlanExecution($filePlanExecutionEntity);
  3374.                         $this->uploadFileToDropbox($filePlanExecutionEntity,$project,"Contrats de development et construction/".$filePlanExecutionEntity->getId().$nomenclature);
  3375.                     }
  3376.                 }
  3377.                 if($fileDocumentGeometre){
  3378.                     $array = explode(',',$fileDocumentGeometre);
  3379.                     foreach ($array as $item){
  3380.                         $fileDocumentGeometreEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3381.                         $nomenclature = $this->getNomenclature($etap,$fileDocumentGeometreEntity,'Documents de géomètre');
  3382.                         $etap->addFileDocumentGeometre($fileDocumentGeometreEntity);
  3383.                         $this->uploadFileToDropbox($fileDocumentGeometreEntity,$project,"Contrats de development et construction/".$fileDocumentGeometreEntity->getId().$nomenclature);
  3384.                     }
  3385.                 }
  3386.                 $this->em->persist($etap);
  3387.                 $this->em->flush();
  3388.                 $this->updateStatusTracker($project); // set status tracker
  3389.                 $this->flashBag->add(
  3390.                     'success',
  3391.                     'L\'opération a été effectuée avec succès.'
  3392.                 );
  3393.                 return [
  3394.                     'etap' => $etap,
  3395.                     'success' => true
  3396.                 ];
  3397.             }
  3398.         }
  3399.         return [
  3400.             'success' => false
  3401.         ];
  3402.     }
  3403.     public function submitEtap18($request,$user)
  3404.     {
  3405.         $filePhotosFondation = $request->get('filePhotosFondation');
  3406.         $dateFinDesFondation = $request->get('dateFinDesFondation');
  3407.         $etapToken = $request->get('etapToken');
  3408.         $tokenProject = $request->get('tokenProject');
  3409.         if($etapToken and $tokenProject){
  3410.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  3411.             $etap = $this->em->getRepository(Etap18::class)->findOneBy(['token'=>$etapToken]);
  3412.             if($project && $etap){
  3413.                 if(!$this->checkUserAction($user,$project,$etap)){
  3414.                     return [
  3415.                         'success' => false
  3416.                     ];
  3417.                 }
  3418.                 if($filePhotosFondation){
  3419.                     $array = explode(',',$filePhotosFondation);
  3420.                     foreach ($array as $item){
  3421.                         $filePhotosFondationEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3422.                         $nomenclature =  $this->getNomenclature($etap,$filePhotosFondationEntity,'Photos des fondations');
  3423.                         $etap->addFilePhotosFondation($filePhotosFondationEntity);
  3424.                         $this->uploadFileToDropbox($filePhotosFondationEntity,$project,"Contrats de development et construction/".$filePhotosFondationEntity->getId().$nomenclature);
  3425.                     }
  3426.                 }
  3427.                 if($dateFinDesFondation){
  3428.                     $etap->setDateFinDesFondation(new \DateTime($dateFinDesFondation));
  3429.                 }else{
  3430.                     $etap->setDateFinDesFondation(null);
  3431.                 }
  3432.                 $this->em->persist($etap);
  3433.                 $this->em->flush();
  3434.                 $this->updateStatusTracker($project); // set status tracker
  3435.                 $this->flashBag->add(
  3436.                     'success',
  3437.                     'L\'opération a été effectuée avec succès.'
  3438.                 );
  3439.                 return [
  3440.                     'etap' => $etap,
  3441.                     'success' => true
  3442.                 ];
  3443.             }
  3444.         }
  3445.         return [
  3446.             'success' => false
  3447.         ];
  3448.     }
  3449.     public function submitEtap19($request,$user)
  3450.     {
  3451.         $filePhotosBatiment = $request->get('filePhotosBatiment');
  3452.         $dateFinBatiment = $request->get('dateFinBatiment');
  3453.         $datePosePv = $request->get('datePosePv');
  3454.         $etapToken = $request->get('etapToken');
  3455.         $tokenProject = $request->get('tokenProject');
  3456.         if($etapToken and $tokenProject){
  3457.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  3458.             $etap = $this->em->getRepository(Etap19::class)->findOneBy(['token'=>$etapToken]);
  3459.             if($project && $etap){
  3460.                 if(!$this->checkUserAction($user,$project,$etap)){
  3461.                     return [
  3462.                         'success' => false
  3463.                     ];
  3464.                 }
  3465.                 if($filePhotosBatiment){
  3466.                     $filePhotosBatimentEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$filePhotosBatiment]);
  3467.                     $nomenclature = $this->getNomenclature($etap,$filePhotosBatimentEntity,'Photos du bâtiment');
  3468.                     $etap->setFilePhotosBatiment($filePhotosBatimentEntity);
  3469.                     $this->uploadFileToDropbox($filePhotosBatimentEntity,$project,"Contrats de development et construction/".$nomenclature);
  3470.                 }
  3471.                 if($dateFinBatiment){
  3472.                     $etap->setDateFinBatiment(new \DateTime($dateFinBatiment));
  3473.                 }else{
  3474.                     $etap->setDateFinBatiment(null);
  3475.                 }
  3476.                 if($datePosePv){
  3477.                     $etap->setDatePosePv(new \DateTime($datePosePv));
  3478.                 }else{
  3479.                     $etap->setDatePosePv(null);
  3480.                 }
  3481.                 $this->em->persist($etap);
  3482.                 $this->em->flush();
  3483.                 $this->updateStatusTracker($project); // set status tracker
  3484.                 $this->flashBag->add(
  3485.                     'success',
  3486.                     'L\'opération a été effectuée avec succès.'
  3487.                 );
  3488.                 return [
  3489.                     'etap' => $etap,
  3490.                     'success' => true
  3491.                 ];
  3492.             }
  3493.         }
  3494.         return [
  3495.             'success' => false
  3496.         ];
  3497.     }
  3498.     public function submitEtap20($request,$user)
  3499.     {
  3500.         $fileConsuelEtap20Multiple = $request->get('fileConsuelEtap20Multiple');
  3501.         $dateConsuelEtap20 = $request->get('dateConsuelEtap20');
  3502.         $etapToken = $request->get('etapToken');
  3503.         $tokenProject = $request->get('tokenProject');
  3504.         if($etapToken and $tokenProject){
  3505.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  3506.             $etap = $this->em->getRepository(Etap20::class)->findOneBy(['token'=>$etapToken]);
  3507.             if($project && $etap){
  3508.                 $etap13 = $this->em->getRepository(Etap13::class)->findOneBy(['project'=>$project->getId()]);
  3509.                 if(!$this->checkUserAction($user,$project,$etap)){
  3510.                     return [
  3511.                         'success' => false
  3512.                     ];
  3513.                 }
  3514.                 if($fileConsuelEtap20Multiple){
  3515.                     $array = explode(',',$fileConsuelEtap20Multiple);
  3516.                     foreach ($array as $item){
  3517.                         $fileConsuelEtap20MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3518.                         $nomenclature = $this->getNomenclature($etap,$fileConsuelEtap20MultipleEntity,'Consuel');
  3519.                         $etap->addFileConsuelEtap20Multiple($fileConsuelEtap20MultipleEntity);
  3520.                         $etap13->addFileConsuelMultiple($fileConsuelEtap20MultipleEntity);
  3521.                         $this->uploadFileToDropbox($fileConsuelEtap20MultipleEntity,$project,"Contrats de development et construction/".$fileConsuelEtap20MultipleEntity->getId().$nomenclature);
  3522.                     }
  3523.                 }
  3524.                 if($dateConsuelEtap20){
  3525.                     $etap->setDateConsuelEtap20(new \DateTime($dateConsuelEtap20));
  3526.                     $etap13->setDateConsuel(new \DateTime($dateConsuelEtap20));
  3527.                 }else{
  3528.                     $etap->setDateConsuelEtap20(null);
  3529.                     $etap13->setDateConsuel(null);
  3530.                 }
  3531.                 $this->em->persist($etap);
  3532.                 $this->em->persist($etap13);
  3533.                 $this->em->flush();
  3534.                 $this->updateStatusTracker($project); // set status tracker
  3535.                 $this->flashBag->add(
  3536.                     'success',
  3537.                     'L\'opération a été effectuée avec succès.'
  3538.                 );
  3539.                 return [
  3540.                     'etap' => $etap,
  3541.                     'success' => true
  3542.                 ];
  3543.             }
  3544.         }
  3545.         return [
  3546.             'success' => false
  3547.         ];
  3548.     }
  3549.     public function submitEtap201($request,$user)
  3550.     {
  3551.         $fileDoeEtap201Multiple = $request->get('fileDoeEtap201Multiple');
  3552.         $etapToken = $request->get('etapToken');
  3553.         $tokenProject = $request->get('tokenProject');
  3554.         if($etapToken and $tokenProject){
  3555.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  3556.             $etap = $this->em->getRepository(Etap201::class)->findOneBy(['token'=>$etapToken]);
  3557.             if($project && $etap){
  3558.                 if(!$this->checkUserAction($user,$project,$etap)){
  3559.                     return [
  3560.                         'success' => false
  3561.                     ];
  3562.                 }
  3563.                 if($fileDoeEtap201Multiple){
  3564.                     $array = explode(',',$fileDoeEtap201Multiple);
  3565.                     foreach ($array as $item){
  3566.                         $fileDoeEtap201MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3567.                         $nomenclature = $this->getNomenclature($etap,$fileDoeEtap201MultipleEntity,'DOE');
  3568.                         $etap->addFileDoeEtap201Multiple($fileDoeEtap201MultipleEntity);
  3569.                         $this->uploadFileToDropbox($fileDoeEtap201MultipleEntity,$project,"Contrats de development et construction/".$fileDoeEtap201MultipleEntity->getId().$nomenclature);
  3570.                     }
  3571.                 }
  3572.                 $this->em->persist($etap);
  3573.                 $this->em->flush();
  3574.                 $this->updateStatusTracker($project); // set status tracker
  3575.                 $this->flashBag->add(
  3576.                     'success',
  3577.                     'L\'opération a été effectuée avec succès.'
  3578.                 );
  3579.                 return [
  3580.                     'etap' => $etap,
  3581.                     'success' => true
  3582.                 ];
  3583.             }
  3584.         }
  3585.         return [
  3586.             'success' => false
  3587.         ];
  3588.     }
  3589.     public function submitEtap21($request,$user)
  3590.     {
  3591.         $fileTestReceptionMultiple = $request->get('fileTestReceptionMultiple');
  3592.         $dateRaccordement = $request->get('dateRaccordement');
  3593.         $dateMiseEnService = $request->get('dateMiseEnService');
  3594.         $etapToken = $request->get('etapToken');
  3595.         $tokenProject = $request->get('tokenProject');
  3596.         if($etapToken and $tokenProject){
  3597.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  3598.             $etap = $this->em->getRepository(Etap21::class)->findOneBy(['token'=>$etapToken]);
  3599.             if($project && $etap){
  3600.                 $etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project'=>$project->getId()]);
  3601.                 if(!$this->checkUserAction($user,$project,$etap)){
  3602.                     return [
  3603.                         'success' => false
  3604.                     ];
  3605.                 }
  3606.                 if($fileTestReceptionMultiple){
  3607.                     $array = explode(',',$fileTestReceptionMultiple);
  3608.                     foreach ($array as $item){
  3609.                         $fileTestReceptionMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3610.                         $nomenclature = $this->getNomenclature($etap,$fileTestReceptionMultipleEntity,'tests de réception');
  3611.                         $etap->addFileTestReceptionMultiple($fileTestReceptionMultipleEntity);
  3612.                         $this->uploadFileToDropbox($fileTestReceptionMultipleEntity,$project,"Contrats de development et construction/".$fileTestReceptionMultipleEntity->getId().$nomenclature);
  3613.                     }
  3614.                 }
  3615.                 if($dateRaccordement){
  3616.                     $etap->setDateRaccordement(new \DateTime($dateRaccordement));
  3617.                 }else{
  3618.                     $etap->setDateRaccordement(null);
  3619.                 }
  3620.                 if($dateMiseEnService){
  3621.                     $etap->setDateMiseEnService(new \DateTime($dateMiseEnService));
  3622.                     $etap14->setDateMiseEnService(new \DateTime($dateMiseEnService));
  3623.                     $project->setDateMiseEnService(new \DateTime($dateMiseEnService));
  3624.                 }else{
  3625.                     $etap->setDateMiseEnService(null);
  3626.                     $etap14->setDateMiseEnService(null);
  3627.                     $project->setDateMiseEnService(null);
  3628.                 }
  3629.                 $this->em->persist($etap);
  3630.                 $this->em->flush();
  3631.                 $this->updateStatusTracker($project); // set status tracker
  3632.                 $this->flashBag->add(
  3633.                     'success',
  3634.                     'L\'opération a été effectuée avec succès.'
  3635.                 );
  3636.                 return [
  3637.                     'etap' => $etap,
  3638.                     'success' => true
  3639.                 ];
  3640.             }
  3641.         }
  3642.         return [
  3643.             'success' => false
  3644.         ];
  3645.     }
  3646.     public function submitEtap22($request,$user)
  3647.     {
  3648.         $fileTestPrMultiple = $request->get('fileTestPrMultiple');
  3649.         $etapToken = $request->get('etapToken');
  3650.         $tokenProject = $request->get('tokenProject');
  3651.         if($etapToken and $tokenProject){
  3652.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  3653.             $etap = $this->em->getRepository(Etap22::class)->findOneBy(['token'=>$etapToken]);
  3654.             if($project && $etap){
  3655.                 if(!$this->checkUserAction($user,$project,$etap)){
  3656.                     return [
  3657.                         'success' => false
  3658.                     ];
  3659.                 }
  3660.                 if($fileTestPrMultiple){
  3661.                     $array = explode(',',$fileTestPrMultiple);
  3662.                     foreach ($array as $item){
  3663.                         $fileTestPrMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3664.                         $nomenclature = $this->getNomenclature($etap,$fileTestPrMultipleEntity,'Tests de PR');
  3665.                         $etap->addFileTestPrMultiple($fileTestPrMultipleEntity);
  3666.                         $this->uploadFileToDropbox($fileTestPrMultipleEntity,$project,"Contrats de development et construction/".$fileTestPrMultipleEntity->getId().$nomenclature);
  3667.                     }
  3668.                 }
  3669.                 $this->em->persist($etap);
  3670.                 $this->em->flush();
  3671.                 $this->updateStatusTracker($project); // set status tracker
  3672.                 $this->flashBag->add(
  3673.                     'success',
  3674.                     'L\'opération a été effectuée avec succès.'
  3675.                 );
  3676.                 return [
  3677.                     'etap' => $etap,
  3678.                     'success' => true
  3679.                 ];
  3680.             }
  3681.         }
  3682.         return [
  3683.             'success' => false
  3684.         ];
  3685.     }
  3686.     public function submitEtap171($request,$user)
  3687.     {
  3688.         $filePVDemarrageMultiple = $request->get('filePVDemarrageMultiple');
  3689.         $fileDocEtap171Multiple = $request->get('fileDocEtap171Multiple');
  3690.         $fileOrderServiceMultiple = $request->get('fileOrderServiceMultiple');
  3691.         $filePlanningPrevisionnelMultiple = $request->get('filePlanningPrevisionnelMultiple');
  3692.         $fileCheminAccesMultiple = $request->get('fileCheminAccesMultiple');
  3693.         $filePhotosPlateformeMultiple = $request->get('filePhotosPlateformeMultiple');
  3694.         $dateRealisationPlateforme = $request->get('dateRealisationPlateforme');
  3695.         $chemainAcces = $request->get('chemainAcces');
  3696.         $filePGCMultiple = $request->get('filePGCMultiple');
  3697.         $fileRapportVisiteSpsMultiple = $request->get('fileRapportVisiteSpsMultiple');
  3698.         $fileDIUOMultiple = $request->get('fileDIUOMultiple');
  3699.         $fileHarmonisationMultiple = $request->get('fileHarmonisationMultiple');
  3700.         $filePPSPSMultiple = $request->get('filePPSPSMultiple');
  3701.         $fileMissionLLEMultiple = $request->get('fileMissionLLEMultiple');
  3702.         $categorys = $request->get('categorys');
  3703.         $etapToken = $request->get('etapToken');
  3704.         $tokenProject = $request->get('tokenProject');
  3705.         if($etapToken and $tokenProject){
  3706.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  3707.             $etap = $this->em->getRepository(Etap171::class)->findOneBy(['token'=>$etapToken]);
  3708.             if($project && $etap){
  3709.                 if(!$this->checkUserAction($user,$project,$etap)){
  3710.                     return [
  3711.                         'success' => false
  3712.                     ];
  3713.                 }
  3714.                 if($filePVDemarrageMultiple){
  3715.                     $array = explode(',',$filePVDemarrageMultiple);
  3716.                     foreach ($array as $item){
  3717.                         $filePVDemarrageMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3718.                        if($filePVDemarrageMultipleEntity){
  3719.                             $nomenclature = $this->getNomenclature($etap,$filePVDemarrageMultipleEntity,'PV de démarrage');
  3720.                             $etap->addFilePVDemarrageMultiple($filePVDemarrageMultipleEntity);
  3721.                             $this->uploadFileToDropbox($filePVDemarrageMultipleEntity,$project,"Contrats de development et construction/".$filePVDemarrageMultipleEntity->getId().$nomenclature);
  3722.                        }
  3723.                     }
  3724.                 }
  3725.                 if($fileDocEtap171Multiple){
  3726.                     $array = explode(',',$fileDocEtap171Multiple);
  3727.                     foreach ($array as $item){
  3728.                         $fileDocEtap171MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3729.                         if($fileDocEtap171MultipleEntity){
  3730.                            $nomenclature = $this->getNomenclature($etap,$fileDocEtap171MultipleEntity,'DOC');
  3731.                            $etap->addFileDocEtap171Multiple($fileDocEtap171MultipleEntity);
  3732.                            $this->uploadFileToDropbox($fileDocEtap171MultipleEntity,$project,"Contrats de development et construction/".$fileDocEtap171MultipleEntity->getId().$nomenclature);
  3733.                         }
  3734.                      }
  3735.                 }
  3736.                 if($fileOrderServiceMultiple){
  3737.                     $array = explode(',',$fileOrderServiceMultiple);
  3738.                     foreach ($array as $item){
  3739.                         $fileOrderServiceMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3740.                         $nomenclature = $this->getNomenclature($etap,$fileOrderServiceMultipleEntity,'Ordre de service');
  3741.                         $etap->addFileOrderServiceMultiple($fileOrderServiceMultipleEntity);
  3742.                         $this->uploadFileToDropbox($fileOrderServiceMultipleEntity,$project,"Contrats de development et construction/".$fileOrderServiceMultipleEntity->getId().$nomenclature);
  3743.                     }
  3744.                 }
  3745.                 if($filePlanningPrevisionnelMultiple){
  3746.                     $array = explode(',',$filePlanningPrevisionnelMultiple);
  3747.                     foreach ($array as $item){
  3748.                         $filePlanningPrevisionnelMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3749.                         $nomenclature = $this->getNomenclature($etap,$filePlanningPrevisionnelMultipleEntity,'Planning prévisionnel');
  3750.                         $etap->addFilePlanningPrevisionnelMultiple($filePlanningPrevisionnelMultipleEntity);
  3751.                         $this->uploadFileToDropbox($filePlanningPrevisionnelMultipleEntity,$project,"Contrats de development et construction/".$filePlanningPrevisionnelMultipleEntity->getId().$nomenclature);
  3752.                     }
  3753.                 }
  3754.                 if($fileCheminAccesMultiple){
  3755.                     $array = explode(',',$fileCheminAccesMultiple);
  3756.                     foreach ($array as $item){
  3757.                         $fileCheminAccesMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3758.                         $nomenclature = $this->getNomenclature($etap,$fileCheminAccesMultipleEntity,'Chemin d’accès');
  3759.                         $etap->addFileCheminAccesMultiple($fileCheminAccesMultipleEntity);
  3760.                         $this->uploadFileToDropbox($fileCheminAccesMultipleEntity,$project,"Contrats de development et construction/".$fileCheminAccesMultipleEntity->getId().$nomenclature);
  3761.                     }
  3762.                 }
  3763.                 if($filePhotosPlateformeMultiple){
  3764.                     $array = explode(',',$filePhotosPlateformeMultiple);
  3765.                     foreach ($array as $item){
  3766.                         $filePhotosPlateformeMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3767.                         $nomenclature = $this->getNomenclature($etap,$filePhotosPlateformeMultipleEntity,'Photos de la plateforme');
  3768.                         $etap->addFilePhotosPlateformeMultiple($filePhotosPlateformeMultipleEntity);
  3769.                         $this->uploadFileToDropbox($filePhotosPlateformeMultipleEntity,$project,"Contrats de development et construction/".$filePhotosPlateformeMultipleEntity->getId().$nomenclature);
  3770.                     }
  3771.                 }
  3772.                 if($filePGCMultiple){
  3773.                     $array = explode(',',$filePGCMultiple);
  3774.                     foreach ($array as $item){
  3775.                         $filePGCMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3776.                         $nomenclature = $this->getNomenclature($etap,$filePGCMultipleEntity,'PGC ');
  3777.                         $etap->addFilePGCMultiple($filePGCMultipleEntity);
  3778.                         $this->uploadFileToDropbox($filePGCMultipleEntity,$project,"Contrats de development et construction/".$filePGCMultipleEntity->getId().$nomenclature);
  3779.                     }
  3780.                 }
  3781.                 if($fileRapportVisiteSpsMultiple){
  3782.                     $array = explode(',',$fileRapportVisiteSpsMultiple);
  3783.                     foreach ($array as $item){
  3784.                         $fileRapportVisiteSpsMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3785.                         $nomenclature = $this->getNomenclature($etap,$fileRapportVisiteSpsMultipleEntity,'Rapport de visite SPS ');
  3786.                         $etap->addFileRapportVisiteSpsMultiple($fileRapportVisiteSpsMultipleEntity);
  3787.                         $this->uploadFileToDropbox($fileRapportVisiteSpsMultipleEntity,$project,"Contrats de development et construction/".$fileRapportVisiteSpsMultipleEntity->getId().$nomenclature);
  3788.                     }
  3789.                 }
  3790.                 if($fileDIUOMultiple){
  3791.                     $array = explode(',',$fileDIUOMultiple);
  3792.                     foreach ($array as $item){
  3793.                         $fileDIUOMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3794.                         $nomenclature = $this->getNomenclature($etap,$fileDIUOMultipleEntity,'DIUO ');
  3795.                         $etap->addFileDIUOMultiple($fileDIUOMultipleEntity);
  3796.                         $this->uploadFileToDropbox($fileDIUOMultipleEntity,$project,"Contrats de development et construction/".$fileDIUOMultipleEntity->getId().$nomenclature);
  3797.                     }
  3798.                 }
  3799.                 if($fileHarmonisationMultiple){
  3800.                     $array = explode(',',$fileHarmonisationMultiple);
  3801.                     foreach ($array as $item){
  3802.                         $fileHarmonisationMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3803.                         $nomenclature = $this->getNomenclature($etap,$fileHarmonisationMultipleEntity,'Harmonisation ');
  3804.                         $etap->addFileHarmonisationMultiple($fileHarmonisationMultipleEntity);
  3805.                         $this->uploadFileToDropbox($fileHarmonisationMultipleEntity,$project,"Contrats de development et construction/".$fileHarmonisationMultipleEntity->getId().$nomenclature);
  3806.                     }
  3807.                 }
  3808.                 if($filePPSPSMultiple){
  3809.                     $array = explode(',',$filePPSPSMultiple);
  3810.                     foreach ($array as $item){
  3811.                         $filePPSPSMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3812.                         $nomenclature = $this->getNomenclature($etap,$filePPSPSMultipleEntity,'PPSPS ');
  3813.                         $etap->addFilePPSPSMultiple($filePPSPSMultipleEntity);
  3814.                         $this->uploadFileToDropbox($filePPSPSMultipleEntity,$project,"Contrats de development et construction/".$filePPSPSMultipleEntity->getId().$nomenclature);
  3815.                     }
  3816.                 }
  3817.                 if($fileMissionLLEMultiple){
  3818.                     $array = explode(',',$fileMissionLLEMultiple);
  3819.                     foreach ($array as $item){
  3820.                         $fileMissionLLEMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3821.                         $nomenclature = $this->getNomenclature($etap,$fileMissionLLEMultipleEntity,'Mission L / LE');
  3822.                         $etap->addFileMissionLLEMultiple($fileMissionLLEMultipleEntity);
  3823.                         $this->uploadFileToDropbox($fileMissionLLEMultipleEntity,$project,"Contrats de development et construction/".$fileMissionLLEMultipleEntity->getId().$nomenclature);
  3824.                     }
  3825.                 }
  3826.                 
  3827.                 if($dateRealisationPlateforme){
  3828.                     $etap->setDateRealisationPlateforme(new \DateTime($dateRealisationPlateforme));
  3829.                 }else{
  3830.                     $etap->setDateRealisationPlateforme(null);
  3831.                 }
  3832.                 $etap->setChemainAcces($chemainAcces);
  3833.                 $this->addOrUpdateCategory($categorys,'setEtap171',$etap,$project);
  3834.                 $this->em->persist($etap);
  3835.                 $this->em->flush();
  3836.                 $this->updateStatusTracker($project); // set status tracker
  3837.                 $this->flashBag->add(
  3838.                     'success',
  3839.                     'L\'opération a été effectuée avec succès.'
  3840.                 );
  3841.                 return [
  3842.                     'etap' => $etap,
  3843.                     'success' => true
  3844.                 ];
  3845.             }
  3846.         }
  3847.         return [
  3848.             'success' => false
  3849.         ];
  3850.     }
  3851.     public function submitEtap172($request,$user)
  3852.     {
  3853.         $fileNoteCalculBetonFeraillageMultiple = $request->get('fileNoteCalculBetonFeraillageMultiple');
  3854.         $filePlanImplantationBatimentAvecDalleBetonMultiple = $request->get('filePlanImplantationBatimentAvecDalleBetonMultiple');
  3855.         $filePVReceptionMultiple = $request->get('filePVReceptionMultiple');
  3856.         $fileFondationTermineesMultiple = $request->get('fileFondationTermineesMultiple');
  3857.         $fileDalleBetonShelterMultiple = $request->get('fileDalleBetonShelterMultiple');
  3858.         $fileCheminAccesMultiple = $request->get('fileCheminAccesMultiple');
  3859.         $filePhotosPlateformeMultiple = $request->get('filePhotosPlateformeMultiple');
  3860.         $dateDebutFondationEtap = $request->get('dateDebutFondationEtap');
  3861.         $categorys = $request->get('categorys');
  3862.         $etapToken = $request->get('etapToken');
  3863.         $tokenProject = $request->get('tokenProject');
  3864.         if($etapToken and $tokenProject){
  3865.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  3866.             $etap = $this->em->getRepository(Etap172::class)->findOneBy(['token'=>$etapToken]);
  3867.             if($project && $etap){
  3868.                 if(!$this->checkUserAction($user,$project,$etap)){
  3869.                     return [
  3870.                         'success' => false
  3871.                     ];
  3872.                 }
  3873.                 if($fileNoteCalculBetonFeraillageMultiple){
  3874.                     $array = explode(',',$fileNoteCalculBetonFeraillageMultiple);
  3875.                     foreach ($array as $item){
  3876.                         $fileNoteCalculBetonFeraillageMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3877.                         $nomenclature = $this->getNomenclature($etap,$fileNoteCalculBetonFeraillageMultipleEntity,'Note de calcul béton et féraillage');
  3878.                         $etap->addFileNoteCalculBetonFeraillageMultiple($fileNoteCalculBetonFeraillageMultipleEntity);
  3879.                         $this->uploadFileToDropbox($fileNoteCalculBetonFeraillageMultipleEntity,$project,"Contrats de development et construction/".$fileNoteCalculBetonFeraillageMultipleEntity->getId().$nomenclature);
  3880.                     }
  3881.                 }
  3882.                 if($filePlanImplantationBatimentAvecDalleBetonMultiple){
  3883.                     $array = explode(',',$filePlanImplantationBatimentAvecDalleBetonMultiple);
  3884.                     foreach ($array as $item){
  3885.                         $filePlanImplantationBatimentAvecDalleBetonMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3886.                         $nomenclature = $this->getNomenclature($etap,$filePlanImplantationBatimentAvecDalleBetonMultipleEntity,'Plan implantation bâtiment avec dalle béton du local onduleur');
  3887.                         $etap->addFilePlanImplantationBatimentAvecDalleBetonMultiple($filePlanImplantationBatimentAvecDalleBetonMultipleEntity);
  3888.                         $this->uploadFileToDropbox($filePlanImplantationBatimentAvecDalleBetonMultipleEntity,$project,"Contrats de development et construction/".$filePlanImplantationBatimentAvecDalleBetonMultipleEntity->getId().$nomenclature);
  3889.                     }
  3890.                 }
  3891.                 if($filePVReceptionMultiple){
  3892.                     $array = explode(',',$filePVReceptionMultiple);
  3893.                     foreach ($array as $item){
  3894.                         $filePVReceptionMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3895.                         $nomenclature = $this->getNomenclature($etap,$filePVReceptionMultipleEntity,'PV de réception');
  3896.                         $etap->addFilePVReceptionMultiple($filePVReceptionMultipleEntity);
  3897.                         $this->uploadFileToDropbox($filePVReceptionMultipleEntity,$project,"Contrats de development et construction/".$filePVReceptionMultipleEntity->getId().$nomenclature);
  3898.                     }
  3899.                 }
  3900.                 if($fileFondationTermineesMultiple){
  3901.                     $array = explode(',',$fileFondationTermineesMultiple);
  3902.                     foreach ($array as $item){
  3903.                         $fileFondationTermineesMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3904.                         $nomenclature = $this->getNomenclature($etap,$fileFondationTermineesMultipleEntity,'Fondations terminées');
  3905.                         $etap->addFileFondationTermineesMultiple($fileFondationTermineesMultipleEntity);
  3906.                         $this->uploadFileToDropbox($fileFondationTermineesMultipleEntity,$project,"Contrats de development et construction/".$fileFondationTermineesMultipleEntity->getId().$nomenclature);
  3907.                     }
  3908.                 }
  3909.                 if($fileDalleBetonShelterMultiple){
  3910.                     $array = explode(',',$fileDalleBetonShelterMultiple);
  3911.                     foreach ($array as $item){
  3912.                         $fileDalleBetonShelterMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3913.                         $nomenclature = $this->getNomenclature($etap,$fileDalleBetonShelterMultipleEntity,'Dalle béton shelter');
  3914.                         $etap->addFileDalleBetonShelterMultiple($fileDalleBetonShelterMultipleEntity);
  3915.                         $this->uploadFileToDropbox($fileDalleBetonShelterMultipleEntity,$project,"Contrats de development et construction/".$fileDalleBetonShelterMultipleEntity->getId().$nomenclature);
  3916.                     }
  3917.                 }
  3918.                 if($fileCheminAccesMultiple){
  3919.                     $array = explode(',',$fileCheminAccesMultiple);
  3920.                     foreach ($array as $item){
  3921.                         $fileCheminAccesMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3922.                         $nomenclature = $this->getNomenclature($etap,$fileCheminAccesMultipleEntity,'Chemin d’accès');
  3923.                         $etap->addFileCheminAccesMultiple($fileCheminAccesMultipleEntity);
  3924.                         $this->uploadFileToDropbox($fileCheminAccesMultipleEntity,$project,"Contrats de development et construction/".$fileCheminAccesMultipleEntity->getId().$nomenclature);
  3925.                     }
  3926.                 }
  3927.                 if($filePhotosPlateformeMultiple){
  3928.                     $array = explode(',',$filePhotosPlateformeMultiple);
  3929.                     foreach ($array as $item){
  3930.                         $filePhotosPlateformeMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  3931.                         $nomenclature = $this->getNomenclature($etap,$filePhotosPlateformeMultipleEntity,'Photos de la plateforme');
  3932.                         $etap->addFilePhotosPlateformeMultiple($filePhotosPlateformeMultipleEntity);
  3933.                         $this->uploadFileToDropbox($filePhotosPlateformeMultipleEntity,$project,"Contrats de development et construction/".$filePhotosPlateformeMultipleEntity->getId().$nomenclature);
  3934.                     }
  3935.                 }
  3936.                 if($dateDebutFondationEtap){
  3937.                     $etap->setDateDebutFondation(new \DateTime($dateDebutFondationEtap));
  3938.                 }else{
  3939.                     $etap->setDateDebutFondation(null);
  3940.                 }
  3941.                 $this->addOrUpdateCategory($categorys,'setEtap172',$etap,$project);
  3942.                 $this->em->persist($etap);
  3943.                 $this->em->flush();
  3944.                 $this->updateStatusTracker($project); // set status tracker
  3945.                 $this->flashBag->add(
  3946.                     'success',
  3947.                     'L\'opération a été effectuée avec succès.'
  3948.                 );
  3949.                 return [
  3950.                     'etap' => $etap,
  3951.                     'success' => true
  3952.                 ];
  3953.             }
  3954.         }
  3955.         return [
  3956.             'success' => false
  3957.         ];
  3958.     }
  3959.     public function submitEtap173($request,$user)
  3960.     {
  3961.         $fileNoteCalculCharpente173Multiple = $request->get('fileNoteCalculCharpente173Multiple');
  3962.         $filePhotoRenforcementcharpente173Multiple = $request->get('filePhotoRenforcementcharpente173Multiple');
  3963.         $fileOssatureSecondaireBardage173Multiple = $request->get('fileOssatureSecondaireBardage173Multiple');
  3964.         $filePhotoRenforcementBardage173Multiple = $request->get('filePhotoRenforcementBardage173Multiple');
  3965.         $filePVreception173Multiple = $request->get('filePVreception173Multiple');
  3966.         $filePhotoRenforcementCouvertureTermine173Multiple = $request->get('filePhotoRenforcementCouvertureTermine173Multiple');
  3967.         $filePlansCharpente173Multiple = $request->get('filePlansCharpente173Multiple');
  3968.         $filePlansCharpente173SigneMultiple = $request->get('filePlansCharpente173SigneMultiple');
  3969.         $fileVues3d173Multiple = $request->get('fileVues3d173Multiple');
  3970.         $filePlanCouverture173Multiple = $request->get('filePlanCouverture173Multiple');
  3971.         $filePlanDescriptionTravauxRenforcementCharpente173Multiple = $request->get('filePlanDescriptionTravauxRenforcementCharpente173Multiple');
  3972.         $filePlanDescriptionTravauxDeposeCouverture173Multiple = $request->get('filePlanDescriptionTravauxDeposeCouverture173Multiple');
  3973.         $categorys = $request->get('categorys');
  3974.         $etapToken = $request->get('etapToken');
  3975.         $tokenProject = $request->get('tokenProject');
  3976.         $debutCharpenteEtap = $request->get('debutCharpenteEtap');
  3977.         $finCharpenteEtap = $request->get('finCharpenteEtap');
  3978.         $debutCouvertureEtap = $request->get('debutCouvertureEtap');
  3979.         $finCouvertureEtap = $request->get('finCouvertureEtap');
  3980.         if($etapToken and $tokenProject){
  3981.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  3982.             $etap = $this->em->getRepository(Etap173::class)->findOneBy(['token'=>$etapToken]);
  3983.             if($project && $etap){
  3984.                 if(!$this->checkUserAction($user,$project,$etap)){
  3985.                     return [
  3986.                         'success' => false
  3987.                     ];
  3988.                 }
  3989.                 if($debutCharpenteEtap){
  3990.                     $etap->setDateDebutCharpente(new \DateTime($debutCharpenteEtap));
  3991.                 }else{
  3992.                     $etap->setDateDebutCharpente(null);
  3993.                 }
  3994.                 if($finCharpenteEtap){
  3995.                     $etap->setDateFinCharpente(new \DateTime($finCharpenteEtap));
  3996.                 }else{
  3997.                     $etap->setDateFinCharpente(null);
  3998.                 }
  3999.                 if($debutCouvertureEtap){
  4000.                     $etap->setDateDebutCouverture(new \DateTime($debutCouvertureEtap));
  4001.                 }else{
  4002.                     $etap->setDateDebutCouverture(null);
  4003.                 }
  4004.                 if($finCouvertureEtap){
  4005.                     $etap->setDateFinCouverture(new \DateTime($finCouvertureEtap));
  4006.                 }else{
  4007.                     $etap->setDateFinCouverture(null);
  4008.                 }
  4009.                 if($fileNoteCalculCharpente173Multiple){
  4010.                     $array = explode(',',$fileNoteCalculCharpente173Multiple);
  4011.                     foreach ($array as $item){
  4012.                         $fileNoteCalculCharpente173MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4013.                         $nomenclature = $this->getNomenclature($etap,$fileNoteCalculCharpente173MultipleEntity,'Notes de calcul charpente');
  4014.                         $etap->addFileNoteCalculCharpente173Multiple($fileNoteCalculCharpente173MultipleEntity);
  4015.                         $this->uploadFileToDropbox($fileNoteCalculCharpente173MultipleEntity,$project,"Contrats de development et construction/".$fileNoteCalculCharpente173MultipleEntity->getId().$nomenclature);
  4016.                     }
  4017.                 }
  4018.                 if($filePhotoRenforcementcharpente173Multiple){
  4019.                     $array = explode(',',$filePhotoRenforcementcharpente173Multiple);
  4020.                     foreach ($array as $item){
  4021.                         $filePhotoRenforcementcharpente173MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4022.                         $nomenclature = $this->getNomenclature($etap,$filePhotoRenforcementcharpente173MultipleEntity,'Photos de renforcement charpente');
  4023.                         $etap->addFilePhotoRenforcementcharpente173Multiple($filePhotoRenforcementcharpente173MultipleEntity);
  4024.                         $this->uploadFileToDropbox($filePhotoRenforcementcharpente173MultipleEntity,$project,"Contrats de development et construction/".$filePhotoRenforcementcharpente173MultipleEntity->getId().$nomenclature);
  4025.                     }
  4026.                 }
  4027.                 if($fileOssatureSecondaireBardage173Multiple){
  4028.                     $array = explode(',',$fileOssatureSecondaireBardage173Multiple);
  4029.                     foreach ($array as $item){
  4030.                         $fileOssatureSecondaireBardage173MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4031.                         $nomenclature = $this->getNomenclature($etap,$fileOssatureSecondaireBardage173MultipleEntity,'Plan de bardage');
  4032.                         $etap->addFileOssatureSecondaireBardage173Multiple($fileOssatureSecondaireBardage173MultipleEntity);
  4033.                         $this->uploadFileToDropbox($fileOssatureSecondaireBardage173MultipleEntity,$project,"Contrats de development et construction/".$fileOssatureSecondaireBardage173MultipleEntity->getId().$nomenclature);
  4034.                     }
  4035.                 }
  4036.                 if($filePhotoRenforcementBardage173Multiple){
  4037.                     $array = explode(',',$filePhotoRenforcementBardage173Multiple);
  4038.                     foreach ($array as $item){
  4039.                         $filePhotoRenforcementBardage173MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4040.                         $nomenclature = $this->getNomenclature($etap,$filePhotoRenforcementBardage173MultipleEntity,'Photos de renforcement des bardages');
  4041.                         $etap->addFilePhotoRenforcementBardage173Multiple($filePhotoRenforcementBardage173MultipleEntity);
  4042.                         $this->uploadFileToDropbox($filePhotoRenforcementBardage173MultipleEntity,$project,"Contrats de development et construction/".$filePhotoRenforcementBardage173MultipleEntity->getId().$nomenclature);
  4043.                     }
  4044.                 }
  4045.                 if($filePVreception173Multiple){
  4046.                     $array = explode(',',$filePVreception173Multiple);
  4047.                     foreach ($array as $item){
  4048.                         $filePVreception173MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4049.                         $nomenclature = $this->getNomenclature($etap,$filePVreception173MultipleEntity,'PV de réception');
  4050.                         $etap->addFilePVreception173Multiple($filePVreception173MultipleEntity);
  4051.                         $this->uploadFileToDropbox($filePVreception173MultipleEntity,$project,"Contrats de development et construction/".$filePVreception173MultipleEntity->getId().$nomenclature);
  4052.                     }
  4053.                 }
  4054.                 if($filePhotoRenforcementCouvertureTermine173Multiple){
  4055.                     $array = explode(',',$filePhotoRenforcementCouvertureTermine173Multiple);
  4056.                     foreach ($array as $item){
  4057.                         $filePhotoRenforcementCouvertureTermine173MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4058.                         $nomenclature = $this->getNomenclature($etap,$filePhotoRenforcementCouvertureTermine173MultipleEntity,'Photos de renforcement de la couverture terminée');
  4059.                         $etap->addFilePhotoRenforcementCouvertureTermine173Multiple($filePhotoRenforcementCouvertureTermine173MultipleEntity);
  4060.                         $this->uploadFileToDropbox($filePhotoRenforcementCouvertureTermine173MultipleEntity,$project,"Contrats de development et construction/".$filePhotoRenforcementCouvertureTermine173MultipleEntity->getId().$nomenclature);
  4061.                     }
  4062.                 }
  4063.                 if($filePlansCharpente173Multiple){
  4064.                     $array = explode(',',$filePlansCharpente173Multiple);
  4065.                     foreach ($array as $item){
  4066.                         $filePlansCharpente173MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4067.                         $nomenclature = $this->getNomenclature($etap,$filePlansCharpente173MultipleEntity,'Plans de charpente');
  4068.                         $etap->addFilePlansCharpente173Multiple($filePlansCharpente173MultipleEntity);
  4069.                         $this->uploadFileToDropbox($filePlansCharpente173MultipleEntity,$project,"Contrats de development et construction/".$filePlansCharpente173MultipleEntity->getId().$nomenclature);
  4070.                     }
  4071.                 }
  4072.                 if($filePlansCharpente173SigneMultiple){
  4073.                     $array = explode(',',$filePlansCharpente173SigneMultiple);
  4074.                     foreach ($array as $item){
  4075.                         $filePlansCharpente173SigneMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4076.                         $nomenclature = $this->getNomenclature($etap,$filePlansCharpente173SigneMultipleEntity,'Plans de charpente Singé par bailleur');
  4077.                         $etap->addFilePlansCharpente173SigneMultiple($filePlansCharpente173SigneMultipleEntity);
  4078.                         $this->uploadFileToDropbox($filePlansCharpente173SigneMultipleEntity,$project,"Contrats de development et construction/".$filePlansCharpente173SigneMultipleEntity->getId().$nomenclature);
  4079.                     }
  4080.                 }
  4081.                 if($fileVues3d173Multiple){
  4082.                     $array = explode(',',$fileVues3d173Multiple);
  4083.                     foreach ($array as $item){
  4084.                         $fileVues3d173MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4085.                         $nomenclature = $this->getNomenclature($etap,$fileVues3d173MultipleEntity,'Vues 3D');
  4086.                         $etap->addFileVues3d173Multiple($fileVues3d173MultipleEntity);
  4087.                         $this->uploadFileToDropbox($fileVues3d173MultipleEntity,$project,"Contrats de development et construction/".$fileVues3d173MultipleEntity->getId().$nomenclature);
  4088.                     }
  4089.                 }
  4090.                 if($filePlanCouverture173Multiple){
  4091.                     $array = explode(',',$filePlanCouverture173Multiple);
  4092.                     foreach ($array as $item){
  4093.                         $filePlanCouverture173MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4094.                         $nomenclature = $this->getNomenclature($etap,$filePlanCouverture173MultipleEntity,'Plan de couverture');
  4095.                         $etap->addFilePlanCouverture173Multiple($filePlanCouverture173MultipleEntity);
  4096.                         $this->uploadFileToDropbox($filePlanCouverture173MultipleEntity,$project,"Contrats de development et construction/".$filePlanCouverture173MultipleEntity->getId().$nomenclature);
  4097.                     }
  4098.                 }
  4099.                 if($filePlanDescriptionTravauxRenforcementCharpente173Multiple){
  4100.                     $array = explode(',',$filePlanDescriptionTravauxRenforcementCharpente173Multiple);
  4101.                     foreach ($array as $item){
  4102.                         $filePlanDescriptionTravauxRenforcementCharpente173MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4103.                         $nomenclature = $this->getNomenclature($etap,$filePlanDescriptionTravauxRenforcementCharpente173MultipleEntity,'Plan et descriptifs des travaux de renforcement de charpente');
  4104.                         $etap->addFilePlanDescriptionTravauxRenforcementCharpente173Multiple($filePlanDescriptionTravauxRenforcementCharpente173MultipleEntity);
  4105.                         $this->uploadFileToDropbox($filePlanDescriptionTravauxRenforcementCharpente173MultipleEntity,$project,"Contrats de development et construction/".$filePlanDescriptionTravauxRenforcementCharpente173MultipleEntity->getId().$nomenclature);
  4106.                     }
  4107.                 }
  4108.                 if($filePlanDescriptionTravauxDeposeCouverture173Multiple){
  4109.                     $array = explode(',',$filePlanDescriptionTravauxDeposeCouverture173Multiple);
  4110.                     foreach ($array as $item){
  4111.                         $filePlanDescriptionTravauxDeposeCouverture173MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4112.                         $nomenclature = $this->getNomenclature($etap,$filePlanDescriptionTravauxDeposeCouverture173MultipleEntity,'Plan et descriptifs des travaux de dépose , repose de couverture');
  4113.                         $etap->addFilePlanDescriptionTravauxDeposeCouverture173Multiple($filePlanDescriptionTravauxDeposeCouverture173MultipleEntity);
  4114.                         $this->uploadFileToDropbox($filePlanDescriptionTravauxDeposeCouverture173MultipleEntity,$project,"Contrats de development et construction/".$filePlanDescriptionTravauxDeposeCouverture173MultipleEntity->getId().$nomenclature);
  4115.                     }
  4116.                 }
  4117.                 $this->addOrUpdateCategory($categorys,'setEtap173',$etap,$project);
  4118.                 $this->em->persist($etap);
  4119.                 $this->em->flush();
  4120.                 $this->updateStatusTracker($project); // set status tracker
  4121.                 $this->flashBag->add(
  4122.                     'success',
  4123.                     'L\'opération a été effectuée avec succès.'
  4124.                 );
  4125.                 return [
  4126.                     'etap' => $etap,
  4127.                     'success' => true
  4128.                 ];
  4129.             }
  4130.         }
  4131.         return [
  4132.             'success' => false
  4133.         ];
  4134.     }
  4135.     public function submitEtap174($request,$user)
  4136.     {
  4137.         $filePlanCalepinageModule174Multiple = $request->get('filePlanCalepinageModule174Multiple');
  4138.         $filePlanCaplageStrings174Multiple = $request->get('filePlanCaplageStrings174Multiple');
  4139.         $fileNoteCalculSousLisePV174Multiple = $request->get('fileNoteCalculSousLisePV174Multiple');
  4140.         $fileSchemaUnifilaireInstallation174Multiple = $request->get('fileSchemaUnifilaireInstallation174Multiple');
  4141.         $fileShemaAgencementShelterPhotos174Multiple = $request->get('fileShemaAgencementShelterPhotos174Multiple');
  4142.         $fileTestPrMiseService174Multiple = $request->get('fileTestPrMiseService174Multiple');
  4143.         $fileShemaUnifilaireSystemeMonitoring174Multiple = $request->get('fileShemaUnifilaireSystemeMonitoring174Multiple');
  4144.         $fileTestVerificationTravauxElectriqueFiche174Multiple = $request->get('fileTestVerificationTravauxElectriqueFiche174Multiple');
  4145.         $filePVReception174Multiple = $request->get('filePVReception174Multiple');
  4146.         $filePhotosGenerateur174Multiple = $request->get('filePhotosGenerateur174Multiple');
  4147.         $filePvTerminees174Multiple = $request->get('filePvTerminees174Multiple');
  4148.         $fileDescentesCables174Multiple = $request->get('fileDescentesCables174Multiple');
  4149.         $fileRaccordementLocalOnduleur174Multiple = $request->get('fileRaccordementLocalOnduleur174Multiple');
  4150.         $debutPosePvEtap = $request->get('debutPosePvEtap');
  4151.         $finPosePvEtap = $request->get('finPosePvEtap');
  4152.         $categorys = $request->get('categorys');
  4153.         $etapToken = $request->get('etapToken');
  4154.         $tokenProject = $request->get('tokenProject');
  4155.         if($etapToken and $tokenProject){
  4156.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  4157.             $etap = $this->em->getRepository(Etap174::class)->findOneBy(['token'=>$etapToken]);
  4158.             if($project && $etap){
  4159.                 if(!$this->checkUserAction($user,$project,$etap)){
  4160.                     return [
  4161.                         'success' => false
  4162.                     ];
  4163.                 }
  4164.                 if($debutPosePvEtap){
  4165.                     $etap->setDateDebutPosePv(new \DateTime($debutPosePvEtap));
  4166.                 }else{
  4167.                     $etap->setDateDebutPosePv(null);
  4168.                 }
  4169.                 if($finPosePvEtap){
  4170.                     $etap->setDateFinPosePv(new \DateTime($finPosePvEtap));
  4171.                 }else{
  4172.                     $etap->setDateFinPosePv(null);
  4173.                 }
  4174.                 if($filePlanCalepinageModule174Multiple){
  4175.                     $array = explode(',',$filePlanCalepinageModule174Multiple);
  4176.                     foreach ($array as $item){
  4177.                         $filePlanCalepinageModule174MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4178.                         $nomenclature = $this->getNomenclature($etap,$filePlanCalepinageModule174MultipleEntity,'Plan de calepinage / câblage');
  4179.                         $etap->addFilePlanCalepinageModule174Multiple($filePlanCalepinageModule174MultipleEntity);
  4180.                         $this->uploadFileToDropbox($filePlanCalepinageModule174MultipleEntity,$project,"Contrats de development et construction/".$filePlanCalepinageModule174MultipleEntity->getId().$nomenclature);
  4181.                     }
  4182.                 }
  4183.                 if($filePlanCaplageStrings174Multiple){
  4184.                     $array = explode(',',$filePlanCaplageStrings174Multiple);
  4185.                     foreach ($array as $item){
  4186.                         $filePlanCaplageStrings174MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4187.                         $nomenclature = $this->getNomenclature($etap,$filePlanCaplageStrings174MultipleEntity,'Plan de câblage des strings');
  4188.                         $etap->addFilePlanCaplageStrings174Multiple($filePlanCaplageStrings174MultipleEntity);
  4189.                         $this->uploadFileToDropbox($filePlanCaplageStrings174MultipleEntity,$project,"Contrats de development et construction/".$filePlanCaplageStrings174MultipleEntity->getId().$nomenclature);
  4190.                     }
  4191.                 }
  4192.                 if($fileNoteCalculSousLisePV174Multiple){
  4193.                     $array = explode(',',$fileNoteCalculSousLisePV174Multiple);
  4194.                     foreach ($array as $item){
  4195.                         $fileNoteCalculSousLisePV174MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4196.                         $nomenclature = $this->getNomenclature($etap,$fileNoteCalculSousLisePV174MultipleEntity,'Note de calcul sous Lise PV');
  4197.                         $etap->addFileNoteCalculSousLisePV174Multiple($fileNoteCalculSousLisePV174MultipleEntity);
  4198.                         $this->uploadFileToDropbox($fileNoteCalculSousLisePV174MultipleEntity,$project,"Contrats de development et construction/".$fileNoteCalculSousLisePV174MultipleEntity->getId().$nomenclature);
  4199.                     }
  4200.                 }
  4201.                 if($fileSchemaUnifilaireInstallation174Multiple){
  4202.                     $array = explode(',',$fileSchemaUnifilaireInstallation174Multiple);
  4203.                     foreach ($array as $item){
  4204.                         $fileSchemaUnifilaireInstallation174MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4205.                         $nomenclature = $this->getNomenclature($etap,$fileSchemaUnifilaireInstallation174MultipleEntity,'Schéma Unifilaire de l’installation');
  4206.                         $etap->addFileSchemaUnifilaireInstallation174Multiple($fileSchemaUnifilaireInstallation174MultipleEntity);
  4207.                         $this->uploadFileToDropbox($fileSchemaUnifilaireInstallation174MultipleEntity,$project,"Contrats de development et construction/".$fileSchemaUnifilaireInstallation174MultipleEntity->getId().$nomenclature);
  4208.                     }
  4209.                 }
  4210.                 if($fileShemaAgencementShelterPhotos174Multiple){
  4211.                     $array = explode(',',$fileShemaAgencementShelterPhotos174Multiple);
  4212.                     foreach ($array as $item){
  4213.                         $fileShemaAgencementShelterPhotos174MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4214.                         $nomenclature = $this->getNomenclature($etap,$fileShemaAgencementShelterPhotos174MultipleEntity,'Schéma d’agencement du shelter ou photos');
  4215.                         $etap->addFileShemaAgencementShelterPhotos174Multiple($fileShemaAgencementShelterPhotos174MultipleEntity);
  4216.                         $this->uploadFileToDropbox($fileShemaAgencementShelterPhotos174MultipleEntity,$project,"Contrats de development et construction/".$fileShemaAgencementShelterPhotos174MultipleEntity->getId().$nomenclature);
  4217.                     }
  4218.                 }
  4219.                 if($fileTestPrMiseService174Multiple){
  4220.                     $array = explode(',',$fileTestPrMiseService174Multiple);
  4221.                     foreach ($array as $item){
  4222.                         $fileTestPrMiseService174MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4223.                         $nomenclature = $this->getNomenclature($etap,$fileTestPrMiseService174MultipleEntity,'Test de PR à la mise en service');
  4224.                         $etap->addFileTestPrMiseService174Multiple($fileTestPrMiseService174MultipleEntity);
  4225.                         $this->uploadFileToDropbox($fileTestPrMiseService174MultipleEntity,$project,"Contrats de development et construction/".$fileTestPrMiseService174MultipleEntity->getId().$nomenclature);
  4226.                     }
  4227.                 }
  4228.                 if($fileShemaUnifilaireSystemeMonitoring174Multiple){
  4229.                     $array = explode(',',$fileShemaUnifilaireSystemeMonitoring174Multiple);
  4230.                     foreach ($array as $item){
  4231.                         $fileShemaUnifilaireSystemeMonitoring174MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4232.                         $nomenclature = $this->getNomenclature($etap,$fileShemaUnifilaireSystemeMonitoring174MultipleEntity,'Schéma unifilaire du système de monitoring');
  4233.                         $etap->addFileShemaUnifilaireSystemeMonitoring174Multiple($fileShemaUnifilaireSystemeMonitoring174MultipleEntity);
  4234.                         $this->uploadFileToDropbox($fileShemaUnifilaireSystemeMonitoring174MultipleEntity,$project,"Contrats de development et construction/".$fileShemaUnifilaireSystemeMonitoring174MultipleEntity->getId().$nomenclature);
  4235.                     }
  4236.                 }
  4237.                 if($fileTestVerificationTravauxElectriqueFiche174Multiple){
  4238.                     $array = explode(',',$fileTestVerificationTravauxElectriqueFiche174Multiple);
  4239.                     foreach ($array as $item){
  4240.                         $fileTestVerificationTravauxElectriqueFiche174MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4241.                         $nomenclature = $this->getNomenclature($etap,$fileTestVerificationTravauxElectriqueFiche174MultipleEntity,'Tests et vérifications des travaux électriques, fiche d’auto-contrôle de l’installateur');
  4242.                         $etap->addFileTestVerificationTravauxElectriqueFiche174Multiple($fileTestVerificationTravauxElectriqueFiche174MultipleEntity);
  4243.                         $this->uploadFileToDropbox($fileTestVerificationTravauxElectriqueFiche174MultipleEntity,$project,"Contrats de development et construction/".$fileTestVerificationTravauxElectriqueFiche174MultipleEntity->getId().$nomenclature);
  4244.                     }
  4245.                 }
  4246.                 if($filePVReception174Multiple){
  4247.                     $array = explode(',',$filePVReception174Multiple);
  4248.                     foreach ($array as $item){
  4249.                         $filePVReception174MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4250.                         $nomenclature = $this->getNomenclature($etap,$filePVReception174MultipleEntity,'PV de réception');
  4251.                         $etap->addFilePVReception174Multiple($filePVReception174MultipleEntity);
  4252.                         $this->uploadFileToDropbox($filePVReception174MultipleEntity,$project,"Contrats de development et construction/".$filePVReception174MultipleEntity->getId().$nomenclature);
  4253.                     }
  4254.                 }
  4255.                 if($filePhotosGenerateur174Multiple){
  4256.                     $array = explode(',',$filePhotosGenerateur174Multiple);
  4257.                     foreach ($array as $item){
  4258.                         $filePhotosGenerateur174MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4259.                         $nomenclature = $this->getNomenclature($etap,$filePhotosGenerateur174MultipleEntity,'Photos de la centrale solaire');
  4260.                         $etap->addFilePhotosGenerateur174Multiple($filePhotosGenerateur174MultipleEntity);
  4261.                         $this->uploadFileToDropbox($filePhotosGenerateur174MultipleEntity,$project,"Contrats de development et construction/".$filePhotosGenerateur174MultipleEntity->getId().$nomenclature);
  4262.                     }
  4263.                 }
  4264.                 if($filePvTerminees174Multiple){
  4265.                     $array = explode(',',$filePvTerminees174Multiple);
  4266.                     foreach ($array as $item){
  4267.                         $filePvTerminees174MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4268.                         $nomenclature = $this->getNomenclature($etap,$filePvTerminees174MultipleEntity,'Pv terminées');
  4269.                         $etap->addFilePvTerminees174Multiple($filePvTerminees174MultipleEntity);
  4270.                         $this->uploadFileToDropbox($filePvTerminees174MultipleEntity,$project,"Contrats de development et construction/".$filePvTerminees174MultipleEntity->getId().$nomenclature);
  4271.                     }
  4272.                 }
  4273.                 if($fileDescentesCables174Multiple){
  4274.                     $array = explode(',',$fileDescentesCables174Multiple);
  4275.                     foreach ($array as $item){
  4276.                         $fileDescentesCables174MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4277.                         $nomenclature = $this->getNomenclature($etap,$fileDescentesCables174MultipleEntity,'Descentes de câbles');
  4278.                         $etap->addFileDescentesCables174Multiple($fileDescentesCables174MultipleEntity);
  4279.                         $this->uploadFileToDropbox($fileDescentesCables174MultipleEntity,$project,"Contrats de development et construction/".$fileDescentesCables174MultipleEntity->getId().$nomenclature);
  4280.                     }
  4281.                 }
  4282.                 if($fileRaccordementLocalOnduleur174Multiple){
  4283.                     $array = explode(',',$fileRaccordementLocalOnduleur174Multiple);
  4284.                     foreach ($array as $item){
  4285.                         $fileRaccordementLocalOnduleur174MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4286.                         $nomenclature = $this->getNomenclature($etap,$fileRaccordementLocalOnduleur174MultipleEntity,'Raccordement du local onduleur');
  4287.                         $etap->addFileRaccordementLocalOnduleur174Multiple($fileRaccordementLocalOnduleur174MultipleEntity);
  4288.                         $this->uploadFileToDropbox($fileRaccordementLocalOnduleur174MultipleEntity,$project,"Contrats de development et construction/".$fileRaccordementLocalOnduleur174MultipleEntity->getId().$nomenclature);
  4289.                     }
  4290.                 }
  4291.                 $this->addOrUpdateCategory($categorys,'setEtap174',$etap,$project);
  4292.                 $this->em->persist($etap);
  4293.                 $this->em->flush();
  4294.                 $this->updateStatusTracker($project); // set status tracker
  4295.                 $this->flashBag->add(
  4296.                     'success',
  4297.                     'L\'opération a été effectuée avec succès.'
  4298.                 );
  4299.                 return [
  4300.                     'etap' => $etap,
  4301.                     'success' => true
  4302.                 ];
  4303.             }
  4304.         }
  4305.         return [
  4306.             'success' => false
  4307.         ];
  4308.     }
  4309.     public function submitEtap175($request,$user)
  4310.     {
  4311.         $fileNoteCalculCableAcLiaison175Multiple = $request->get('fileNoteCalculCableAcLiaison175Multiple');
  4312.         $filePlanTranchee175Multiple = $request->get('filePlanTranchee175Multiple');
  4313.         $fileDaact175Multiple = $request->get('fileDaact175Multiple');
  4314.         $filePVReception175Multiple = $request->get('filePVReception175Multiple');
  4315.         $filePhotosLiaisonTerminee175Multiple = $request->get('filePhotosLiaisonTerminee175Multiple');
  4316.         $dateAchevementTraveauxEtap = $request->get('dateAchevementTraveauxEtap');
  4317.         $categorys = $request->get('categorys');
  4318.         $etapToken = $request->get('etapToken');
  4319.         $tokenProject = $request->get('tokenProject');
  4320.         if($etapToken and $tokenProject){
  4321.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  4322.             $etap = $this->em->getRepository(Etap175::class)->findOneBy(['token'=>$etapToken]);
  4323.             if($project && $etap){
  4324.                 if(!$this->checkUserAction($user,$project,$etap)){
  4325.                     return [
  4326.                         'success' => false
  4327.                     ];
  4328.                 }
  4329.                 if($dateAchevementTraveauxEtap){
  4330.                     $etap->setDateAchevementTraveaux(new \DateTime($dateAchevementTraveauxEtap));
  4331.                 }else{
  4332.                     $etap->setDateAchevementTraveaux(null);
  4333.                 }
  4334.                 if($fileNoteCalculCableAcLiaison175Multiple){
  4335.                     $array = explode(',',$fileNoteCalculCableAcLiaison175Multiple);
  4336.                     foreach ($array as $item){
  4337.                         $fileNoteCalculCableAcLiaison175MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4338.                         $nomenclature = $this->getNomenclature($etap,$fileNoteCalculCableAcLiaison175MultipleEntity,'Notes de calcul des câbles AC de la liaison');
  4339.                         $etap->addFileNoteCalculCableAcLiaison175Multiple($fileNoteCalculCableAcLiaison175MultipleEntity);
  4340.                         $this->uploadFileToDropbox($fileNoteCalculCableAcLiaison175MultipleEntity,$project,"Contrats de development et construction/".$fileNoteCalculCableAcLiaison175MultipleEntity->getId().$nomenclature);
  4341.                     }
  4342.                 }
  4343.                 if($filePlanTranchee175Multiple){
  4344.                     $array = explode(',',$filePlanTranchee175Multiple);
  4345.                     foreach ($array as $item){
  4346.                         $filePlanTranchee175MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4347.                         $nomenclature = $this->getNomenclature($etap,$filePlanTranchee175MultipleEntity,'Plans de la tranchée (coupe et plan de localisation)');
  4348.                         $etap->addFilePlanTranchee175Multiple($filePlanTranchee175MultipleEntity);
  4349.                         $this->uploadFileToDropbox($filePlanTranchee175MultipleEntity,$project,"Contrats de development et construction/".$filePlanTranchee175MultipleEntity->getId().$nomenclature);
  4350.                     }
  4351.                 }
  4352.                 if($fileDaact175Multiple){
  4353.                     $array = explode(',',$fileDaact175Multiple);
  4354.                     foreach ($array as $item){
  4355.                         $fileDaact175MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4356.                         $nomenclature = $this->getNomenclature($etap,$fileDaact175MultipleEntity,'DAACT : cerfa signé tamponné mairie');
  4357.                         $etap->addFileDaact175Multiple($fileDaact175MultipleEntity);
  4358.                         $this->uploadFileToDropbox($fileDaact175MultipleEntity,$project,"Contrats de development et construction/".$fileDaact175MultipleEntity->getId().$nomenclature);
  4359.                     }
  4360.                 }
  4361.                 if($filePVReception175Multiple){
  4362.                     $array = explode(',',$filePVReception175Multiple);
  4363.                     foreach ($array as $item){
  4364.                         $filePVReception175MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4365.                         $nomenclature = $this->getNomenclature($etap,$filePVReception175MultipleEntity,'PV de réception');
  4366.                         $etap->addFilePVReception175Multiple($filePVReception175MultipleEntity);
  4367.                         $this->uploadFileToDropbox($filePVReception175MultipleEntity,$project,"Contrats de development et construction/".$filePVReception175MultipleEntity->getId().$nomenclature);
  4368.                     }
  4369.                 }
  4370.                 if($filePhotosLiaisonTerminee175Multiple){
  4371.                     $array = explode(',',$filePhotosLiaisonTerminee175Multiple);
  4372.                     foreach ($array as $item){
  4373.                         $filePhotosLiaisonTerminee175MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4374.                         $nomenclature = $this->getNomenclature($etap,$filePhotosLiaisonTerminee175MultipleEntity,'Photos de la liaison terminée');
  4375.                         $etap->addFilePhotosLiaisonTerminee175Multiple($filePhotosLiaisonTerminee175MultipleEntity);
  4376.                         $this->uploadFileToDropbox($filePhotosLiaisonTerminee175MultipleEntity,$project,"Contrats de development et construction/".$filePhotosLiaisonTerminee175MultipleEntity->getId().$nomenclature);
  4377.                     }
  4378.                 }
  4379.                 $this->addOrUpdateCategory($categorys,'setEtap175',$etap,$project);
  4380.                 $this->em->persist($etap);
  4381.                 $this->em->flush();
  4382.                 $this->updateStatusTracker($project); // set status tracker
  4383.                 $this->flashBag->add(
  4384.                     'success',
  4385.                     'L\'opération a été effectuée avec succès.'
  4386.                 );
  4387.                 return [
  4388.                     'etap' => $etap,
  4389.                     'success' => true
  4390.                 ];
  4391.             }
  4392.         }
  4393.         return [
  4394.             'success' => false
  4395.         ];
  4396.     }
  4397.     public function submitEtap159($request,$user)
  4398.     {
  4399.         $fileVisiteTechnique159Multiple = $request->get('fileVisiteTechnique159Multiple');
  4400.         $fileEtudeProductible159Multiple = $request->get('fileEtudeProductible159Multiple');
  4401.         $fileGeotechnique159Multiple = $request->get('fileGeotechnique159Multiple');
  4402.         $fileDiagnostiqueCharpente159Multiple = $request->get('fileDiagnostiqueCharpente159Multiple');
  4403.         $fileDesignPreCRD159Multiple = $request->get('fileDesignPreCRD159Multiple');
  4404.         $fileDesignPostCRD159Multiple = $request->get('fileDesignPostCRD159Multiple');
  4405.         $filePlanMasseSituationTranchee159Multiple = $request->get('filePlanMasseSituationTranchee159Multiple');
  4406.         $filePlanCalepinage159Multiple = $request->get('filePlanCalepinage159Multiple');
  4407.         $fileSchemaUnifilaire159Multiple = $request->get('fileSchemaUnifilaire159Multiple');
  4408.         $filePlansAutocadMultiple = $request->get('filePlansAutocadMultiple');
  4409.         $filePlansDwgMultiple = $request->get('filePlansDwgMultiple');
  4410.         $etatCharpente = $request->get('etatCharpente');
  4411.         $typeToitureExistante = $request->get('typeToitureExistante');
  4412.         $typeRenovation = $request->get('typeRenovation');
  4413.         $typeToiturePoser = $request->get('typeToiturePoser');
  4414.         $typeBatiment = $request->get('typeBatiment');
  4415.         $etapToken = $request->get('etapToken');
  4416.         $tokenProject = $request->get('tokenProject');
  4417.         if($etapToken and $tokenProject){
  4418.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  4419.             $etap = $this->em->getRepository(Etap159::class)->findOneBy(['token'=>$etapToken]);
  4420.             $etap160 = $this->em->getRepository(Etap160::class)->findOneBy(['project'=>$project->getId()]);
  4421.             if($project && $etap){
  4422.                 if(!$this->checkUserAction($user,$project,$etap)){
  4423.                     return [
  4424.                         'success' => false
  4425.                     ];
  4426.                 }
  4427.                 if($filePlansAutocadMultiple){
  4428.                     $array = explode(',',$filePlansAutocadMultiple);
  4429.                     foreach ($array as $item){
  4430.                         $filePlansAutocadMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4431.                         $nomenclature = $this->getNomenclature($etap,$filePlansAutocadMultipleEntity,'Plans Autocad');
  4432.                         $etap->addFilePlansAutocadMultiple($filePlansAutocadMultipleEntity);
  4433.                         $this->uploadFileToDropbox($filePlansAutocadMultipleEntity,$project,"Contrats de development et construction/".$filePlansAutocadMultipleEntity->getId().$nomenclature);
  4434.                     }
  4435.                 }
  4436.                 if($filePlansDwgMultiple){
  4437.                     $array = explode(',',$filePlansDwgMultiple);
  4438.                     foreach ($array as $item){
  4439.                         $filePlansDwgMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4440.                         $nomenclature = $this->getNomenclature($etap,$filePlansDwgMultipleEntity,'Plans dwg');
  4441.                         $etap->addFilePlansDwgMultiple($filePlansDwgMultipleEntity);
  4442.                         $this->uploadFileToDropbox($filePlansDwgMultipleEntity,$project,"Contrats de development et construction/".$filePlansDwgMultipleEntity->getId().$nomenclature);
  4443.                     }
  4444.                 }
  4445.                 if($fileVisiteTechnique159Multiple){
  4446.                     $array = explode(',',$fileVisiteTechnique159Multiple);
  4447.                     foreach ($array as $item){
  4448.                         $fileVisiteTechnique159MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4449.                         $nomenclature = $this->getNomenclature($etap,$fileVisiteTechnique159MultipleEntity,'Visite technique');
  4450.                         $etap->addFileVisiteTechnique159Multiple($fileVisiteTechnique159MultipleEntity);
  4451.                         $this->uploadFileToDropbox($fileVisiteTechnique159MultipleEntity,$project,"Contrats de development et construction/".$fileVisiteTechnique159MultipleEntity->getId().$nomenclature);
  4452.                     }
  4453.                 }
  4454.                 if($fileEtudeProductible159Multiple){
  4455.                     $array = explode(',',$fileEtudeProductible159Multiple);
  4456.                     foreach ($array as $item){
  4457.                         $fileEtudeProductible159MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4458.                         $nomenclature = $this->getNomenclature($etap,$fileEtudeProductible159MultipleEntity,'Etude de productible');
  4459.                         $etap->addFileEtudeProductible159Multiple($fileEtudeProductible159MultipleEntity);
  4460.                         $this->uploadFileToDropbox($fileEtudeProductible159MultipleEntity,$project,"Contrats de development et construction/".$fileEtudeProductible159MultipleEntity->getId().$nomenclature);
  4461.                         $project->setFileEtudeProductible($fileEtudeProductible159MultipleEntity) ;
  4462.                         $this->em->persist($project);
  4463.                     }
  4464.                 }
  4465.                 if($fileGeotechnique159Multiple){
  4466.                     $array = explode(',',$fileGeotechnique159Multiple);
  4467.                     foreach ($array as $item){
  4468.                         $fileGeotechnique159MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4469.                         $nomenclature = $this->getNomenclature($etap,$fileGeotechnique159MultipleEntity,'Etude de sol');
  4470.                         $etap->addFileGeotechnique159Multiple($fileGeotechnique159MultipleEntity);
  4471.                         $etap160->addFileEtudeSoleMultiple($fileGeotechnique159MultipleEntity);
  4472.                         $this->uploadFileToDropbox($fileGeotechnique159MultipleEntity,$project,"Contrats de development et construction/".$fileGeotechnique159MultipleEntity->getId().$nomenclature);
  4473.                     }
  4474.                 }
  4475.                 if($fileDiagnostiqueCharpente159Multiple){
  4476.                     $array = explode(',',$fileDiagnostiqueCharpente159Multiple);
  4477.                     foreach ($array as $item){
  4478.                         $fileDiagnostiqueCharpente159MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4479.                         if($fileDiagnostiqueCharpente159MultipleEntity){
  4480.                             $nomenclature = $this->getNomenclature($etap,$fileDiagnostiqueCharpente159MultipleEntity,'Diagnostic charpente');
  4481.                             $etap->addFileDiagnostiqueCharpente159Multiple($fileDiagnostiqueCharpente159MultipleEntity);
  4482.                             $etap160->addFileDiagnostiqueCharpenteMultiple($fileDiagnostiqueCharpente159MultipleEntity);
  4483.                             $this->uploadFileToDropbox($fileDiagnostiqueCharpente159MultipleEntity,$project,"Contrats de development et construction/".$fileDiagnostiqueCharpente159MultipleEntity->getId().$nomenclature);
  4484.                         }
  4485.                     }
  4486.                     $this->em->persist($etap160);
  4487.                     $this->em->flush();
  4488.                 }
  4489.                 if($fileDesignPreCRD159Multiple){
  4490.                     $array = explode(',',$fileDesignPreCRD159Multiple);
  4491.                     foreach ($array as $item){
  4492.                         $fileDesignPreCRD159MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4493.                         $nomenclature = $this->getNomenclature($etap,$fileDesignPreCRD159MultipleEntity,'Design pré-CRD');
  4494.                         $etap->addFileDesignPreCRD159Multiple($fileDesignPreCRD159MultipleEntity);
  4495.                         $this->uploadFileToDropbox($fileDesignPreCRD159MultipleEntity,$project,"Contrats de development et construction/".$fileDesignPreCRD159MultipleEntity->getId().$nomenclature);
  4496.                     }
  4497.                 }
  4498.                 if($fileDesignPostCRD159Multiple){
  4499.                     $array = explode(',',$fileDesignPostCRD159Multiple);
  4500.                     foreach ($array as $item){
  4501.                         $fileDesignPostCRD159MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4502.                         $nomenclature = $this->getNomenclature($etap,$fileDesignPostCRD159MultipleEntity,'Design post-CRD');
  4503.                         $etap->addFileDesignPostCRD159Multiple($fileDesignPostCRD159MultipleEntity);
  4504.                         $this->uploadFileToDropbox($fileDesignPostCRD159MultipleEntity,$project,"Contrats de development et construction/".$fileDesignPostCRD159MultipleEntity->getId().$nomenclature);
  4505.                     }
  4506.                 }
  4507.                 if($filePlanMasseSituationTranchee159Multiple){
  4508.                     $array = explode(',',$filePlanMasseSituationTranchee159Multiple);
  4509.                     foreach ($array as $item){
  4510.                         $filePlanMasseSituationTranchee159MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4511.                         $nomenclature = $this->getNomenclature($etap,$filePlanMasseSituationTranchee159MultipleEntity,'Plan de masse et de situation avec tranchée');
  4512.                         $etap->addFilePlanMasseSituationTranchee159Multiple($filePlanMasseSituationTranchee159MultipleEntity);
  4513.                         $this->uploadFileToDropbox($filePlanMasseSituationTranchee159MultipleEntity,$project,"Contrats de development et construction/".$filePlanMasseSituationTranchee159MultipleEntity->getId().$nomenclature);
  4514.                     }
  4515.                 }
  4516.                 if($filePlanCalepinage159Multiple){
  4517.                     $array = explode(',',$filePlanCalepinage159Multiple);
  4518.                     foreach ($array as $item){
  4519.                         $filePlanCalepinage159MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4520.                         $nomenclature = $this->getNomenclature($etap,$filePlanCalepinage159MultipleEntity,'Plan de calepinage');
  4521.                         $etap->addFilePlanCalepinage159Multiple($filePlanCalepinage159MultipleEntity);
  4522.                         $this->uploadFileToDropbox($filePlanCalepinage159MultipleEntity,$project,"Contrats de development et construction/".$filePlanCalepinage159MultipleEntity->getId().$nomenclature);
  4523.                     }
  4524.                 }
  4525.                 if($fileSchemaUnifilaire159Multiple){
  4526.                     $array = explode(',',$fileSchemaUnifilaire159Multiple);
  4527.                     foreach ($array as $item){
  4528.                         $fileSchemaUnifilaire159MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4529.                         $nomenclature = $this->getNomenclature($etap,$fileSchemaUnifilaire159MultipleEntity,'Schéma unifilaire');
  4530.                         $etap->addFileSchemaUnifilaire159Multiple($fileSchemaUnifilaire159MultipleEntity);
  4531.                         $this->uploadFileToDropbox($fileSchemaUnifilaire159MultipleEntity,$project,"Contrats de development et construction/".$fileSchemaUnifilaire159MultipleEntity->getId().$nomenclature);
  4532.                     }
  4533.                 }
  4534.                 $etap->setEtatCharpente($etatCharpente);
  4535.                 $etap->setTypeToitureExistante($typeToitureExistante);
  4536.                 $etap->setTypeRenovation($typeRenovation);
  4537.                 $etap->setTypeToiturePoser($typeToiturePoser);
  4538.                 $etap->setTypeBatiment($typeBatiment);
  4539.                 $this->em->persist($etap);
  4540.                 $this->em->flush();
  4541.                 $this->updateStatusTracker($project); // set status tracker
  4542.                 $this->flashBag->add(
  4543.                     'success',
  4544.                     'L\'opération a été effectuée avec succès.'
  4545.                 );
  4546.                 return [
  4547.                     'etap' => $etap,
  4548.                     'success' => true
  4549.                 ];
  4550.             }
  4551.         }
  4552.         return [
  4553.             'success' => false
  4554.         ];
  4555.     }
  4556.     public function submitEtap23($request,$user)
  4557.     {
  4558.         $etapToken = $request->get('etapToken');
  4559.         $tokenProject = $request->get('tokenProject');
  4560.         $filePhotosVisiteTerainEtap23Multiple = $request->get('filePhotosVisiteTerainEtap23Multiple');
  4561.         $visiteTerrain = $request->get('visiteTerrain');
  4562.         if($etapToken and $tokenProject){
  4563.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  4564.             $etap = $this->em->getRepository(Etap23::class)->findOneBy(['token'=>$etapToken]);
  4565.             if($project && $etap){
  4566.                 if(!$this->checkUserAction($user,$project,$etap)){
  4567.                     return [
  4568.                         'success' => false
  4569.                     ];
  4570.                 }
  4571.                 if($filePhotosVisiteTerainEtap23Multiple){
  4572.                     $array = explode(',',$filePhotosVisiteTerainEtap23Multiple);
  4573.                     foreach ($array as $item){
  4574.                         $filePhotosVisiteTerainEtap23MultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item]);
  4575.                         $nomenclature = $this->getNomenclature($etap,$filePhotosVisiteTerainEtap23MultipleEntity,'photo visite terrain');
  4576.                         $etap->addFilePhotosVisiteTerainEtap23Multiple($filePhotosVisiteTerainEtap23MultipleEntity);
  4577.                     }
  4578.                 }
  4579. //                if($visiteTerrain){
  4580. //                    foreach ($visiteTerrain as $item){
  4581. //                        if(isset($item['id']) and $item['id'] != '') {
  4582. //                            $visiteTerrainEntity = $this->em->getRepository(VisiteTerrainV2::class)->findOneBy(['token' => $item['id']]);
  4583. //                            if (isset($item['filePhotosVisiteTerainV2Multiple']) and $item['filePhotosVisiteTerainV2Multiple'] != '') {
  4584. //                                $array = explode(',', $item['filePhotosVisiteTerainV2Multiple']);
  4585. //                                foreach ($array as $item1) {
  4586. //                                    $filePhotosVisiteTerainMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token' => $item1]);
  4587. //                                    $nomenclature = $this->getNomenclature($etap, $filePhotosVisiteTerainMultipleEntity, 'photos visite terrain');
  4588. //                                    $visiteTerrainEntity->addfilePhotosVisiteTerainV2Multiple($filePhotosVisiteTerainMultipleEntity);
  4589. ////                                    $this->uploadFileToDropbox($filePhotosVisiteTerainMultipleEntity, $project, "Contrats de development et construction/" . $filePhotosVisiteTerainMultipleEntity->getId() . $nomenclature);
  4590. //                                }
  4591. //                            }
  4592. //                            $visiteTerrainEntity->setEtap23($etap);
  4593. //                            $this->em->persist($visiteTerrainEntity);
  4594. //                            $this->em->flush();
  4595. //                        }
  4596. //                    }
  4597. //                }
  4598.                 $this->em->persist($etap);
  4599.                 $this->em->flush();
  4600.                 $this->updateStatusTracker($project); // set status tracker
  4601.                 $this->flashBag->add(
  4602.                     'success',
  4603.                     'L\'opération a été effectuée avec succès.'
  4604.                 );
  4605.                 return [
  4606.                     'etap' => $etap,
  4607.                     'success' => true
  4608.                 ];
  4609.             }
  4610.         }
  4611.         return [
  4612.             'success' => false
  4613.         ];
  4614.     }
  4615.     public function completudeValideEtapProject($project){
  4616.         $array = [];
  4617.         if($project) {
  4618.             $cats = $this->em->getRepository(EtapsCategory::class)->findAll();
  4619.             $catColor = ['#FFC56D','#009DCA','#649B0F','#E24242','#ED4B9E'];
  4620.             $i = 0;
  4621.             foreach ($cats as $cat) {
  4622.                 $etaps = $this->em->getRepository(Etaps::class)->findBy(['category' => $cat->getId()]);
  4623.                 $etapValidCount = 0 ;
  4624.                 $etapCount = 0 ;
  4625.                 if($etaps){
  4626.                     foreach ($etaps as $etap) {
  4627.                         if( !$etap->getIsDeleteNewConstruction()){
  4628.                             $etapCount = $etapCount + 1;
  4629.                             $etapEntityClass = 'App\\Entity\\Etap' . $etap->getNum();
  4630.                             $etapEntity = $this->em->getRepository($etapEntityClass)->findOneBy(['project' => $project->getId()]);
  4631.                             if($etapEntity->getStatus() == Etaps::STATUS_VALIDE){
  4632.                                 $etapValidCount = $etapValidCount + 1;
  4633.                             }
  4634.                             $array['category'][$cat->getId()]['id'] = $cat->getId();
  4635.                             $array['category'][$cat->getId()]['name'] = $cat->getName();
  4636.                             $array['category'][$cat->getId()]['etapsValidCount'] = $etapValidCount;
  4637.                             $array['category'][$cat->getId()]['etapsCount'] = $etapCount;
  4638.                         }
  4639.                     }
  4640.                 }else{
  4641.                     $array['category'][$cat->getId()]['id'] = $cat->getId();
  4642.                     $array['category'][$cat->getId()]['name'] = $cat->getName();
  4643.                     $array['category'][$cat->getId()]['etapsValidCount'] = 0;
  4644.                     $array['category'][$cat->getId()]['etapsCount'] = 0;
  4645.                 }
  4646.                 if($i > 5)
  4647.                     $i = 0;
  4648.                 $array['category'][$cat->getId()]['color'] = $catColor[$i];
  4649.                 $i = $i + 1;
  4650.             }
  4651.             $pourcentageGlobale = 0;
  4652.             foreach ($array['category'] as &$item){
  4653.                 $pourcentage = (int)$item['etapsCount'] ? (((int)$item['etapsValidCount'] / (int)$item['etapsCount']) * 100 ) : 0.0 ;
  4654.                 $item['pourcentage'] = number_format($pourcentage,1);
  4655.                 $pourcentageGlobale = $pourcentage +  $pourcentageGlobale;
  4656.             }
  4657.             if($pourcentageGlobale > 0){
  4658.                 $array['pourcentageGlobale'] = number_format($pourcentageGlobale / count($cats),1);
  4659.             }else{
  4660.                 $array['pourcentageGlobale'] = 0.0;
  4661.             }
  4662.         }
  4663.         return $array;
  4664.     }
  4665.     public function completudeValideDocumentEtapProject($project){
  4666.         $array = [];
  4667.         if($project) {
  4668.             $cats = $this->em->getRepository(EtapsCategory::class)->findAll();
  4669.             $catColor = ['#B1C40C','#0CA3C4','#520CC4','#C47A0C','#ED4B9E'];
  4670.             $i = 0;
  4671.             foreach ($cats as $cat) {
  4672.                 $etaps = $this->em->getRepository(Etaps::class)->findBy(['category' => $cat->getId()]);
  4673.                 $docsUploadeCount = 0 ;
  4674.                 $docsCount = 0 ;
  4675.                 if($cat->getNum() == 5){
  4676.                     if($etaps) {
  4677.                         foreach ($etaps as $etap) {
  4678.                             if (!$etap->getIsDeleteNewConstruction()) {
  4679.                                 $etapEntityClass = 'App\\Entity\\Etap' . $etap->getNum();
  4680.                                 $etapEntity = $this->em->getRepository($etapEntityClass)->findOneBy(['project' => $project->getId()]);
  4681.                                 if($etap->getNum() == 24){
  4682.                                 }elseif ($etap->getNum() == 25){
  4683.                                     $etap25Champs = $etapEntity ? $etapEntity->getEtap24Champs() : null;
  4684.                                     if(count($etap25Champs) > 0){
  4685.                                         foreach ($etap25Champs as $champ){
  4686.                                             $typeValorisation = $champ->getTypeValorisation() ? $champ->getTypeValorisation()->getCategory() : null;
  4687.                                             if($typeValorisation == TypeValorisation::type_guichet_ouvert){
  4688.                                                 $fileCount = $this->checkDocNotArchive($champ->getFileDemandeRaccordementEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  4689.                                                 $fileCount = $this->checkDocNotArchive($champ->getFileMailEnedisConfirmationEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  4690.                                             }elseif ($typeValorisation == TypeValorisation::type_ao_cre){
  4691.                                                 $fileCount = $this->checkDocNotArchive($champ->getFileGarantieBancaireEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  4692.                                                 $fileCount = $this->checkDocNotArchive($champ->getFileRecepisseDemandeAoMultiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  4693.                                                 $fileCount = $this->checkDocNotArchive($champ->getFileLettreLaureaMultiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  4694.                                             }elseif ($typeValorisation == TypeValorisation::type_acc || $typeValorisation == TypeValorisation::type_aci || $typeValorisation == TypeValorisation::type_ppa){
  4695.                                             }elseif ($typeValorisation == TypeValorisation::type_spot){
  4696.                                             }
  4697.                                         }
  4698.                                     }
  4699.                                 } elseif ($etap->getNum() == 26){
  4700.                                     $etap24Champs = $etapEntity ? $etapEntity->getEtap24Champs() : null;
  4701.                                     if(count($etap24Champs) > 0){
  4702.                                         foreach ($etap24Champs as $etap24Champ){
  4703.                                             foreach ($etap24Champ->getEtap26Champs() as $champ){
  4704.                                                 $typeValorisation = $etap24Champ->getTypeValorisation() ? $etap24Champ->getTypeValorisation()->getCategory() : null;
  4705.                                                 if($typeValorisation == TypeValorisation::type_guichet_ouvert or $typeValorisation == TypeValorisation::type_ao_cre){
  4706.                                                     $fileCount = $this->checkDocNotArchive($champ->getFileContratAchatSigneEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  4707.                                                     $fileCount = $this->checkDocNotArchive($champ->getFileAttestionProducteurEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  4708.                                                     $fileCount = $this->checkDocNotArchive($champ->getFileAttestionInstallateurEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  4709.                                                     $fileCount = $this->checkDocNotArchive($champ->getFileArContratAchatEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  4710.                                                 }elseif ($typeValorisation == TypeValorisation::type_acc || $typeValorisation == TypeValorisation::type_aci || $typeValorisation == TypeValorisation::type_ppa || $typeValorisation == TypeValorisation::type_fer){
  4711.                                                     $fileCount = $this->checkDocNotArchive($champ->getFileContratAchatSigneEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  4712.                                                 }elseif ($typeValorisation == TypeValorisation::type_spot){
  4713.                                                     $fileCount = $this->checkDocNotArchive($champ->getFileContratAchatSigneEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  4714.                                                 }
  4715.                                             }
  4716.                                         }
  4717.                                     }
  4718.                                 }
  4719.                             }
  4720.                         }
  4721.                         $array['category'][$cat->getId()]['id'] = $cat->getId();
  4722.                         $array['category'][$cat->getId()]['name'] = $cat->getName();
  4723.                         $array['category'][$cat->getId()]['num'] = $cat->getNum();
  4724.                         $array['category'][$cat->getId()]['docsUploadeCount'] = $docsUploadeCount;
  4725.                         $array['category'][$cat->getId()]['docsCount'] = $docsCount;
  4726.                     }
  4727.                 }
  4728.                 else{
  4729.                     if($etaps){
  4730.                         foreach ($etaps as $etap) {
  4731.                             if($project->getIsNewConstruction()){
  4732.                                 if( !$etap->getIsDeleteNewConstruction()){
  4733.                                     $etapEntityClass = 'App\\Entity\\Etap' . $etap->getNum();
  4734.                                     $etapEntity = $this->em->getRepository($etapEntityClass)->findOneBy(['project' => $project->getId()]);
  4735.                                     $classMetadata = $this->em->getClassMetadata($etapEntityClass);
  4736.                                     $data = $this->getNbrDocUploadByEtap($etapEntity,$classMetadata);
  4737.                                     $docsUploadeCount = $docsUploadeCount + $data['docsUploadeCount'];
  4738.                                     $docsCount = $docsCount + $data['docsCount'];
  4739.                                     $array['category'][$cat->getId()]['id'] = $cat->getId();
  4740.                                     $array['category'][$cat->getId()]['name'] = $cat->getName();
  4741.                                     $array['category'][$cat->getId()]['num'] = $cat->getNum();
  4742.                                     $array['category'][$cat->getId()]['docsUploadeCount'] = $docsUploadeCount;
  4743.                                     $array['category'][$cat->getId()]['docsCount'] = $docsCount;
  4744.                                 }
  4745.                             }else{
  4746.                                 if( !$etap->getIsDelete()){
  4747.                                     $etapEntityClass = 'App\\Entity\\Etap' . $etap->getNum();
  4748.                                     $etapEntity = $this->em->getRepository($etapEntityClass)->findOneBy(['project' => $project->getId()]);
  4749.                                     $classMetadata = $this->em->getClassMetadata($etapEntityClass);
  4750.                                     $data = $this->getNbrDocUploadByEtap($etapEntity,$classMetadata);
  4751.                                     $docsUploadeCount = $docsUploadeCount + $data['docsUploadeCount'];
  4752.                                     $docsCount = $docsCount + $data['docsCount'];
  4753.                                     $array['category'][$cat->getId()]['id'] = $cat->getId();
  4754.                                     $array['category'][$cat->getId()]['name'] = $cat->getName();
  4755.                                     $array['category'][$cat->getId()]['num'] = $cat->getNum();
  4756.                                     $array['category'][$cat->getId()]['docsUploadeCount'] = $docsUploadeCount;
  4757.                                     $array['category'][$cat->getId()]['docsCount'] = $docsCount;
  4758.                                 }
  4759.                             }
  4760.                         }
  4761.                     }else{
  4762.                         $array['category'][$cat->getId()]['id'] = $cat->getId();
  4763.                         $array['category'][$cat->getId()]['name'] = $cat->getName();
  4764.                         $array['category'][$cat->getId()]['num'] = $cat->getNum();
  4765.                         $array['category'][$cat->getId()]['docsUploadeCount'] = 0;
  4766.                         $array['category'][$cat->getId()]['docsCount'] = 0;
  4767.                     }
  4768.                 }
  4769.                 if($i > 5)
  4770.                     $i = 0;
  4771.                 $array['category'][$cat->getId()]['color'] = $catColor[$i];
  4772.                 $i = $i + 1;
  4773.             }
  4774.             $pourcentageGlobale = 0;
  4775.             $docsUploadeCountGlobale = 0;
  4776.             $docsCountGlobale = 0;
  4777.             foreach ($array['category'] as &$item){
  4778.                 $pourcentage = (int)$item['docsCount'] ? (((int)$item['docsUploadeCount'] / (int)$item['docsCount']) * 100) : 0.0 ;
  4779.                 $item['pourcentage'] = number_format($pourcentage,1);
  4780.                 $item['pourcentage_str'] = (int)$item['docsUploadeCount'].'/'.(int)$item['docsCount'].' doc(s)';
  4781.                 $pourcentageGlobale = $pourcentage +  $pourcentageGlobale;
  4782.                 $docsUploadeCountGlobale = (int)$item['docsUploadeCount'] +  $docsUploadeCountGlobale;
  4783.                 $docsCountGlobale = (int)$item['docsCount'] +  $docsCountGlobale;
  4784.             }
  4785.             if($pourcentageGlobale > 0){
  4786.                 $array['pourcentageGlobale'] = number_format($pourcentageGlobale / count($cats),1);
  4787.                 $array['docsUploadeCountGlobale'] = $docsUploadeCountGlobale;
  4788.                 $array['docsCountGlobale'] = $docsCountGlobale;
  4789.             }else{
  4790.                 $array['pourcentageGlobale'] = 0.0;
  4791.                 $array['docsUploadeCountGlobale'] = $docsUploadeCountGlobale;
  4792.                 $array['docsCountGlobale'] = $docsCountGlobale;
  4793.             }
  4794.         }
  4795.         return $array;
  4796.     }
  4797.     private function arrayFilesNotUtile(){
  4798.         $array = [
  4799.             'fileArretePcDp',
  4800.             'fileDossierPcDp',
  4801.             'filePVPassageHuissier',
  4802.             'fileCertificatNonRecours',
  4803.             'fileCertificatNonRetrait',
  4804.             'fileCertificatNonOpposition',
  4805.             'fileCertificatNonOppositionMultiple',
  4806.             'fileDocDroc',
  4807.             'fileDaact',
  4808.             'filePromessebail',
  4809.             'fileEtatDecriptif',
  4810.             'fileEtatHypothecaire',
  4811.             'filePublicationSPR',
  4812.             'fileTitrePropriete',
  4813.             'fileBailSigne',
  4814.             'fileAvenantBail',
  4815.             'fileKbisEts',
  4816.             'fileConsuel',
  4817.             'fileContratEpc',
  4818.             'fileAnnexes',
  4819.             'fileConsuelEtap20',
  4820.             'fileTestReception',
  4821.             'fileTestPr',
  4822.             'fileDiagnostiqueCharpente',
  4823.             'fileEtudeSole',
  4824.             'fileDocEtap171',
  4825.             'fileOrderService',
  4826.             'filePlanningPrevisionnel',
  4827.             'filePVDemarrage',
  4828.             'fileCheminAcces',
  4829.             'fileDalleBetonShelter',
  4830.             'fileFondationTerminees',
  4831.             'fileNoteCalculBetonFeraillage',
  4832.             'filePhotosPlateforme',
  4833.             'filePlanImplantationBatimentAvecDalleBeton',
  4834.             'filePVReception',
  4835.             'fileNoteCalculCharpente173',
  4836.             'fileOssatureSecondaireBardage173',
  4837.             'filePhotoRenforcementBardage173Multiple',
  4838.             'filePhotoRenforcementcharpente173Multiple',
  4839.             'filePhotoRenforcementCouvertureTermine173Multiple',
  4840.             'filePlanCouverture173',
  4841.             'filePlanDescriptionTravauxDeposeCouverture173',
  4842.             'filePlanDescriptionTravauxRenforcementCharpente173',
  4843.             'filePlansCharpente173',
  4844.             'filePVreception173',
  4845.             'fileVues3d173',
  4846.             'fileDescentesCables174',
  4847.             'fileNoteCalculSousLisePV174',
  4848.             'filePhotosGenerateur174',
  4849.             'filePlanCalepinageModule174',
  4850.             'filePlanCaplageStrings174',
  4851.             'filePVReception174',
  4852.             'filePvTerminees174',
  4853.             'filePvTerminees174Multiple',
  4854.             'fileRaccordementLocalOnduleur174',
  4855.             'fileSchemaUnifilaireInstallation174',
  4856.             'fileShemaAgencementShelterPhotos174',
  4857.             'fileShemaUnifilaireSystemeMonitoring174',
  4858.             'fileTestPrMiseService174',
  4859.             'fileTestPrMiseService174Multiple',
  4860.             'filePhotosLiaisonTerminee175Multiple',
  4861.             'filePVReception175Multiple',
  4862.             'fileDaact175175Multiple',
  4863.             'fileTestVerificationTravauxElectriqueFiche174',
  4864.             'fileDaact175',
  4865.             'fileNoteCalculCableAcLiaison175',
  4866.             'filePhotosLiaisonTerminee175',
  4867.             'filePhotosLiaisonTerminee175',
  4868.             'filePlanTranchee175',
  4869.             'filePVReception175',
  4870.             'fileDoeEtap201',
  4871.             'fileMailEnedisConfirmation',
  4872.             'fileCrdSignee',
  4873.             'fileCrdSigneeSansPtf',
  4874.             'filePreuveVirement',
  4875.             'filePreuveVirementSansPtf',
  4876.             'filePtf',
  4877.             'fileCardiSigne',
  4878.             'fileCexSigne',
  4879.             'fileDoe',
  4880.             'fileAttestionInstallateur',
  4881.             'fileAttestionProducteur',
  4882.             'filePhotosMultiple',
  4883.             'fileGarantieBancaireMultiple',
  4884.             'fileContratAchatSigne'
  4885.         ];
  4886.         return $array;
  4887.     }
  4888.     public function getNbrDocUploadByEtap($etap,$classMetadata){
  4889.         $fieldNames = $classMetadata->getAssociationNames();
  4890.         $targetEntity = 'App\Entity\DocUpload';
  4891.         $docsUploadeCount = 0 ;
  4892.         $docsCount = 0 ;
  4893.         $isFilePreuveVirementMultiple = null;
  4894.         $isFileCrdSigneefMultiple = null;
  4895.         if($etap){
  4896.             foreach ($fieldNames as $fieldName) {
  4897.                 if(!in_array($fieldName,$this->arrayFilesNotUtile())){
  4898.                     $associationMappings = $classMetadata->getAssociationMapping($fieldName);
  4899.                     if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_ONE && $associationMappings['targetEntity'] === $targetEntity) {
  4900.                         $docsCount = $docsCount + 1;
  4901.                         $nameGeteurFiled = 'get'.ucfirst($fieldName);
  4902.                         $filedValue = $etap->{$nameGeteurFiled}();
  4903.                         if($filedValue){
  4904.                             $isNotArchive = false;
  4905.                             if(!$filedValue->getIsArchived()) {
  4906.                                 $isNotArchive= true;
  4907.                             }
  4908.                             if($isNotArchive){
  4909.                                 $docsUploadeCount = $docsUploadeCount +1;
  4910.                             }
  4911.                         }
  4912.                     }
  4913.                     if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_MANY && $associationMappings['targetEntity'] === $targetEntity) {
  4914.                        if($etap->getEtap()){
  4915.                            if($etap->getEtap()->getNum() != 172 or ($etap->getEtap()->getNum() == 172 and  !in_array($fieldName ,['filePhotosPlateformeMultiple','fileCheminAccesMultiple']))){
  4916.                                if(in_array($fieldName ,['filePreuveVirementSansPtfMultiple','filePreuveVirementMultiple'])){
  4917.                                    $isFilePreuveVirementMultiple = true;
  4918.                                }elseif(in_array($fieldName ,['fileCrdSigneeSansPtfMultiple','fileCrdSigneeMultiple'])){
  4919.                                    $isFileCrdSigneefMultiple = true;
  4920.                                }else{
  4921.                                    $docsCount = $docsCount + 1;
  4922.                                }
  4923.                                $nameGeteurFiled = 'get'.ucfirst($fieldName);
  4924.                                $filedValue = $etap->{$nameGeteurFiled}();
  4925.                                if(!$filedValue->isEmpty()){
  4926.                                    $isNotArchive = false;
  4927.                                    foreach ($filedValue as $item) {
  4928.                                        if(!$item->getIsArchived()) {
  4929.                                            $isNotArchive= true;
  4930.                                        }
  4931.                                    }
  4932.                                    if($isNotArchive){
  4933.                                        if(in_array($fieldName ,['filePreuveVirementSansPtfMultiple','filePreuveVirementMultiple'])){
  4934.                                            $isFilePreuveVirementMultiple = true;
  4935.                                        }elseif(in_array($fieldName ,['fileCrdSigneeSansPtfMultiple','fileCrdSigneeMultiple'])){
  4936.                                            $isFileCrdSigneefMultiple = true;
  4937.                                        }else{
  4938.                                            $docsUploadeCount = $docsUploadeCount +1;
  4939.                                        }
  4940.                                    }
  4941.                                }
  4942.                            }
  4943.                        }
  4944.                     }
  4945.                 }
  4946.             }
  4947.             if($isFilePreuveVirementMultiple){
  4948.                 $docsUploadeCount = $docsUploadeCount +1;
  4949.                 $docsCount = $docsCount + 1;
  4950.             }
  4951.             if($isFileCrdSigneefMultiple){
  4952.                 $docsUploadeCount = $docsUploadeCount +1;
  4953.                 $docsCount = $docsCount + 1;
  4954.             }
  4955.         }
  4956.         return [
  4957.             'docsUploadeCount' => $docsUploadeCount,
  4958.             'docsCount' => $docsCount,
  4959.         ];
  4960.     }
  4961.     public function getNbrDocUploadByEtapDetail($etap,$classMetadata){
  4962.         $fieldNames = $classMetadata->getAssociationNames();
  4963.         $targetEntity = 'App\Entity\DocUpload';
  4964.         $docsUploadeCount = 0 ;
  4965.         $docsCount = 0 ;
  4966.         $isFilePreuveVirementMultiple = null;
  4967.         $isFileCrdSigneefMultiple = null;
  4968.         foreach ($fieldNames as $fieldName) {
  4969.             if(!in_array($fieldName,$this->arrayFilesNotUtile())){
  4970.                 $associationMappings = $classMetadata->getAssociationMapping($fieldName);
  4971.                 if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_ONE && $associationMappings['targetEntity'] === $targetEntity) {
  4972.                     $docsCount = $docsCount + 1;
  4973.                     $nameGeteurFiled = 'get'.ucfirst($fieldName);
  4974.                     $filedValue = $etap->{$nameGeteurFiled}();
  4975.                     if($filedValue){
  4976.                         $isNotArchive = false;
  4977.                         if(!$filedValue->getIsArchived()) {
  4978.                             $isNotArchive= true;
  4979.                         }
  4980.                         if($isNotArchive){
  4981.                             $docsUploadeCount = $docsUploadeCount +1;
  4982.                         }
  4983.                     }
  4984.                 }
  4985.                 if ($associationMappings['type'] === \Doctrine\ORM\Mapping\ClassMetadata::MANY_TO_MANY && $associationMappings['targetEntity'] === $targetEntity) {
  4986.                         $docsCount = $docsCount + 1;
  4987.                         $nameGeteurFiled = 'get'.ucfirst($fieldName);
  4988.                         $filedValue = $etap->{$nameGeteurFiled}();
  4989.                         if(!$filedValue->isEmpty()){
  4990.                             $isNotArchive = false;
  4991.                             foreach ($filedValue as $item) {
  4992.                                 if(!$item->getIsArchived()) {
  4993.                                     $isNotArchive= true;
  4994.                                 }
  4995.                             }
  4996.                             if($isNotArchive){
  4997.                                 $docsUploadeCount = $docsUploadeCount +1;
  4998.                             }
  4999.                         }
  5000.                 }
  5001.             }
  5002.         }
  5003.         return [
  5004.             'docsUploadeCount' => $docsUploadeCount,
  5005.             'docsCount' => $docsCount,
  5006.         ];
  5007.     }
  5008.      public function getNomenclatureContratConstruction($etap,$file,$stringFile,$nomContrat){
  5009.         if(is_object($etap) && is_object($file)){
  5010.             $nameProject = $etap->getProject()->getName();
  5011.             $nameSpv = $etap->getProject()->getSpv()->getName();
  5012.             $extension = substr($file->getPath(), strrpos($file->getPath(), ".",-1) + 1);
  5013.             $nomContrat = $nomContrat ? $nomContrat :'';
  5014.             $nomenclature = $nameProject.' - '.$nameSpv.' - '.$stringFile.' - '.$nomContrat.'.'.$extension;
  5015.             $file->setNomenclature($nomenclature);
  5016.             $this->em->persist($file);
  5017.             $this->em->flush();
  5018.             return $nomenclature;
  5019.         }
  5020.         return false;
  5021.      }
  5022.     public function getNomenclature($etap,$file,$stringFile){
  5023.         if(is_object($etap) && is_object($file)){
  5024.             $nameProject = $etap->getProject()->getName();
  5025.             $nameSpv = $etap->getProject()->getSpv()? $etap->getProject()->getSpv()->getName() : '';
  5026.             $extension = substr($file->getPath(), strrpos($file->getPath(), ".",-1) + 1);
  5027.             $nomenclature = $nameProject.' - '.$nameSpv.' - '.$stringFile.'.'.$extension;
  5028.             $file->setNomenclature($nomenclature);
  5029.             $this->em->persist($file);
  5030.             $this->em->flush();
  5031.             return $nomenclature;
  5032.         }
  5033.         return false;
  5034.     }
  5035.     public function uploadFileToDropbox($doc,$project,$pathTo){
  5036. //        $dropboxKey = $this->params->get('dropbox_key');
  5037. //        $dropboxSecret = $this->params->get('dropbox_secret');
  5038. //        $dropboxToken= $this->params->get('dropbox_token');
  5039. //        $app = new DropboxApp($dropboxKey,$dropboxSecret,$dropboxToken);
  5040. //        $dropbox = new Dropbox($app);
  5041. //        if(is_object($doc) && is_object($project) ) {
  5042. //            try {
  5043. //                $path = $this->params->get('uploads_directory') . '/' . $doc->getPath();
  5044. //                $userName = $project->getUserCreated()->getFirstname().' '.$project->getUserCreated()->getLastname();
  5045. //                $pathTo = "/Projets signés/".trim($project->getSpv()->getName())."/Fichiers Projets/".trim($userName)."/".trim($project->getName())."/".trim($pathTo);
  5046. //                $file = $dropbox->upload($path,$pathTo );
  5047. //                $doc->setIdDropBox($file->getId());
  5048. //                $doc->setPathDropbox($file->getPathDisplay());
  5049. //                $this->em->persist($doc);
  5050. //                $this->em->flush();
  5051. //                return true;
  5052. //            } catch (DropboxClientException $e) {
  5053. //                return false;
  5054. //            }
  5055. //        }
  5056.         return true;
  5057.     }
  5058.     public function addCommentDoc($request,$doc)
  5059.     {
  5060.         $commentText = $request->get('commentText');
  5061.         $docTokenParent = $request->get('docTokenParent');
  5062.         if($commentText and $doc){
  5063.             $commentEntity = new CommentDoc();
  5064.             $commentEntity->setDocUpload($doc);
  5065.             $commentEntity->setUserCreated($this->security->getUser());
  5066.             $commentEntity->setTextComment($commentText);
  5067.             if($docTokenParent){
  5068.                 $parentDoc = $this->em->getRepository(CommentDoc::class)->find((int)$docTokenParent);
  5069.                 if($parentDoc){
  5070.                     $commentEntity->setParentComment($parentDoc);
  5071.                 }
  5072.             }
  5073.             $this->em->persist($commentEntity);
  5074.             $this->em->flush();
  5075.             return [
  5076.                 'commentEntity' => $commentEntity,
  5077.                 'success' => true
  5078.             ];
  5079.         }
  5080.         return [
  5081.             'success' => false
  5082.         ];
  5083.     }
  5084.     public function addTitreDoc($request,$doc)
  5085.     {
  5086.         $titreDoc = $request->get('titreDoc');
  5087.         if($titreDoc and $doc){
  5088.             $doc->setTitreDoc($titreDoc);
  5089.             $this->em->persist($doc);
  5090.             $this->em->flush();
  5091.             return [
  5092.                 'success' => true
  5093.             ];
  5094.         }
  5095.         return [
  5096.             'success' => false
  5097.         ];
  5098.     }
  5099.     public function addDateDoc($request,$doc)
  5100.     {
  5101.         $dateDoc = $request->get('dateDoc');
  5102.         if($dateDoc and $doc){
  5103.             $doc->setCreatedAt(new \DateTime($dateDoc));
  5104.             $this->em->persist($doc);
  5105.             $this->em->flush();
  5106.             return [
  5107.                 'success' => true
  5108.             ];
  5109.         }
  5110.         return [
  5111.             'success' => false
  5112.         ];
  5113.     }
  5114.     function groupSousCommentItems($menu, $level = 0)
  5115.     {
  5116.         $menuArray = [
  5117.             'id' => $menu->getId(),
  5118.             'textComment' => $menu->getTextComment(),
  5119.             'doc' => $menu->getDocUpload(),
  5120.             'user' => $menu->getUserCreated(),
  5121.             'createdAt' => $menu->getCreatedAt(),
  5122.             'level' => $level,
  5123.             'sub_menus' => [],
  5124.         ];
  5125.         $tab = [];
  5126. //        $menuArray['url_sub_menu'] = $this->getUrlSubComment($menu,$tab);
  5127.         foreach ($menu->getSubComments() as $subMenu) {
  5128.             $menuArray['sub_menus'][] = $this->groupSousCommentItems($subMenu,$level + 1);
  5129.         }
  5130.         return $menuArray;
  5131.     }
  5132.     function groupMenuTab($menus)
  5133.     {
  5134.         $array = [];
  5135.         foreach ($menus as $menu) {
  5136.             if($menu->getParentComment() == null){
  5137.                 $array[] = $this->groupSousCommentItems($menu);
  5138.             }
  5139.         }
  5140.         return $array;
  5141.     }
  5142.     function getUrlSubComment($menu,&$array)
  5143.     {
  5144.         if($menu){
  5145.             $array[] = $menu->getUrl();
  5146.             if($menu->getSubMenus()){
  5147.                 foreach ($menu->getSubMenus() as $item){
  5148.                     $this->getUrlSubComment($item,$array);
  5149.                 }
  5150.             }
  5151.         }
  5152.         return $array;
  5153.     }
  5154.     public function updateStatusTrackerAllProjects(){
  5155.         $projects = $this->em->getRepository(Project::class)->findAll();
  5156.         foreach ($projects as $project){
  5157.             $this->updateStatusTracker($project);
  5158.         }
  5159.     }
  5160.     public function updateStatusTracker($project,$isDev5 = false){
  5161.         if($project){
  5162.             // Développement
  5163.             $isDev0Identifie = true;
  5164.             $isDev0Bis = false;
  5165.             $isDev1 = false;
  5166.             $isDev2 = false;
  5167.             $isDev3 = false;
  5168.             $isDev4 = false;
  5169.             $isDev5 = false;
  5170.             $isDev6 = false;
  5171.             $etap5 = $this->em->getRepository(Etap5::class)->findOneBy(['project'=>$project->getId()]);
  5172.             if ($etap5 && $etap5->getDateSignature()) {
  5173.                 $isDev0Bis = true;
  5174.             }
  5175.             if($project->getFilePromessebail()){
  5176.                 $isDev1 = true ;
  5177.             }elseif ($etap5 && $this->checkDocNotArchive($etap5->getFilePromessebailMultiple())) {
  5178.                 $isDev1 = true ;
  5179.             }
  5180.             if($project->getIsPromesseBailSignee() || $etap5->getDateExpirationPromesseBail()){
  5181.                 $isDev1 = true ;
  5182.             }
  5183.             $etap1 = $this->em->getRepository(Etap1::class)->findOneBy(['project'=>$project->getId()]);
  5184.             if ($etap1 && $etap1->getDateDepotPc()) {
  5185.                 $isDev2 = true;
  5186.             }
  5187.             if($etap1 && $this->checkDocNotArchive($etap1->getFileArretePcDpMultiple())){
  5188.                 $isDev3 = true ;
  5189.             }elseif ($etap1 && $etap1->getDateArretePcDp()) {
  5190.                 $isDev3 = true ;
  5191.             }
  5192.             $etap2 = $this->em->getRepository(Etap2::class)->findOneBy(['project'=>$project->getId()]);
  5193.             if ($etap2 && $etap2->getDatePcDpPurge()) {
  5194.                 $isDev4 = true;
  5195.             }
  5196.             $etap10 = $this->em->getRepository(Etap10::class)->findOneBy(['project'=>$project->getId()]);
  5197.             if($etap10 && $this->checkDocNotArchive( $etap10->getFileCrdSigneeMultiple())){
  5198.                 $isDev5 = true ;
  5199.             }elseif ($etap10 && $this->checkDocNotArchive($etap10->getFileCrdSigneeSansPtfMultiple())) {
  5200.                 $isDev5 = true ;
  5201.             }
  5202.             $etap7 = $this->em->getRepository(Etap7::class)->findOneBy(['project'=>$project->getId()]);
  5203.             if($etap7 && $this->checkDocNotArchive($etap7->getFileBailSigneMultiple())){
  5204.                 $isDev6 = true ;
  5205.             }
  5206.             if($etap7 && $etap7->getDateSignatureBail()){
  5207.                 $isDev6 = true ;
  5208.             }
  5209.             // Construction
  5210.             $isDev7 = false;
  5211.             $isDev8 = false;
  5212.             $isDev9 = false;
  5213.             $dateNow = new \DateTime();
  5214.             $dateNow1 = new \DateTime($dateNow->format('Y-m-d').' 23:59:59');
  5215.             $etap172 = $this->em->getRepository(Etap172::class)->findOneBy(['project'=>$project->getId()]);
  5216.             $etap173 = $this->em->getRepository(Etap173::class)->findOneBy(['project'=>$project->getId()]);
  5217.             $etap174 = $this->em->getRepository(Etap174::class)->findOneBy(['project'=>$project->getId()]);
  5218.             if($etap172 && $etap172->getDateDebutFondation() && ($dateNow1 >= $etap172->getDateDebutFondation())){
  5219.                 $isDev7 = true ;
  5220.             }elseif ($etap173 && $etap173->getDateDebutCharpente() && ($dateNow1 >= $etap173->getDateDebutCharpente()) ){
  5221.                 $isDev7 = true ;
  5222.             }elseif ($etap173 && $etap173->getDateDebutCouverture() && ($dateNow1 >= $etap173->getDateDebutCouverture()) ){
  5223.                 $isDev7 = true ;
  5224.             }elseif ($etap174 && $etap174->getDateDebutPosePv() && ($dateNow1 >= $etap174->getDateDebutPosePv()) ){
  5225.                 $isDev7 = true ;
  5226.             }
  5227.             $etap175 = $this->em->getRepository(Etap175::class)->findOneBy(['project'=>$project->getId()]);
  5228.             if($etap175 && $etap175->getDateAchevementTraveaux() && ($dateNow1 >= $etap175->getDateAchevementTraveaux()) ){
  5229.                 $isDev8 = true ;
  5230.             }
  5231.             $etap20 = $this->em->getRepository(Etap20::class)->findOneBy(['project'=>$project->getId()]);
  5232.             $etap13 = $this->em->getRepository(Etap13::class)->findOneBy(['project'=>$project->getId()]);
  5233.             if($etap20 && $this->checkDocNotArchive($etap20->getFileConsuelEtap20Multiple())){
  5234.                 $isDev9 = true ;
  5235.             }elseif ($etap20 && $etap20->getDateConsuelEtap20()) {
  5236.                 $isDev9 = true ;
  5237.             }
  5238.             if($etap13 && $this->checkDocNotArchive($etap13->getFileConsuelMultiple())){
  5239.                 $isDev9 = true ;
  5240.             }elseif ($etap13 && $etap13->getFileConsuel()) {
  5241.                 $isDev9 = true ;
  5242.             }elseif ($etap13 && $etap13->getDateConsuel()) {
  5243.                 $isDev9 = true ;
  5244.             }
  5245.             // Exploitation
  5246.             $isOperating = false;
  5247.             $etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project'=>$project->getId()]);
  5248.             if($etap14 && $etap14->getDateMiseEnService()){
  5249.                 $isOperating = true ;
  5250.             }elseif ($project->getDateMiseEnService()) {
  5251.                 $isOperating = true ;
  5252.             }
  5253.             $status = 0;
  5254.             $statusAdministrateur = 0;
  5255.             if($isOperating){
  5256.                 $status = StatusTracker::STATUS_operating;
  5257.             }elseif ($isDev9){
  5258.                 $status = StatusTracker::STATUS_dev_6;
  5259.             }elseif ($isDev8){
  5260.                 $status = StatusTracker::STATUS_dev_5;
  5261.             }elseif ($isDev7){
  5262.                 $status = StatusTracker::STATUS_dev_4;
  5263.             }elseif ($isDev6){
  5264.                 $status = StatusTracker::STATUS_dev_3;
  5265.             }elseif ($isDev5){
  5266.                 $status = StatusTracker::STATUS_dev_2;
  5267.             }elseif ($isDev4){
  5268.                 $status = StatusTracker::STATUS_dev_4_new;
  5269.             }elseif ($isDev3){
  5270.                 $status = StatusTracker::STATUS_dev_1;
  5271.             }elseif ($isDev2){
  5272.                 $status = StatusTracker::STATUS_dev_2_new;
  5273.             }elseif ($isDev1){
  5274.                 $status = StatusTracker::STATUS_dev_0;
  5275.             }elseif ($isDev0Bis){
  5276.                 $status = StatusTracker::STATUS_dev_0_bis;
  5277.             } elseif ($isDev0Identifie){
  5278.                 $status = StatusTracker::STATUS_dev_0_identifie;
  5279.             }
  5280.             if(in_array($status,[StatusTracker::STATUS_operating])){
  5281.                 $statusAdministrateur = Project::STATUS_CUSTOM_EXPLOITATION;
  5282.             }elseif (in_array($status,[StatusTracker::STATUS_dev_6,StatusTracker::STATUS_dev_5,StatusTracker::STATUS_dev_4])){
  5283.                 $statusAdministrateur = Project::STATUS_CUSTOM_CONSTRUCTION;
  5284.             }elseif (in_array($status,[StatusTracker::STATUS_dev_3,StatusTracker::STATUS_dev_2,StatusTracker::STATUS_dev_4_new,StatusTracker::STATUS_dev_1,StatusTracker::STATUS_dev_2_new,StatusTracker::STATUS_dev_0,StatusTracker::STATUS_dev_0_bis,StatusTracker::STATUS_dev_0_identifie])){
  5285.                 $statusAdministrateur = Project::STATUS_CUSTOM_DEVELOPPEMENT;
  5286.             }
  5287.             // status 0 identifie
  5288.             $statusDev0Identifie = $this->em->getRepository(StatusTracker::class)->findOneBy(['project'=>$project->getId(),'status'=>StatusTracker::STATUS_dev_0_identifie]);
  5289.             if($statusDev0Identifie){
  5290.                 $statusDev0Identifie->setCreatedAt($project->getCreatedAt());
  5291.             }else{
  5292.                 $entity = new StatusTracker();
  5293.                 $entity->setCreatedAt($project->getCreatedAt());
  5294.                 $entity->setProject($project);
  5295.                 $entity->setStatus(StatusTracker::STATUS_dev_0_identifie);
  5296.                 $entity->setStatusAdministratif(Project::STATUS_CUSTOM_DEVELOPPEMENT);
  5297.                 $this->em->persist($entity);
  5298.             }
  5299.             $statusTrackerProject = $this->em->getRepository(StatusTracker::class)->findOneBy(['project'=>$project->getId()],['createdAt'=>'desc']);
  5300.             if($status == StatusTracker::STATUS_dev_0_identifie){
  5301.                 $dateStatus = $project->getCreatedAt();
  5302.             }else{
  5303.                 $dateStatus = new \DateTime();
  5304.             }
  5305.             if($statusTrackerProject){
  5306.                 if($statusTrackerProject->getStatus() != $status){
  5307.                     $entity = new StatusTracker();
  5308.                     $entity->setCreatedAt($dateStatus);
  5309.                     $entity->setProject($project);
  5310.                     $entity->setStatus($status);
  5311.                     $entity->setStatusAdministratif($statusAdministrateur);
  5312.                     $this->em->persist($entity);
  5313.                     $project->setStatusAdministratif($statusAdministrateur);
  5314.                     $project->setStatusTrackerActuel($status);
  5315.                     $this->em->persist($project);
  5316.                     $this->em->flush();
  5317.                 }else{
  5318.                     $statusTrackerProject->setProject($project);
  5319.                     $statusTrackerProject->setStatus($status);
  5320.                     $statusTrackerProject->setCreatedAt($dateStatus);
  5321.                     $statusTrackerProject->setStatusAdministratif($statusAdministrateur);
  5322.                     $this->em->persist($statusTrackerProject);
  5323.                     $project->setStatusAdministratif($statusAdministrateur);
  5324.                     $project->setStatusTrackerActuel($status);
  5325.                     $this->em->persist($project);
  5326.                     $this->em->flush();
  5327.                 }
  5328.             }else{
  5329.                 $entity = new StatusTracker();
  5330.                 $entity->setProject($project);
  5331.                 $entity->setStatus($status);
  5332.                 $entity->setCreatedAt($dateStatus);
  5333.                 $entity->setStatusAdministratif($statusAdministrateur);
  5334.                 $this->em->persist($entity);
  5335.                 $project->setStatusAdministratif($statusAdministrateur);
  5336.                 $project->setStatusTrackerActuel($status);
  5337.                 $this->em->persist($project);
  5338.                 $this->em->flush();
  5339.             }
  5340.             $this->updateStatusUrbanisme($project);
  5341.             $this->updateStatusFoncier($project);
  5342.             $this->updateStatusTrackerConstruction($project);
  5343.         }
  5344.     }
  5345.     public function checkDocNotArchive($array){
  5346.         $isNotVide = false;
  5347.         if($array){
  5348.             foreach ($array as $item){
  5349.                 if(!$item->getIsArchived()){
  5350.                     $isNotVide = true;
  5351.                     break;
  5352.                 }
  5353.             }
  5354.         }
  5355.         return $isNotVide ;
  5356.     }
  5357.     public function getChampsUpdates(){
  5358.         $array = [];
  5359.         $array[0]['name'] = 'SPV';$array[0]['value'] = 'projet-1-etap-0-spv' ;
  5360.         $array[1]['name'] = 'Adresse';$array[1]['value'] = 'projet-1-etap-0-adresse' ;
  5361.         $array[2]['name'] = 'Code postal';$array[2]['value'] = 'projet-1-etap-0-codePostal' ;
  5362.         $array[3]['name'] = 'Ville';$array[3]['value'] = 'projet-1-etap-0-city' ;
  5363.         $array[4]['name'] = 'Point GPS de la Future Centrale (Latitude)';$array[4]['value'] = 'projet-1-etap-0-longi' ;
  5364.         $array[5]['name'] = 'Point GPS de la Future Centrale (Longitude)';$array[5]['value'] = 'projet-1-etap-0-lat' ;
  5365.         $array[6]['name'] = 'Parcelle';$array[6]['value'] = 'projet-1-etap-0-numParcelle' ;
  5366.         $array[7]['name'] = 'Date T0 du projet';$array[7]['value'] = 'projet-1-etap-0-DateT0Date-1' ;
  5367.         $array[8]['name'] = 'Statut Administratif';$array[8]['value'] = 'projet-1-etap-0-statusAdministratif' ;
  5368.         $array[9]['name'] = 'Reference PC/DP (Etape 1 Timeline Urbanisme)';$array[9]['value'] = 'projet-0-etap-1-referencePc' ;
  5369.         $array[10]['name'] = 'Date Arrete PC/DP (Etape 1 Timeline Urbanisme)';$array[10]['value'] = 'projet-0-etap-1-dateArretePcDp-1' ;
  5370.         $array[11]['name'] = 'Date 1 passage huissier PC (Etape 2 Timeline Urbanisme)';$array[11]['value'] = 'projet-0-etap-2-date1PassageHuissier-1' ;
  5371.         $array[12]['name'] = 'Date 2 passage huissier PC (Etape 2 Timeline Urbanisme)';$array[12]['value'] = 'projet-0-etap-2-date2PassageHuissier-1' ;
  5372.         $array[13]['name'] = 'Date 3 passage huissier PC (Etape 2 Timeline Urbanisme)';$array[13]['value'] = 'projet-0-etap-2-date3PassageHuissier-1' ;
  5373.         $array[14]['name'] = 'Date PDB (Etape 1 Timeline Foncier)';$array[14]['value'] = 'projet-0-etap-5-dateExpirationPromesseBail-1' ;
  5374.         $array[15]['name'] = 'Loyer';$array[15]['value'] = 'projet-0-etap-5-loyerConfirme' ;
  5375.         $array[16]['name'] = 'Soulte';$array[16]['value'] = 'projet-0-etap-5-soulteConfirme' ;
  5376.         $array[17]['name'] = 'Duree du bail';$array[17]['value'] = 'projet-0-etap-5-dureeBail' ;
  5377.         $array[17001]['name'] = 'Durée de prorogation (en mois)';$array[17001]['value'] = 'projet-0-etap-5-d2' ;
  5378.         $array[18]['name'] = 'SIRET de l\'ETS';$array[18]['value'] = 'projet-0-etap-8-siretEts' ;
  5379.         $array[19]['name'] = 'Numero de parcelle';$array[19]['value'] = 'projet-0-etap-8-numParcelleEtablissement' ;
  5380. //        $array[20]['name'] = 'Tarif Fit prévisionnel';$array[20]['value'] = 'projet-0-etap-9-tarifFit' ;
  5381.         $array[21]['name'] = 'Reference Enedis';$array[21]['value'] = 'projet-0-etap-10-referenceEnedis' ;
  5382.         $array[22]['name'] = 'Numero de contrat (CARDI)';$array[22]['value'] = 'projet-0-etap-12-numeroCardiMultiple-0-numeroCardi' ;
  5383.         $array[23]['name'] = 'Date du consuel';$array[23]['value'] = 'projet-0-etap-13-dateConsuel-1' ;
  5384.         $array[24]['name'] = 'Nom du bailleur';$array[24]['value'] = 'projet-0-etap-14-firstnameProprietaire' ;
  5385.         $array[25]['name'] = 'Prenom du bailleur';$array[25]['value'] = 'projet-0-etap-14-lastnameProprietaire' ;
  5386.         $array[26]['name'] = 'Numero de telephone du proprietaire';$array[26]['value'] = 'projet-0-etap-14-phoneProprietaire' ;
  5387.         $array[27]['name'] = 'E-mail du proprietaire';$array[27]['value'] = 'projet-0-etap-14-emailProprietaire' ;
  5388.         $array[28]['name'] = 'Numero de contrat d\'Achat(BTA) (Etape 8 Timeline raccordement)';$array[28]['value'] = 'projet-0-etap-15-informationMultiple-0-numeroContratAchat' ;
  5389.         $array[28001]['name'] = 'Type de contrat (Etape 8 Timeline raccordement)';$array[28001]['value'] = 'projet-0-etap-15-informationMultiple-0-typeContrat' ;
  5390.         $array[29]['name'] = 'Capacité installée (KWc)';$array[29]['value'] = 'projet-1-etap-0-capacite' ;
  5391.         $array[1030]['name'] = 'Capacité injectée (kVA)';$array[1030]['value'] = 'projet-1-etap-0-puissance' ;
  5392.         $array[30]['name'] = 'Productible (P50)';$array[30]['value'] = 'projet-1-etap-0-productible' ;
  5393.         $array[30]['name'] = 'Type de batîment';$array[30]['value'] = 'projet-1-etap-0-typeBatimentProject' ;
  5394.         $array[31]['name'] = 'Date de dépôt de la DOC / DROC (Etape 3 Timeline Urbanisme)';$array[31]['value'] = 'projet-0-etap-3-dateDocDroc-1' ;
  5395.         $array[32]['name'] = 'Date de dépôt de la DAACT (Etape 4 Timeline Urbanisme)';$array[32]['value'] = 'projet-0-etap-4-dateDaact-1' ;
  5396.         $array[33]['name'] = 'Durée de validité (en mois) (Etape 1 Timeline foncier)';$array[33]['value'] = 'projet-0-etap-5-d1' ;
  5397.         $array[60]['name'] = 'Durée de prorogation (en mois) (Etape 1 Timeline foncier)';$array[60]['value'] = 'projet-0-etap-5-d2' ;
  5398.         $array[34]['name'] = 'Contrepartie en nature (Etape 1 Timeline foncier)';$array[34]['value'] = 'projet-0-etap-5-loyerEnNature' ;
  5399.         $array[34]['name'] = 'Nom du notaire (Etape 2 Timeline foncier)';$array[34]['value'] = 'projet-0-etap-6-nomNotaire' ;
  5400. //        $array[35]['name'] = 'Date maximale d\'achèvement des travaux (Etape 2 Timeline raccordement)';$array[35]['value'] = 'projet-0-etap-9-dateMaximaleAchevement-1' ;
  5401.         $array[36]['name'] = 'Montant acompte (Etape 3 Timeline raccordement)';$array[36]['value'] = 'projet-0-etap-10-montantAcompte' ;
  5402.         $array[37]['name'] = 'Montant coût total (Etape 3 Timeline raccordement)';$array[37]['value'] = 'projet-0-etap-10-montantCoutTotal' ;
  5403.         $array[37]['name'] = 'Numéro PRM (Etape 4 Timeline raccordement)';$array[37]['value'] = 'projet-0-etap-12-numeroCardiMultiple-0-identifiantEnedis' ;
  5404.         $array[38]['name'] = 'Date du consuel (Etape 5 Timeline raccordement)';$array[38]['value'] = 'projet-0-etap-13-dateConsuel-1' ;
  5405.         $array[39]['name'] = 'Date de mise en service (Etape 6 Timeline raccordement)';$array[39]['value'] = 'projet-0-etap-14-dateMiseEnService-1' ;
  5406.         $array[40]['name'] = 'Tarif (Etape 8 Timeline raccordement)';$array[40]['value'] = 'projet-0-etap-15-tarifContratAchat' ;
  5407.         $array[41]['name'] = 'Date de début de contrat d’achat (Etape 8 Timeline raccordement)';$array[41]['value'] = 'projet-0-etap-15-dateDebutContratAchat-1' ;
  5408.         $array[42]['name'] = 'Date de fin de contrat d’achat (Etape 8 Timeline raccordement)';$array[42]['value'] = 'projet-0-etap-15-dateFinContratAchat-1' ;
  5409.         $array[43]['name'] = 'Périodicité de la facturation (Etape 8 Timeline raccordement)';$array[43]['value'] = 'projet-0-etap-15-peridiciteFacturation' ;
  5410.         $array[44]['name'] = 'Date début des fondations (Etape 4-2 Timeline construction)';$array[44]['value'] = 'projet-0-etap-172-dateDebutFondation-1' ;
  5411.         $array[45]['name'] = 'Début renfort charpente (Etape 4-3 Timeline construction)';$array[45]['value'] = 'projet-0-etap-173-dateDebutCharpente-1' ;
  5412.         $array[46]['name'] = 'Fin renfort charpente (Etape 4-3 Timeline construction)';$array[46]['value'] = 'projet-0-etap-173-dateFinCharpente-1' ;
  5413.         $array[47]['name'] = 'Début couverture (Etape 4-3 Timeline construction)';$array[47]['value'] = 'projet-0-etap-173-dateDebutCouverture-1' ;
  5414.         $array[48]['name'] = 'Fin couverture (Etape 4-3 Timeline construction)';$array[48]['value'] = 'projet-0-etap-173-dateFinCouverture-1' ;
  5415.         $array[49]['name'] = 'Début pose PV (Etape 4-4 Timeline construction)';$array[49]['value'] = 'projet-0-etap-174-dateDebutPosePv-1' ;
  5416.         $array[50]['name'] = 'Fin pose PV (Etape 4-4 Timeline construction)';$array[50]['value'] = 'projet-0-etap-174-dateFinPosePv-1' ;
  5417.         $array[51]['name'] = 'Date d’achèvement des travaux (Etape 4-5 Timeline construction)';$array[51]['value'] = 'projet-0-etap-175-dateAchevementTraveaux-1' ;
  5418.         $array[52]['name'] = 'Date du consuel (Etape 5 Timeline construction)';$array[52]['value'] = 'projet-0-etap-20-dateConsuelEtap20-1' ;
  5419.         $array[53]['name'] = 'Date du raccordement (Etape 7 Timeline construction)';$array[53]['value'] = 'projet-0-etap-21-dateRaccordement-1' ;
  5420.         $array[54]['name'] = 'Date de mise en service (Etape 7 Timeline construction)';$array[54]['value'] = 'projet-0-etap-21-dateMiseEnService-1' ;
  5421.         $array[55]['name'] = 'Prix EPC (Etape 3 Timeline construction)';$array[55]['value'] = 'projet-0-etap-16-prixEpc' ;
  5422.         $array[56]['name'] = 'Budget Développement';$array[56]['value'] = 'projet-1-etap-0-budgetDeveloppement' ;
  5423.         $array[57]['name'] = 'Budget Construction';$array[57]['value'] = 'projet-1-etap-0-budgetConstruction' ;
  5424.         $array[58]['name'] = 'Budget Exploitation';$array[58]['value'] = 'projet-1-etap-0-budgetExploitation' ;
  5425.         $array[59]['name'] = 'Stade de construction';$array[59]['value'] = 'projet-1-etap-0-stadeConstruction' ;
  5426.         $array[60]['name'] = 'Etat charpente (Etape 0 Timeline Construction)';$array[60]['value'] = 'projet-0-etap-159-etatCharpente' ;
  5427.         $array[61]['name'] = 'Type de toiture existante (Etape 0 Timeline Construction)';$array[61]['value'] = 'projet-0-etap-159-typeToitureExistante' ;
  5428.         $array[62]['name'] = 'Type de rénovation (Etape 0 Timeline Construction)';$array[62]['value'] = 'projet-0-etap-159-typeRenovation' ;
  5429.         $array[63]['name'] = 'Type de toiture à poser (Etape 0 Timeline Construction)';$array[63]['value'] = 'projet-0-etap-159-typeToiturePoser' ;
  5430.         $array[64]['name'] = 'Terrassement (Etape 1 Timeline foncier)';$array[64]['value'] = 'projet-0-etap-5-terrassement' ;
  5431.         $array[65]['name'] = 'Tranchée (Etape 1 Timeline foncier)';$array[65]['value'] = 'projet-0-etap-5-tranchee' ;
  5432.         $array[66]['name'] = 'Bardage (Etape 1 Timeline foncier)';$array[66]['value'] = 'projet-0-etap-5-bardage' ;
  5433.         $array[67]['name'] = 'Rénovation charpente (Etape 1 Timeline foncier)';$array[67]['value'] = 'projet-0-etap-5-renovationCharpente' ;
  5434.         $array[68]['name'] = 'Désamiantage (Etape 1 Timeline foncier)';$array[68]['value'] = 'projet-0-etap-5-desamiantage' ;
  5435.         $array[69]['name'] = 'Montant coût total (Etape 3 Timeline Raccordement)';$array[69]['value'] = 'projet-0-etap-10-montantCoutTotal' ;
  5436.         $array[70]['name'] = 'Adresse (Etape 7 Timeline raccordement)';$array[70]['value'] = 'projet-0-etap-14-adresseMiseEnService' ;
  5437.         $array[71]['name'] = 'Code postal (Etape 7 Timeline raccordement)';$array[71]['value'] = 'projet-0-etap-14-codePostalMiseEnService' ;
  5438.         $array[72]['name'] = 'Ville (Etape 7 Timeline raccordement)';$array[72]['value'] = 'projet-0-etap-14-cityMiseEnService' ;
  5439.         $array[74]['name'] = 'Commentaire';$array[74]['value'] = 'projet-1-etap-0-commentProject2-0-comment' ;
  5440.         $array[73]['name'] = 'Productible (P90)';$array[73]['value'] = 'projet-1-etap-0-productibleP90' ;
  5441.         $array[75]['name'] = 'Levée d’option date';$array[75]['value'] = 'projet-0-etap-5-leveeOption-1' ;
  5442.         $array[76]['name'] = 'les parcelles du projet (Etape 2 Timeline Foncier)';$array[76]['value'] = 'projet-0-etap-6-parcellesProjet' ;
  5443.         $array[77]['name'] = 'les propriétaires (Etape 2 Timeline Foncier)';$array[77]['value'] = 'projet-0-etap-6-proprietaires' ;
  5444.         $array[78]['name'] = 'Situation foncière (Etape 2 Timeline Foncier)';$array[78]['value'] = 'projet-0-etap-6-situationFonciere' ;
  5445.         $array[79]['name'] = 'Statut Mainlevée (Etape 2 Timeline Foncier)';$array[79]['value'] = 'projet-0-etap-6-statutMainlevee' ;
  5446.         $array[3000]['name'] = 'Marque Module (Étape 1  Timeline Construction)';$array[3000]['value'] = 'projet-0-etap-160-moduleInformation-0-marque-moduleInformation' ;
  5447.         $array[3001]['name'] = 'Puissance crête (Étape 1  Timeline Construction)';$array[3001]['value'] = 'projet-0-etap-160-moduleInformation-0-reference-moduleInformation' ;
  5448.         $array[3002]['name'] = 'Nombre de modules (Étape 1  Timeline Construction)';$array[3002]['value'] = 'projet-0-etap-160-moduleInformation-0-nbr-moduleInformation' ;
  5449.         $array[3003]['name'] = 'Marque Onduleur (Étape 1  Timeline Construction)';$array[3003]['value'] = 'projet-0-etap-160-onduleurInformation-0-marque-onduleurInformation' ;
  5450.         $array[3004]['name'] = 'Puissance Onduleur (Étape 1  Timeline Construction)';$array[3004]['value'] = 'projet-0-etap-160-onduleurInformation-0-puissance-onduleurInformation' ;
  5451.         $array[3005]['name'] = 'Nombre de Onduleurs (Étape 1  Timeline Construction)';$array[3005]['value'] = 'projet-0-etap-160-onduleurInformation-0-nbr-onduleurInformation' ;
  5452.         $array[3006]['name'] = 'Responsable construction';$array[3006]['value'] = 'projet-1-etap-0-responsableUser' ;
  5453.         $array[3007]['name'] = 'Installateur';$array[3007]['value'] = 'projet-1-etap-0-fournisseurProject-Installateur' ;
  5454.         $array[3008]['name'] = 'Charpentier';$array[3008]['value'] = 'projet-1-etap-0-fournisseurProject-Charpentier' ;
  5455.         $array[3010]['name'] = 'Mainteneur';$array[3010]['value'] = 'projet-1-etap-0-fournisseurProject-Mainteneur' ;
  5456.         $array[3009]['name'] = 'Epc';$array[3009]['value'] = 'projet-1-etap-0-fournisseur' ;
  5457.         // Champs projet (Détail projet) — indices 5000+
  5458.         $array[5000]['name'] = 'Achat - Location';$array[5000]['value'] = 'projet-1-etap-0-achatLocation' ;
  5459.         $array[5001]['name'] = 'Date de sourcing';$array[5001]['value'] = 'projet-1-etap-0-dateSourcing-1' ;
  5460.         $array[5002]['name'] = 'Date de T0 non reçu';$array[5002]['value'] = 'projet-1-etap-0-dateT0NonRecu' ;
  5461.         $array[5003]['name'] = 'Département';$array[5003]['value'] = 'projet-1-etap-0-departement' ;
  5462.         $array[5004]['name'] = 'Entreprise';$array[5004]['value'] = 'projet-1-etap-0-entreprise' ;
  5463.         $array[5005]['name'] = 'Famille du projet';$array[5005]['value'] = 'projet-1-etap-0-familleProject' ;
  5464.         $array[5006]['name'] = 'Indemnité transitoire (k€/an)';$array[5006]['value'] = 'projet-1-etap-0-indemiteTransitoire' ;
  5465.         $array[5007]['name'] = 'Arrêté PC non reçu';$array[5007]['value'] = 'projet-1-etap-0-isArretePcNonRecu' ;
  5466.         $array[5008]['name'] = 'Promesse de vente signée';$array[5008]['value'] = 'projet-1-etap-0-isPromesseAchatSignee' ;
  5467.         $array[5009]['name'] = 'Promesse de bail signée';$array[5009]['value'] = 'projet-1-etap-0-isPromesseBailSignee' ;
  5468.         $array[5010]['name'] = 'Prix d’achat foncier (€) (Détail projet)';$array[5010]['value'] = 'projet-1-etap-0-prixAchatFoncier' ;
  5469.         $array[5011]['name'] = 'Prix d’achat foncier (k€/ha)';$array[5011]['value'] = 'projet-1-etap-0-prixAchatFoncierKHa' ;
  5470.         $array[5012]['name'] = 'Prix d’achat foncier (k€/MWc)';$array[5012]['value'] = 'projet-1-etap-0-prixAchatFoncierKMWc' ;
  5471.         $array[5013]['name'] = 'Productible (P50)';$array[5013]['value'] = 'projet-1-etap-0-productible' ;
  5472.         $array[5014]['name'] = 'Ranking';$array[5014]['value'] = 'projet-1-etap-0-ranking' ;
  5473.         $array[5015]['name'] = 'Ratio CAPEX/Puissance';$array[5015]['value'] = 'projet-1-etap-0-ratioCapexPuissance' ;
  5474.         $array[5016]['name'] = 'Rémunération exploitant agricole';$array[5016]['value'] = 'projet-1-etap-0-remunerationExploitantAgricole' ;
  5475.         $array[5017]['name'] = 'Rendement EBE/CAPEX';$array[5017]['value'] = 'projet-1-etap-0-rendementEbeCapex' ;
  5476.         $array[5018]['name'] = 'Rendement EBE/CAPEX PPA 70 Euros';$array[5018]['value'] = 'projet-1-etap-0-rendementEbeCapexPPA' ;
  5477.         $array[5019]['name'] = 'Soulte (Détail projet)';$array[5019]['value'] = 'projet-1-etap-0-soulteVise' ;
  5478.         $array[5020]['name'] = 'Sourcing';$array[5020]['value'] = 'projet-1-etap-0-sourcing' ;
  5479.         $array[5021]['name'] = 'Sous-famille du projet';$array[5021]['value'] = 'projet-1-etap-0-sousFamilleProject' ;
  5480.         $array[5022]['name'] = 'Surface disponible (en ha)';$array[5022]['value'] = 'projet-1-etap-0-surfaceDisponible' ;
  5481.         $array[5023]['name'] = 'Surface exploitable (en ha)';$array[5023]['value'] = 'projet-1-etap-0-surfaceExploitable' ;
  5482.         $array[5024]['name'] = 'Tarif Fit prévisionnel (Détail projet)';$array[5024]['value'] = 'projet-1-etap-0-tarifRevente' ;
  5483.         $array[5025]['name'] = 'Tranche';$array[5025]['value'] = 'projet-1-etap-0-tranche' ;
  5484.         $array[5026]['name'] = 'TRI';$array[5026]['value'] = 'projet-1-etap-0-tri' ;
  5485.         $array[5027]['name'] = 'TRI PPA à 70 euros';$array[5027]['value'] = 'projet-1-etap-0-triPpaMin' ;
  5486.         $array[5028]['name'] = 'TRI avec Prime';$array[5028]['value'] = 'projet-1-etap-0-triPrime' ;
  5487.         $array[5029]['name'] = 'Typologie du projet';$array[5029]['value'] = 'projet-1-etap-0-typologieProject' ;
  5488.         $array[5030]['name'] = 'Unité de mesure';$array[5030]['value'] = 'projet-1-etap-0-uniteMesure' ;
  5489.         $array[5031]['name'] = 'Zonage PLU';$array[5031]['value'] = 'projet-1-etap-0-zonagePlu' ;
  5490.         // Champs étapes — indices 5100+
  5491.         $array[5100]['name'] = 'Nom de l’architecte (Etape 0 Timeline Urbanisme)';$array[5100]['value'] = 'projet-0-etap-0-architecte' ;
  5492.         $array[5101]['name'] = 'Champ libre PC (Etape 1 Timeline Urbanisme)';$array[5101]['value'] = 'projet-0-etap-1-champLibre' ;
  5493.         $array[5102]['name'] = 'Date demande de compléments PC (Etape 1 Timeline Urbanisme)';$array[5102]['value'] = 'projet-0-etap-1-dateDemandeComplement-1' ;
  5494.         $array[5103]['name'] = 'Date demande de compléments DP Mixte (Etape 1 Timeline Urbanisme)';$array[5103]['value'] = 'projet-0-etap-1-dateDemandeComplementPcDpMixte-1' ;
  5495.         $array[5104]['name'] = 'Date de dépôt compléments PC (Etape 1 Timeline Urbanisme)';$array[5104]['value'] = 'projet-0-etap-1-dateDepotComplement-1' ;
  5496.         $array[5105]['name'] = 'Date de dépôt compléments DP Mixte (Etape 1 Timeline Urbanisme)';$array[5105]['value'] = 'projet-0-etap-1-dateDepotComplementPcDpMixte-1' ;
  5497.         $array[5106]['name'] = 'Date de dépôt PC (Etape 1 Timeline Urbanisme)';$array[5106]['value'] = 'projet-0-etap-1-dateDepotPc-1' ;
  5498.         $array[5107]['name'] = 'Date de dépôt DP Mixte (Etape 1 Timeline Urbanisme)';$array[5107]['value'] = 'projet-0-etap-1-dateDepotPcDpMixte-1' ;
  5499.         $array[5108]['name'] = 'Délai d’instruction PC (Etape 1 Timeline Urbanisme)';$array[5108]['value'] = 'projet-0-etap-1-delaiInstruction' ;
  5500.         $array[5109]['name'] = 'Délai d’instruction DP Mixte (Etape 1 Timeline Urbanisme)';$array[5109]['value'] = 'projet-0-etap-1-delaiInstructionPcDpMixte' ;
  5501.         $array[5110]['name'] = 'Prorogation PC (Etape 1 Timeline Urbanisme)';$array[5110]['value'] = 'projet-0-etap-1-isDateArretePcProrogation' ;
  5502.         $array[5111]['name'] = 'Prorogation DP Mixte (Etape 1 Timeline Urbanisme)';$array[5111]['value'] = 'projet-0-etap-1-isDateArretePcProrogationPcDpMixte' ;
  5503.         $array[5112]['name'] = 'Pas de compléments PC (Etape 1 Timeline Urbanisme)';$array[5112]['value'] = 'projet-0-etap-1-isNotDateDemandeComplement' ;
  5504.         $array[5113]['name'] = 'Référence DP (Etape 1 Timeline Urbanisme)';$array[5113]['value'] = 'projet-0-etap-1-referenceDp' ;
  5505.         $array[5114]['name'] = 'Référence DP Mixte (Etape 1 Timeline Urbanisme)';$array[5114]['value'] = 'projet-0-etap-1-referencePcDpMixte' ;
  5506.         $array[5115]['name'] = 'Date PC purgé (Etape 2 Timeline Urbanisme)';$array[5115]['value'] = 'projet-0-etap-2-datePcDpPurge-1' ;
  5507.         $array[5116]['name'] = 'Date de signature de la DAACT (Etape 4 Timeline Urbanisme)';$array[5116]['value'] = 'projet-0-etap-4-dateSignatureDaact-1' ;
  5508.         $array[5117]['name'] = 'Date de fin d’exclusivité LOI (Etape 1 Timeline Foncier)';$array[5117]['value'] = 'projet-0-etap-5-dateFinExclusiviteLoi-1' ;
  5509.         $array[5118]['name'] = 'Date de signature LOI (Etape 1 Timeline Foncier)';$array[5118]['value'] = 'projet-0-etap-5-dateSignature-1' ;
  5510.         $array[5119]['name'] = 'Honoraire apporteur (Etape 1 Timeline Foncier)';$array[5119]['value'] = 'projet-0-etap-5-honoraireApporteur' ;
  5511.         $array[5120]['name'] = 'Indemnité transitoire (Etape 1 Timeline Foncier)';$array[5120]['value'] = 'projet-0-etap-5-indemniteTransitoire' ;
  5512.         $array[5121]['name'] = 'Contrepartie en nature (Etape 1 Timeline Foncier)';$array[5121]['value'] = 'projet-0-etap-5-loyerEnNature' ;
  5513.         $array[5122]['name'] = 'Prix d’achat foncier (Etape 1 Timeline Foncier)';$array[5122]['value'] = 'projet-0-etap-5-prixAchatFoncier' ;
  5514.         $array[5123]['name'] = 'Puissance signée (Etape 1 Timeline Foncier)';$array[5123]['value'] = 'projet-0-etap-5-puissanceSignee' ;
  5515.         $array[5124]['name'] = 'Type de bail (Etape 1 Timeline Foncier)';$array[5124]['value'] = 'projet-0-etap-5-typeBail' ;
  5516.         $array[5125]['name'] = 'Unité du prix d’achat (Etape 1 Timeline Foncier)';$array[5125]['value'] = 'projet-0-etap-5-unitePrixAchat' ;
  5517.         $array[5126]['name'] = 'Date de fin de bail (Etape 3 Timeline Foncier)';$array[5126]['value'] = 'projet-0-etap-7-dateFinBail-1' ;
  5518.         $array[5127]['name'] = 'Date de signature du bail (Etape 3 Timeline Foncier)';$array[5127]['value'] = 'projet-0-etap-7-dateSignatureBail-1' ;
  5519.         $array[5128]['name'] = 'Nom du bailleur (Etape 3 Timeline Foncier)';$array[5128]['value'] = 'projet-0-etap-7-nomBailleur' ;
  5520.         $array[5129]['name'] = 'Adresse de l’ETS (Etape 1 Timeline Raccordement)';$array[5129]['value'] = 'projet-0-etap-8-adresseEtablissement' ;
  5521.         $array[5130]['name'] = 'Ville de l’ETS (Etape 1 Timeline Raccordement)';$array[5130]['value'] = 'projet-0-etap-8-cityEtablissement' ;
  5522.         $array[5131]['name'] = 'Code postal de l’ETS (Etape 1 Timeline Raccordement)';$array[5131]['value'] = 'projet-0-etap-8-codePostalEtablissement' ;
  5523.         $array[5132]['name'] = 'Latitude de l’ETS (Etape 1 Timeline Raccordement)';$array[5132]['value'] = 'projet-0-etap-8-latEtablissement' ;
  5524.         $array[5133]['name'] = 'Longitude de l’ETS (Etape 1 Timeline Raccordement)';$array[5133]['value'] = 'projet-0-etap-8-longiEtablissement' ;
  5525.         $array[5134]['name'] = 'Profil du créateur (Etape 1 Timeline Raccordement)';$array[5134]['value'] = 'projet-0-etap-8-profileCreateur' ;
  5526.         $array[5135]['name'] = 'SPV confirmation ou changement (Etape 1 Timeline Raccordement)';$array[5135]['value'] = 'projet-0-etap-8-spvEtablissement' ;
  5527.         $array[5136]['name'] = 'Date de consignation (Etape 2 Timeline Raccordement)';$array[5136]['value'] = 'projet-0-etap-9-dateConsignation-1' ;
  5528.         $array[5137]['name'] = 'Date maximale d’achèvement des travaux (Etape 2 Timeline Raccordement)';$array[5137]['value'] = 'projet-0-etap-9-dateMaximaleAchevement-1' ;
  5529.         $array[5138]['name'] = 'Date T0 (Etape 2 Timeline Raccordement)';$array[5138]['value'] = 'projet-0-etap-9-dateT0-1' ;
  5530.         $array[5139]['name'] = 'Tarif Fit prévisionnel (Etape 2 Timeline Raccordement)';$array[5139]['value'] = 'projet-0-etap-9-tarifFit' ;
  5531.         $array[5140]['name'] = 'Date de MES prévisionnelle (Etape 7 Timeline Raccordement)';$array[5140]['value'] = 'projet-0-etap-14-dateMesPrevisionnelle-1' ;
  5532.         $array[5141]['name'] = 'Procédure d’accès (Etape 7 Timeline Raccordement)';$array[5141]['value'] = 'projet-0-etap-14-procedureAcces' ;
  5533.         $array[5142]['name'] = 'Date fin des fondations (Timeline Construction)';$array[5142]['value'] = 'projet-0-etap-18-dateFinDesFondation-1' ;
  5534.         $array[5143]['name'] = 'Date fin du bâtiment (Timeline Construction)';$array[5143]['value'] = 'projet-0-etap-19-dateFinBatiment-1' ;
  5535.         $array[5144]['name'] = 'Date pose des PV (Timeline Construction)';$array[5144]['value'] = 'projet-0-etap-19-datePosePv-1' ;
  5536.         $array[5145]['name'] = 'Date de visite terrain (Compte rendu)';$array[5145]['value'] = 'projet-0-etap-23-visiteTerrainV2-0-dateVisiteTerrain' ;
  5537.         $array[5146]['name'] = 'Distance PDL (Timeline Raccordement)';$array[5146]['value'] = 'projet-0-etap-80-distancePdl' ;
  5538.         $array[5147]['name'] = 'Nature du raccordement (Timeline Raccordement)';$array[5147]['value'] = 'projet-0-etap-80-natureRaccordement' ;
  5539.         $array[5148]['name'] = 'Date d’installation du PDL (Timeline Raccordement)';$array[5148]['value'] = 'projet-0-etap-121-dateInstallationPDL-1' ;
  5540.         $array[5149]['name'] = 'Date de mise sous tension ENEDIS (Timeline Raccordement)';$array[5149]['value'] = 'projet-0-etap-121-dateMiseSousTensionEnedis-1' ;
  5541.         $array[5150]['name'] = 'Date prévisionnelle d’installation du PDL (Timeline Raccordement)';$array[5150]['value'] = 'projet-0-etap-121-datePrevisionnelleInstallationPDL-1' ;
  5542.         $array[5151]['name'] = 'Bi-pente asymétrique (Étape 1 Timeline Construction)';$array[5151]['value'] = 'projet-0-etap-160-biPenteAsymetrique' ;
  5543.         $array[5152]['name'] = 'Bi-pente symétrique (Étape 1 Timeline Construction)';$array[5152]['value'] = 'projet-0-etap-160-biPenteSymetrique' ;
  5544.         $array[5153]['name'] = 'Date réalisation de la plateforme (Etape 4-1 Timeline construction)';$array[5153]['value'] = 'projet-0-etap-171-dateRealisationPlateforme-1' ;
  5545.         $array[5154]['name'] = 'Date d’intervention du géomètre (Timeline Foncier)';$array[5154]['value'] = 'projet-0-etap-601-dateIntervention-1' ;
  5546.         $array[5155]['name'] = 'Date de lancement géomètre (Timeline Foncier)';$array[5155]['value'] = 'projet-0-etap-601-dateLancement-1' ;
  5547.         $array[5156]['name'] = 'Date d’envoi des procurations (Timeline Foncier)';$array[5156]['value'] = 'projet-0-etap-602-dateEnvoiPocuration-1' ;
  5548.         $array[5157]['name'] = 'Date de lancement notaire (Timeline Foncier)';$array[5157]['value'] = 'projet-0-etap-602-dateLancement-1' ;
  5549.         $array[5158]['name'] = 'Date de signature des procurations côté bailleur (Timeline Foncier)';$array[5158]['value'] = 'projet-0-etap-602-dateSignatureProcuration-1' ;
  5550.         return $array ;
  5551.     }
  5552.     public function getNameOfArrayChompsExport($value){
  5553.         $array = $this->getChampsExport();
  5554.         $name = '';
  5555.         foreach ($array['category'] as $item2){
  5556.             foreach ($item2['detail'] as $item){
  5557.                 $tab = explode('-',$value);
  5558.                 if($tab[1] == ParametrageXlsProject::type_row_etap){
  5559.                     if($value == $item['value']){
  5560.                         $name = $item['champs'];
  5561.                     }
  5562.                 }else{
  5563.                     if(isset($tab[3]) && isset($tab[4]) && isset($tab[5]) && $tab[3] == 0 && $tab[4] == 0 && $tab[5] == 0){
  5564.                         if($value == $item['value']){
  5565.                             $name = $item['champs'];
  5566.                         }
  5567.                     }else{
  5568.                         if(str_contains($value, $item['value'])){
  5569.                             if($name != ''){
  5570.                                 $name .= ','.$item['champs'];
  5571.                             }else{
  5572.                                 $name = $item['champs'];
  5573.                             }
  5574.                         }
  5575.                     }
  5576.                 }
  5577.             }
  5578.         }
  5579.         return $name;
  5580.     }
  5581.     public function getChampsExport(){
  5582.         $array = [];
  5583.         $array['category'][0]['num'] = 0;
  5584.         $array['category'][0]['name'] = 'Détail projet';
  5585.         $array['category'][0]['detail'][0]['champs'] = 'Nom du projet';$array['category'][0]['detail'][0]['name'] = 'Nom du projet';$array['category'][0]['detail'][0]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-name' ;
  5586.         $array['category'][0]['detail'][1]['champs'] = 'Famille du projet';$array['category'][0]['detail'][1]['name'] = 'Famille du projet';$array['category'][0]['detail'][1]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-familleProject' ;
  5587.         $array['category'][0]['detail'][2]['champs'] = 'Typologie du projet';$array['category'][0]['detail'][2]['name'] = 'Typologie du projet';$array['category'][0]['detail'][2]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-typologieProject' ;
  5588.         $array['category'][0]['detail'][3]['champs'] = 'Adresse';$array['category'][0]['detail'][3]['name'] = 'Adresse';$array['category'][0]['detail'][3]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-adresse' ;
  5589.         $array['category'][0]['detail'][4]['champs'] = 'Code postal';$array['category'][0]['detail'][4]['name'] = 'Code postal';$array['category'][0]['detail'][4]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-codePostal' ;
  5590.         $array['category'][0]['detail'][5]['champs'] = 'Ville';$array['category'][0]['detail'][5]['name'] = 'Ville';$array['category'][0]['detail'][5]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-city' ;
  5591.         $array['category'][0]['detail'][6]['champs'] = 'N° de parcelle';$array['category'][0]['detail'][6]['name'] = 'N° de parcelle';$array['category'][0]['detail'][6]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-numParcelle' ;
  5592.         $array['category'][0]['detail'][7]['champs'] = 'Latitude';$array['category'][0]['detail'][7]['name'] = 'Latitude';$array['category'][0]['detail'][7]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-longi' ;
  5593.         $array['category'][0]['detail'][8]['champs'] = 'Longitude';$array['category'][0]['detail'][8]['name'] = 'Longitude';$array['category'][0]['detail'][8]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-lat' ;
  5594.         $array['category'][0]['detail'][9]['champs'] = 'Capacité installée (KWc)';$array['category'][0]['detail'][9]['name'] = 'Capacité installée (KWc)';$array['category'][0]['detail'][9]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-capacite' ;
  5595.         $array['category'][0]['detail'][11109]['champs'] = 'Capacité injectée (kVA)';$array['category'][0]['detail'][11109]['name'] = 'Capacité injectée (kVA)';$array['category'][0]['detail'][11109]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-puissance' ;
  5596.         $array['category'][0]['detail'][10]['champs'] = 'Productible (p50)';$array['category'][0]['detail'][10]['name'] = 'Productible (P50)';$array['category'][0]['detail'][10]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-productible' ;
  5597.         $array['category'][0]['detail'][11110]['champs'] = 'Productible (p90)';$array['category'][0]['detail'][11110]['name'] = 'Productible (P90)';$array['category'][0]['detail'][11110]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-productibleP90' ;
  5598.         $array['category'][0]['detail'][11]['champs'] = 'Date de T0';$array['category'][0]['detail'][11]['name'] = 'Date de T0';$array['category'][0]['detail'][11]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-dateT0Date-1' ;
  5599.         $array['category'][0]['detail'][12]['champs'] = 'Date arrêté PC';$array['category'][0]['detail'][12]['name'] = 'Date arrêté PC';$array['category'][0]['detail'][12]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-dateArretePc-1' ;
  5600.         $array['category'][0]['detail'][13]['champs'] = 'Loyer';$array['category'][0]['detail'][13]['name'] = 'Loyer';$array['category'][0]['detail'][13]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-loyerVise' ;
  5601.         $array['category'][0]['detail'][14]['champs'] = 'Soulte';$array['category'][0]['detail'][14]['name'] = 'Soulte';$array['category'][0]['detail'][14]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-soulteVise' ;
  5602.         $array['category'][0]['detail'][15]['champs'] = 'Type de batîment';$array['category'][0]['detail'][15]['name'] = 'Type de batîment';$array['category'][0]['detail'][15]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-typeBatimentProject' ;
  5603.         $array['category'][0]['detail'][16]['champs'] = 'SPV';$array['category'][0]['detail'][16]['name'] = 'SPV';$array['category'][0]['detail'][16]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-spv' ;
  5604.         $array['category'][0]['detail'][17]['champs'] = 'Étude de productible';$array['category'][0]['detail'][17]['name'] = 'Étude de productible';$array['category'][0]['detail'][17]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-fileEtudeProductible-2' ;
  5605.         $array['category'][0]['detail'][18]['champs'] = 'Promesse de bail';$array['category'][0]['detail'][18]['name'] = 'Promesse de bail';$array['category'][0]['detail'][18]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-filePromessebail-2' ;
  5606.         $array['category'][0]['detail'][19]['champs'] = 'Visite Technique';$array['category'][0]['detail'][19]['name'] = 'Visite Technique  ';$array['category'][0]['detail'][19]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-fileDocCompementaire-2' ;
  5607.         $array['category'][0]['detail'][19001]['champs'] = 'Code projet';$array['category'][0]['detail'][19001]['name'] = 'Code projet';$array['category'][0]['detail'][19001]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-codeProject' ;
  5608.         $array['category'][0]['detail'][154]['champs'] = 'Statut administratif';$array['category'][0]['detail'][154]['name'] = 'Statut administratif';$array['category'][0]['detail'][154]['value'] = 'projet-'.ParametrageXlsProject::type_row_const.'-etap-0-0-0-1' ;
  5609.         $array['category'][0]['detail'][155]['champs'] = 'Statut tracker';$array['category'][0]['detail'][155]['name'] = 'Statut tracker';$array['category'][0]['detail'][155]['value'] = 'projet-'.ParametrageXlsProject::type_row_const.'-etap-0-0-0-2' ;
  5610.         $array['category'][0]['detail'][15500]['champs'] = 'Statut Construction';$array['category'][0]['detail'][15500]['name'] = 'Statut Construction';$array['category'][0]['detail'][15500]['value'] = 'projet-'.ParametrageXlsProject::type_row_const.'-etap-0-0-0-11' ;
  5611.         $array['category'][0]['detail'][156]['champs'] = 'Avancement Urbanisme';$array['category'][0]['detail'][156]['name'] = 'Avancement Urbanisme';$array['category'][0]['detail'][156]['value'] = 'projet-'.ParametrageXlsProject::type_row_const.'-etap-0-0-0-3' ;
  5612.         $array['category'][0]['detail'][157]['champs'] = 'Avancement Foncier';$array['category'][0]['detail'][157]['name'] = 'Avancement Foncier';$array['category'][0]['detail'][157]['value'] = 'projet-'.ParametrageXlsProject::type_row_const.'-etap-0-0-0-4' ;
  5613.         $array['category'][0]['detail'][158]['champs'] = 'Avancement Raccordement';$array['category'][0]['detail'][158]['name'] = 'Avancement Raccordement';$array['category'][0]['detail'][158]['value'] = 'projet-'.ParametrageXlsProject::type_row_const.'-etap-0-0-0-5' ;
  5614.         $array['category'][0]['detail'][159]['champs'] = 'Avancement Construction';$array['category'][0]['detail'][159]['name'] = 'Avancement Construction';$array['category'][0]['detail'][159]['value'] = 'projet-'.ParametrageXlsProject::type_row_const.'-etap-0-0-0-6' ;
  5615.         $array['category'][0]['detail'][15900]['champs'] = 'Avancement Valorisation';$array['category'][0]['detail'][15900]['name'] = 'Avancement Valorisation';$array['category'][0]['detail'][15900]['value'] = 'projet-'.ParametrageXlsProject::type_row_const.'-etap-0-0-0-13' ;
  5616.         $array['category'][0]['detail'][160]['champs'] = 'Stade de construction';$array['category'][0]['detail'][160]['name'] = 'Stade de construction';$array['category'][0]['detail'][160]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-stadeConstruction' ;
  5617.         $array['category'][0]['detail'][161]['champs'] = 'Développeur';$array['category'][0]['detail'][161]['name'] = 'Développeur';$array['category'][0]['detail'][161]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-developpeur' ;
  5618. //        $array['category'][0]['detail'][162]['champs'] = 'Fournisseur';$array['category'][0]['detail'][162]['name'] = 'Fournisseur';$array['category'][0]['detail'][162]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-fournisseur' ;
  5619.         $array['category'][0]['detail'][163]['champs'] = 'Responsable construction';$array['category'][0]['detail'][163]['name'] = 'Responsable construction';$array['category'][0]['detail'][163]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-responsableUser' ;
  5620.         $array['category'][0]['detail'][170]['champs'] = 'Responsable développement';$array['category'][0]['detail'][170]['name'] = 'Responsable développement';$array['category'][0]['detail'][170]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-responsableDeveloppement' ;
  5621.         $array['category'][0]['detail'][168]['champs'] = 'Constructeur';$array['category'][0]['detail'][168]['name'] = 'Constructeur';$array['category'][0]['detail'][168]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-constructeurUser' ;
  5622.         $array['category'][0]['detail'][169]['champs'] = 'Commentaires projet';$array['category'][0]['detail'][169]['name'] = 'Commentaires projet';$array['category'][0]['detail'][169]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-commentProject2' ;
  5623.         $array['category'][0]['detail'][211]['champs'] = 'Schéma contstruction';$array['category'][0]['detail'][211]['name'] = 'Schéma contstruction (Detail projet)';$array['category'][0]['detail'][211]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-schemaConstruction' ;
  5624.         $array['category'][0]['detail'][212]['champs'] = 'EPC';$array['category'][0]['detail'][212]['name'] = 'EPC';$array['category'][0]['detail'][212]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-fournisseur' ;
  5625.         $array['category'][0]['detail'][213]['champs'] = 'Instalateur';$array['category'][0]['detail'][213]['name'] = 'Instalateur';$array['category'][0]['detail'][213]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-fournisseurProject-0-fournisseur-instalateur' ;
  5626.         $array['category'][0]['detail'][214]['champs'] = 'Charpentier';$array['category'][0]['detail'][214]['name'] = 'Charpentier';$array['category'][0]['detail'][214]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-fournisseurProject-0-fournisseur-charpentier' ;
  5627.         $array['category'][0]['detail'][229]['champs'] = 'Sous Famille du projet';$array['category'][0]['detail'][229]['name'] = 'Sous Famille du projet';$array['category'][0]['detail'][229]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-sousFamilleProject' ;
  5628.         $array['category'][0]['detail'][230]['champs'] = 'Surface disponible';$array['category'][0]['detail'][230]['name'] = 'Surface disponible';$array['category'][0]['detail'][230]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-surfaceDisponible' ;
  5629.         $array['category'][0]['detail'][231]['champs'] = 'Zonage plu';$array['category'][0]['detail'][231]['name'] = 'Zonage plu';$array['category'][0]['detail'][231]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-zonagePlu' ;
  5630.         $array['category'][0]['detail'][232]['champs'] = 'Surface exploitable';$array['category'][0]['detail'][232]['name'] = 'Surface exploitable';$array['category'][0]['detail'][232]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-surfaceExploitable' ;
  5631. //        $array['category'][0]['detail'][233]['champs'] = 'prix achat Foncier';$array['category'][0]['detail'][233]['name'] = 'prix achat Foncier';$array['category'][0]['detail'][233]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-prixAchatFoncier' ;
  5632. //        $array['category'][0]['detail'][234]['champs'] = 'unité achat Foncier';$array['category'][0]['detail'][234]['name'] = 'unité achat Foncier';$array['category'][0]['detail'][234]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-uniteAchatFoncier' ;
  5633.         $array['category'][0]['detail'][235]['champs'] = 'Indemnité transitoire (k€/an)';$array['category'][0]['detail'][235]['name'] = 'Indemnité transitoire (k€/an)';$array['category'][0]['detail'][235]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-indemiteTransitoire' ;
  5634.         $array['category'][0]['detail'][236]['champs'] = 'Rémunération exploitant agricole';$array['category'][0]['detail'][236]['name'] = 'Rémunération exploitant agricole';$array['category'][0]['detail'][236]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-remunerationExploitantAgricole' ;
  5635.         $array['category'][0]['detail'][237]['champs'] = 'Sourcing';$array['category'][0]['detail'][237]['name'] = 'Sourcing';$array['category'][0]['detail'][237]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-sourcing' ;
  5636.         $array['category'][0]['detail'][238]['champs'] = 'Date de sourcing';$array['category'][0]['detail'][238]['name'] = 'Date de sourcing';$array['category'][0]['detail'][238]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-dateSourcing-1' ;
  5637.         $array['category'][0]['detail'][239]['champs'] = 'Durée d\'exploitation';$array['category'][0]['detail'][239]['name'] = 'Durée d\'exploitation';$array['category'][0]['detail'][239]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-dureeExploitation' ;
  5638.         $array['category'][0]['detail'][240]['champs'] = 'Tri';$array['category'][0]['detail'][240]['name'] = 'Tri';$array['category'][0]['detail'][240]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-tri' ;
  5639.         $array['category'][0]['detail'][241]['champs'] = 'Tri avec Prime';$array['category'][0]['detail'][241]['name'] = 'Tri avec Prime';$array['category'][0]['detail'][241]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-triPrime' ;
  5640.         $array['category'][0]['detail'][242]['champs'] = 'TRI CRE min';$array['category'][0]['detail'][242]['name'] = 'TRI CRE min';$array['category'][0]['detail'][242]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-triCreMin' ;
  5641.         $array['category'][0]['detail'][243]['champs'] = 'Tri avec Prime';$array['category'][0]['detail'][243]['name'] = 'Tri avec Prime';$array['category'][0]['detail'][243]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-triCreMin' ;
  5642.         $array['category'][0]['detail'][244]['champs'] = 'TRI PPA à 70 euros';$array['category'][0]['detail'][244]['name'] = 'TRI PPA à 70 euros';$array['category'][0]['detail'][244]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-triPpaMin' ;
  5643.         $array['category'][0]['detail'][245]['champs'] = 'Rendement EBE/CAPEX.';$array['category'][0]['detail'][245]['name'] = 'Rendement EBE/CAPEX.';$array['category'][0]['detail'][245]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-rendementEbeCapex' ;
  5644.         $array['category'][0]['detail'][246]['champs'] = 'Ratio CAPEX/PUISSANCE';$array['category'][0]['detail'][246]['name'] = 'Ratio CAPEX/PUISSANCE';$array['category'][0]['detail'][246]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-ratioCapexPuissance' ;
  5645.         $array['category'][0]['detail'][247]['champs'] = 'Rendement EBE/CAPEX PPA 70 Euros';$array['category'][0]['detail'][247]['name'] = 'Rendement EBE/CAPEX PPA 70 Euros';$array['category'][0]['detail'][247]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-rendementEbeCapexPPA' ;
  5646.         $array['category'][0]['detail'][248]['champs'] = 'Ranking';$array['category'][0]['detail'][248]['name'] = 'Ranking';$array['category'][0]['detail'][248]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-ranking' ;
  5647.         $array['category'][0]['detail'][249]['champs'] = 'Date RTB tarifié';$array['category'][0]['detail'][249]['name'] = 'Date RTB tarifié';$array['category'][0]['detail'][249]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-dateRTBtarifie-1' ;
  5648.         $array['category'][0]['detail'][250]['champs'] = 'Prix d’achat foncier (k€/MWc)';$array['category'][0]['detail'][250]['name'] = 'Prix d’achat foncier (k€/MWc)';$array['category'][0]['detail'][250]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-prixAchatFoncierKMWc' ;
  5649.         $array['category'][0]['detail'][251]['champs'] = 'Prix d’achat foncier (k€/ha)';$array['category'][0]['detail'][251]['name'] = 'Prix d’achat foncier (k€/ha)';$array['category'][0]['detail'][251]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-prixAchatFoncierKHa' ;
  5650.         $array['category'][0]['detail'][189]['champs'] = 'Date de création';$array['category'][0]['detail'][189]['name'] = 'Date de création';$array['category'][0]['detail'][189]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-createdAt-1' ;
  5651.         $array['category'][0]['detail'][208]['champs'] = 'Statut Urbanisme';$array['category'][0]['detail'][208]['name'] = 'Statut Urbanisme';$array['category'][0]['detail'][208]['value'] = 'projet-'.ParametrageXlsProject::type_row_const.'-etap-0-0-0-7' ;
  5652.         $array['category'][0]['detail'][209]['champs'] = 'Statut Foncier';$array['category'][0]['detail'][209]['name'] = 'Statut Foncier';$array['category'][0]['detail'][209]['value'] = 'projet-'.ParametrageXlsProject::type_row_const.'-etap-0-0-0-8' ;
  5653.         $array['category'][0]['detail'][2090]['champs'] = 'Date Objectif dépôt PC/DP';$array['category'][0]['detail'][2090]['name'] = 'Date Objectif dépôt PC/DP';$array['category'][0]['detail'][2090]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-dateDepotPc-1' ;
  5654.         $array['category'][0]['detail'][2091]['champs'] = 'Date Objectif PC/DP obtenu';$array['category'][0]['detail'][2091]['name'] = 'Date Objectif PC/DP obtenu';$array['category'][0]['detail'][2091]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-dateObtentionPc-1' ;
  5655.         $array['category'][0]['detail'][2092]['champs'] = 'Département';$array['category'][0]['detail'][2092]['name'] = 'Département';$array['category'][0]['detail'][2092]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-departement' ;
  5656.         $array['category'][0]['detail'][2093]['champs'] = 'Achat - Location';$array['category'][0]['detail'][2093]['name'] = 'Achat - Location';$array['category'][0]['detail'][2093]['value'] = 'projet-'.ParametrageXlsProject::type_row_project.'-etap-0-achatLocation' ;
  5657.         $array['category'][1]['num'] = 1;
  5658.         $array['category'][1]['name'] = 'Urbanisme';
  5659.         $array['category'][1]['detail'][20]['champs'] = 'Dossier PC/DP';$array['category'][1]['detail'][20]['name'] = 'Dossier PC/DP (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][20]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-fileDossierPcDpMultiple-2' ;
  5660.         $array['category'][1]['detail'][21]['champs'] = 'Arrêté PC/DP';$array['category'][1]['detail'][21]['name'] = 'Arrêté PC/DP (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][21]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-fileArretePcDpMultiple-2' ;
  5661.         $array['category'][1]['detail'][22]['champs'] = 'Date arrété';$array['category'][1]['detail'][22]['name'] = 'Date arrété (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][22]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-dateArretePcDp-1' ;
  5662.         $array['category'][1]['detail'][23]['champs'] = 'Référence PC';$array['category'][1]['detail'][23]['name'] = 'Référence PC (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][23]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-referencePc' ;
  5663.         $array['category'][1]['detail'][24]['champs'] = 'Référence DP';$array['category'][1]['detail'][24]['name'] = 'Référence DP (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][24]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-referenceDp' ;
  5664.         $array['category'][1]['detail'][24001]['champs'] = 'Récépissé dépôt PC/DP';$array['category'][1]['detail'][24001]['name'] = 'Récépissé dépôt PC/DP (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][24001]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-fileRecepisseDepotPcMultiple-2' ;
  5665.         $array['category'][1]['detail'][24002]['champs'] = 'Demande compléments PC/DP';$array['category'][1]['detail'][24002]['name'] = 'Demande compléments PC/DP (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][24002]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-fileDemandeComplementPcMultiple-2' ;
  5666.         $array['category'][1]['detail'][24003]['champs'] = 'Récépissé compléments PC/DP';$array['category'][1]['detail'][24003]['name'] = 'Demande compléments PC/DP (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][24003]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-fileRecepisseComplementPcMultiple-2' ;
  5667.         $array['category'][1]['detail'][25]['champs'] = 'PV passage huissier';$array['category'][1]['detail'][25]['name'] = 'PV passage huissier (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][25]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-filePVPassageHuissierMultiple-2' ;
  5668.         $array['category'][1]['detail'][26]['champs'] = 'Certificat de non-recours';$array['category'][1]['detail'][26]['name'] = 'Certificat de non-recours (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][26]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-fileCertificatNonRecoursMultiple-2' ;
  5669.         $array['category'][1]['detail'][27]['champs'] = 'Certificat de non-retrait';$array['category'][1]['detail'][27]['name'] = 'Certificat de non-retrait (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][27]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-fileCertificatNonRetraitMultiple-2' ;
  5670.         $array['category'][1]['detail'][28]['champs'] = 'Certificat de non-opposition';$array['category'][1]['detail'][28]['name'] = 'Certificat de non-opposition (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][28]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-fileCertificatNonOppositionEtap1Multiple-2' ;
  5671.         $array['category'][1]['detail'][28001]['champs'] = 'Demande d’ANR Mairie';$array['category'][1]['detail'][28001]['name'] = 'Demande d’ANR Mairie (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][28001]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-fileDemandeAnrMarieMultiple-2' ;
  5672.         $array['category'][1]['detail'][28002]['champs'] = 'Demande d’ANR TA';$array['category'][1]['detail'][28002]['name'] = 'Demande d’ANR TA (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][28002]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-fileDemandeAnrTaMultiple-2' ;
  5673.         $array['category'][1]['detail'][28003]['champs'] = 'Attestation sur l’honneur ANR Mairie / TA';$array['category'][1]['detail'][28003]['name'] = 'Attestation sur l’honneur ANR Mairie / TA (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][28003]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-fileAttestationHonneurAnrMairieTaMultiple-2' ;
  5674.         $array['category'][1]['detail'][29]['champs'] = 'Date 1er passage huissier';$array['category'][1]['detail'][29]['name'] = 'Date 1er passage huissier (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][29]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-date1PassageHuissier-1' ;
  5675.         $array['category'][1]['detail'][30]['champs'] = 'Date 2ème passage huissier';$array['category'][1]['detail'][30]['name'] = 'Date 2ème passage huissier (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][30]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-date2PassageHuissier-1' ;
  5676.         $array['category'][1]['detail'][31]['champs'] = 'Date 3ème passage huissier';$array['category'][1]['detail'][31]['name'] = 'Date 3ème passage huissier (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][31]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-date3PassageHuissier-1' ;
  5677.         $array['category'][1]['detail'][32]['champs'] = 'DOC / DROC';$array['category'][1]['detail'][32]['name'] = 'DOC / DROC (Etape 3 Timeline Urbanisme)';$array['category'][1]['detail'][32]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-3-fileDocDrocMultiple-2' ;
  5678.         $array['category'][1]['detail'][33]['champs'] = 'Date de dépôt de la DOC / DROC';$array['category'][1]['detail'][33]['name'] = 'Date de dépôt de la DOC / DROC (Etape 3 Timeline Urbanisme)';$array['category'][1]['detail'][33]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-3-dateDocDroc-1' ;
  5679.         $array['category'][1]['detail'][34]['champs'] = 'DAACT';$array['category'][1]['detail'][34]['name'] = 'DAACT (Etape 4 Timeline Urbanisme)';$array['category'][1]['detail'][34]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-4-fileDaactMultiple-2' ;
  5680.         $array['category'][1]['detail'][35]['champs'] = 'Date de dépôt de la DAACT';$array['category'][1]['detail'][35]['name'] = 'Date de dépôt de la DAACT (Etape 4 Timeline Urbanisme)';$array['category'][1]['detail'][35]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-4-dateDaact-1' ;
  5681.         $array['category'][1]['detail'][36]['champs'] = 'Date de signature de la DAACT';$array['category'][1]['detail'][36]['name'] = 'Date de signature de la DAACT (Etape 4 Timeline Urbanisme)';$array['category'][1]['detail'][36]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-4-dateSignatureDaact-1' ;
  5682.         $array['category'][1]['detail'][10001]['champs'] = 'Infos pour archi (bardage, aménagement intérieur, solution EP, borne incendie…)';$array['category'][1]['detail'][10001]['name'] = 'Infos pour archi (Etape 0 Timeline urbanisme)';$array['category'][1]['detail'][10001]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-0-fileInfoArchiMultiple-2' ;
  5683.         $array['category'][1]['detail'][10002]['champs'] = 'MSA Attestation';$array['category'][1]['detail'][10002]['name'] = 'MSA Attestation (Etape 0 Timeline urbanisme)';$array['category'][1]['detail'][10002]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-0-fileMsaAttestationMultiple-2' ;
  5684.         $array['category'][1]['detail'][10003]['champs'] = 'MSA Relevé d’exploitation';$array['category'][1]['detail'][10003]['name'] = 'MSA Relevé d’exploitation (Etape 0 Timeline urbanisme)';$array['category'][1]['detail'][10003]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-0-fileMsaReleveExploitationMultiple-2' ;
  5685.         $array['category'][1]['detail'][10004]['champs'] = 'Fiche de besoins agricoles';$array['category'][1]['detail'][10004]['name'] = 'Fiche de besoins agricoles (Etape 0 Timeline urbanisme)';$array['category'][1]['detail'][10004]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-0-fileFicheBesoinAgricoleMultiple-2' ;
  5686.         $array['category'][1]['detail'][10005]['champs'] = 'Lettre de motivation';$array['category'][1]['detail'][10005]['name'] = 'Lettre de motivation (Etape 0 Timeline urbanisme)';$array['category'][1]['detail'][10005]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-0-fileLettreMotivationMultiple-2' ;
  5687.         $array['category'][1]['detail'][10006]['champs'] = 'ICPE  (attestation non-soumission ou preuve de dépôt déclaration)';$array['category'][1]['detail'][10006]['name'] = 'ICPE  (attestation non-soumission ou preuve de dépôt déclaration) (Etape 0 Timeline urbanisme)';$array['category'][1]['detail'][10006]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-0-fileICPEMultiple-2' ;
  5688.         $array['category'][1]['detail'][10007]['champs'] = 'Règlement d’urbanisme » (PLU / PLUi)';$array['category'][1]['detail'][10007]['name'] = 'Règlement d’urbanisme » (PLU / PLUi) (Etape 0 Timeline urbanisme)';$array['category'][1]['detail'][10007]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-0-fileReglementUrbanismeMultiple-2' ;
  5689.         $array['category'][1]['detail'][10008]['champs'] = 'Autre (CDPENAF, Natura 2000…)';$array['category'][1]['detail'][10008]['name'] = 'Autre (CDPENAF, Natura 2000…) (Etape 0 Timeline urbanisme)';$array['category'][1]['detail'][10008]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-0-fileAutreEtap0Multiple-2' ;
  5690.         $array['category'][1]['detail'][10009]['champs'] = 'Nom de l’architecte ';$array['category'][1]['detail'][10009]['name'] = 'Nom de l’architecte (Etape 0 Timeline urbanisme)';$array['category'][1]['detail'][10009]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-0-architecte' ;
  5691.         $array['category'][1]['detail'][10010]['champs'] = 'Commentaires';$array['category'][1]['detail'][10010]['name'] = 'Commentaires (Etape 0 Timeline urbanisme)';$array['category'][1]['detail'][10010]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-0-commentaireEtap0' ;
  5692.         $array['category'][1]['detail'][10011]['champs'] = 'Dossier PCM';$array['category'][1]['detail'][10011]['name'] = 'Dossier PCM (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][10011]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-etap1Pcm-2-fileDossierPcmpMultiple-1' ;
  5693.         $array['category'][1]['detail'][10012]['champs'] = 'Récépissé dépôt PCM';$array['category'][1]['detail'][10012]['name'] = 'Récépissé dépôt PCM (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][10012]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-etap1Pcm-2-fileRecepisseDepotPcmMultiple-1' ;
  5694.         $array['category'][1]['detail'][10013]['champs'] = 'Demande compléments PCM';$array['category'][1]['detail'][10013]['name'] = 'Demande compléments PCM (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][10013]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-etap1Pcm-2-fileDemandeComplementPcmMultiple-1' ;
  5695.         $array['category'][1]['detail'][10014]['champs'] = 'Récépissé compléments PCM';$array['category'][1]['detail'][10014]['name'] = 'Récépissé compléments PCM (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][10014]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-etap1Pcm-2-fileRecepisseComplementPcmMultiple-1' ;
  5696.         $array['category'][1]['detail'][10015]['champs'] = 'Arrêté PCM';$array['category'][1]['detail'][10015]['name'] = 'Arrêté PCM (Permis de construire modificatif) (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][10015]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-etap1Pcm-2-fileArretePcmMultiple-1' ;
  5697.         $array['category'][1]['detail'][10016]['champs'] = 'Autre (prolongation délai d’instruction) PCM';$array['category'][1]['detail'][10016]['name'] = 'Autre (prolongation délai d’instruction) PCM (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][10016]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-etap1Pcm-2-fileAutreDocPcmMultiple-1' ;
  5698.         $array['category'][1]['detail'][10017]['champs'] = 'Date arrété PCM';$array['category'][1]['detail'][10017]['name'] = 'Date arrété PCM (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][10017]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-etap1Pcm-1-dateArretePcm' ;
  5699.         $array['category'][1]['detail'][10018]['champs'] = 'Date demande de compléments PCM';$array['category'][1]['detail'][10018]['name'] = 'Date demande de compléments PCM (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][10018]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-etap1Pcm-1-dateDemandeComplement' ;
  5700.         $array['category'][1]['detail'][10019]['champs'] = 'Délai d’instruction (mois)  PCM';$array['category'][1]['detail'][10019]['name'] = 'Délai d’instruction (mois)  PCM (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][10019]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-etap1Pcm-0-delaiInstruction' ;
  5701.         $array['category'][1]['detail'][10020]['champs'] = 'Date de dépôt compléments PCM';$array['category'][1]['detail'][10020]['name'] = 'Date de dépôt compléments PCM (Etape 1 Timeline Urbanisme)';$array['category'][1]['detail'][10020]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-1-etap1Pcm-1-dateDepotComplement' ;
  5702.         $array['category'][1]['detail'][10021]['champs'] = 'PV passage huissier PCM';$array['category'][1]['detail'][10021]['name'] = 'PV passage huissier PCM (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][10021]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-etap2Pcm-2-filePVPassageHuissierPcmMultiple-1' ;
  5703.         $array['category'][1]['detail'][10022]['champs'] = 'Certificat de non-recours PCM';$array['category'][1]['detail'][10022]['name'] = 'Certificat de non-recours PCM (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][10022]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-etap2Pcm-2-fileCertificatNonRecoursPcmMultiple-1' ;
  5704.         $array['category'][1]['detail'][10023]['champs'] = 'Certificat de non-retrait PCM';$array['category'][1]['detail'][10023]['name'] = 'Certificat de non-retrait PCM (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][10023]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-etap2Pcm-2-fileCertificatNonRetraitPcmMultiple-1' ;
  5705.         $array['category'][1]['detail'][10024]['champs'] = 'Demande d’ANR Mairie PCM';$array['category'][1]['detail'][10024]['name'] = 'Demande d’ANR Mairie PCM (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][10024]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-etap2Pcm-2-fileDemandeAnrMariePcmMultiple-1' ;
  5706.         $array['category'][1]['detail'][10025]['champs'] = 'Demande d’ANR TA PCM';$array['category'][1]['detail'][10025]['name'] = 'Demande d’ANR TA PCM (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][10025]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-etap2Pcm-2-fileDemandeAnrTaPcmMultiple-1' ;
  5707.         $array['category'][1]['detail'][10026]['champs'] = 'Attestation sur l’honneur ANR Mairie / TA PCM';$array['category'][1]['detail'][10026]['name'] = 'Attestation sur l’honneur ANR Mairie / TA PCM (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][10026]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-etap2Pcm-2-fileAttestationHonneurAnrMairieTaPcmMultiple-1' ;
  5708.         $array['category'][1]['detail'][10027]['champs'] = 'Date 1er passage huissier PCM';$array['category'][1]['detail'][10027]['name'] = 'Date 1er passage huissier PCM (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][10027]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-etap2Pcm-1-date1PassageHuissierPcm' ;
  5709.         $array['category'][1]['detail'][10028]['champs'] = 'Date 2ème passage huissier PCM';$array['category'][1]['detail'][10028]['name'] = 'Date 2ème passage huissier PCM (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][10028]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-etap2Pcm-1-date2PassageHuissierPcm' ;
  5710.         $array['category'][1]['detail'][10029]['champs'] = 'Date 3ème passage huissier PCM';$array['category'][1]['detail'][10029]['name'] = 'Date 3ème passage huissier PCM (Etape 2 Timeline Urbanisme)';$array['category'][1]['detail'][10029]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-2-etap2Pcm-1-date3PassageHuissierPcm' ;
  5711.         $array['category'][2]['num'] = 2;
  5712.         $array['category'][2]['name'] = 'Foncier';
  5713.         $array['category'][2]['detail'][36]['champs'] = 'Promesse de bail';$array['category'][2]['detail'][36]['name'] = 'Promesse de bail (Etape 1 Timeline Foncier)';$array['category'][2]['detail'][36]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-filePromessebailMultiple-2' ;
  5714.         $array['category'][2]['detail'][37]['champs'] = 'Date PDB';$array['category'][2]['detail'][37]['name'] = 'Date PDB (Etape 1 Timeline Foncier)';$array['category'][2]['detail'][37]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-dateExpirationPromesseBail-1' ;
  5715.         $array['category'][2]['detail'][38]['champs'] = 'Durée de validité (en mois)';$array['category'][2]['detail'][38]['name'] = 'Durée de validité (en mois) (Etape 1 Timeline Foncier)';$array['category'][2]['detail'][38]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-d1' ;
  5716.         $array['category'][2]['detail'][39]['champs'] = 'Durée de prorogation (en mois)';$array['category'][2]['detail'][39]['name'] = 'Durée de prorogation (en mois) (Etape 1 Timeline Foncier)';$array['category'][2]['detail'][39]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-d2' ;
  5717.         $array['category'][2]['detail'][40]['champs'] = 'Contrepartie en nature';$array['category'][2]['detail'][40]['name'] = 'Contrepartie en nature (Etape 1 Timeline Foncier)';$array['category'][2]['detail'][40]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-loyerEnNature' ;
  5718.         $array['category'][2]['detail'][41]['champs'] = 'Type de bail';$array['category'][2]['detail'][41]['name'] = 'Type de bail (Etape 1 Timeline Foncier)';$array['category'][2]['detail'][41]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-typeBail' ;
  5719.         $array['category'][2]['detail'][42]['champs'] = 'Durée du bail en année';$array['category'][2]['detail'][42]['name'] = 'Durée du bail en année (Etape 1 Timeline Foncier)';$array['category'][2]['detail'][42]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-dureeBail' ;
  5720.         $array['category'][2]['detail'][43]['champs'] = 'DA / EDDV';$array['category'][2]['detail'][43]['name'] = 'DA / EDDV (Etape 3 Timeline Foncier)';$array['category'][2]['detail'][43]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-601-fileEtatDecriptifMultiple-2' ;
  5721.         $array['category'][2]['detail'][43001]['champs'] = 'Plan de servitudes';$array['category'][2]['detail'][43001]['name'] = 'Plan de servitudes (Etape 3 Timeline Foncier)';$array['category'][2]['detail'][43001]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-601-filePlanServitudesMultiple-2' ;
  5722.         $array['category'][2]['detail'][44]['champs'] = 'Etat hypothécaire';$array['category'][2]['detail'][44]['name'] = 'Etat hypothécaire (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][44]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-fileEtatHypothecaireMultiple-2' ;
  5723.         $array['category'][2]['detail'][45]['champs'] = 'Publication SPF ';$array['category'][2]['detail'][45]['name'] = 'Publication SPF (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][45]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-filePublicationSPRMultiple-2' ;
  5724.         $array['category'][2]['detail'][46]['champs'] = 'Titre de propriété ';$array['category'][2]['detail'][46]['name'] = 'Titre de propriété (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][46]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-fileTitreProprieteMultiple-2' ;
  5725.         $array['category'][2]['detail'][47]['champs'] = 'Autres (Cession de bail, projet de bail…)';$array['category'][2]['detail'][47]['name'] = 'Autres (Cession de bail, projet de bail…) (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][47]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-fileAutreEtap6-2' ;
  5726.         $array['category'][2]['detail'][48]['champs'] = 'Procuration Bailleur ';$array['category'][2]['detail'][48]['name'] = 'Procuration Bailleur (Etape 4 Timeline Foncier)';$array['category'][2]['detail'][48]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-602-fileProcurationBailleur-2' ;
  5727.         $array['category'][2]['detail'][49]['champs'] = 'Nom du notaire ';$array['category'][2]['detail'][49]['name'] = 'Nom du notaire (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][49]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-nomNotaire' ;
  5728.         $array['category'][2]['detail'][50]['champs'] = 'Bail signé';$array['category'][2]['detail'][50]['name'] = 'Bail signé (Etape 3 Timeline Foncier)';$array['category'][2]['detail'][50]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-7-fileBailSigneMultiple-2' ;
  5729.         $array['category'][2]['detail'][51]['champs'] = 'Avenant au bail';$array['category'][2]['detail'][51]['name'] = 'Avenant au bail (Etape 3 Timeline Foncier)';$array['category'][2]['detail'][51]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-7-fileAvenantBailMultiple-2' ;
  5730.         $array['category'][2]['detail'][10030]['champs'] = 'Date d’intervention';$array['category'][2]['detail'][10030]['name'] = 'Date d’intervention (Etape 3 Timeline Foncier)';$array['category'][2]['detail'][10030]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-601-dateIntervention-1' ;
  5731.         $array['category'][2]['detail'][224]['champs'] = 'Preuve de publications SPF';$array['category'][2]['detail'][224]['name'] = 'Preuve de publications SPF (Etape 3 Timeline Foncier)';$array['category'][2]['detail'][224]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-7-filePreuvePublicationsSPFMultiple-2' ;
  5732.         $array['category'][2]['detail'][228]['champs'] = 'Litige';$array['category'][2]['detail'][228]['name'] = 'Litige';$array['category'][2]['detail'][228]['value'] = 'projet-'.ParametrageXlsProject::type_row_const.'-etap-0-0-0-12' ;
  5733.         $array['category'][2]['detail'][226]['champs'] = 'Litige documents';$array['category'][2]['detail'][226]['name'] = 'Litige documents';$array['category'][2]['detail'][226]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-71-etap71Litige-2-fileDocLitigeMultiple-3' ;
  5734.         $array['category'][2]['detail'][227]['champs'] = 'Litige commentaires';$array['category'][2]['detail'][227]['name'] = 'Litige commentaires';$array['category'][2]['detail'][227]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-71-etap71Litige-0-etap71LitigeCommentaire-comment' ;
  5735.         $array['category'][2]['detail'][183]['champs'] = 'Terrassement';$array['category'][2]['detail'][183]['name'] = 'Terrassement (Etape 1 Timeline Foncier)';$array['category'][2]['detail'][183]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-terrassement' ;
  5736.         $array['category'][2]['detail'][184]['champs'] = 'Tranchée';$array['category'][2]['detail'][184]['name'] = 'Tranchée (Etape 1 Timeline Foncier)';$array['category'][2]['detail'][184]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-tranchee' ;
  5737.         $array['category'][2]['detail'][185]['champs'] = 'Bardage';$array['category'][2]['detail'][185]['name'] = 'Bardage (Etape 1 Timeline Foncier)';$array['category'][2]['detail'][185]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-bardage' ;
  5738.         $array['category'][2]['detail'][186]['champs'] = 'Rénovation charpente';$array['category'][2]['detail'][186]['name'] = 'Rénovation charpente (Etape 1 Timeline Foncier)';$array['category'][2]['detail'][186]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-renovationCharpente' ;
  5739.         $array['category'][2]['detail'][187]['champs'] = 'Désamiantage';$array['category'][2]['detail'][187]['name'] = 'Désamiantage (Etape 1 Timeline Foncier)';$array['category'][2]['detail'][187]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-desamiantage' ;
  5740.         $array['category'][2]['detail'][191]['champs'] = 'Levée d’option date';$array['category'][2]['detail'][191]['name'] = 'Levée d’option date';$array['category'][2]['detail'][191]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-leveeOption-1' ;
  5741.         $array['category'][2]['detail'][190]['champs'] = 'Levée d’option doc';$array['category'][2]['detail'][190]['name'] = 'Levée d’option doc';$array['category'][2]['detail'][190]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-fileLeveeOptionMultiple-2' ;
  5742.         $array['category'][2]['detail'][19100]['champs'] = 'Acte de substitution';$array['category'][2]['detail'][19100]['name'] = 'Acte de substitution';$array['category'][2]['detail'][19100]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-fileActeSubstitutionMultiple-2' ;
  5743.         $array['category'][2]['detail'][19101]['champs'] = 'LOI';$array['category'][2]['detail'][19101]['name'] = 'LOI';$array['category'][2]['detail'][19101]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-fileLoiMultiple-2' ;
  5744.         $array['category'][2]['detail'][19102]['champs'] = 'Promesse d\'achat';$array['category'][2]['detail'][19102]['name'] = 'Promesse d\'achat';$array['category'][2]['detail'][19102]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-filePromesseAchatMultiple-2' ;
  5745.         $array['category'][2]['detail'][19103]['champs'] = 'Date de signature LOI';$array['category'][2]['detail'][19103]['name'] = 'Date de signature LOI';$array['category'][2]['detail'][19103]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-dateSignature-1';
  5746.         $array['category'][2]['detail'][19104]['champs'] = 'Date de fin d’exclusivité LOI';$array['category'][2]['detail'][19104]['name'] = 'Date de fin d’exclusivité LOI';$array['category'][2]['detail'][19104]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-dateFinExclusiviteLoi-1';
  5747.         $array['category'][2]['detail'][19105]['champs'] = 'Honoraire apporteur';$array['category'][2]['detail'][19105]['name'] = 'Honoraire apporteur';$array['category'][2]['detail'][19105]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-honoraireApporteur';
  5748.         $array['category'][2]['detail'][19106]['champs'] = 'Indemnité transitoire';$array['category'][2]['detail'][19106]['name'] = 'Indemnité transitoire';$array['category'][2]['detail'][19106]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-indemniteTransitoire';
  5749.         $array['category'][2]['detail'][191060]['champs'] = 'Puissance signée';$array['category'][2]['detail'][191060]['name'] = 'Puissance signée';$array['category'][2]['detail'][191060]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-puissanceSignee';
  5750.         $array['category'][2]['detail'][19107]['champs'] = 'Prix d’achat foncier';$array['category'][2]['detail'][19107]['name'] = 'Prix d’achat foncier';$array['category'][2]['detail'][19107]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-prixAchatFoncier';
  5751.         $array['category'][2]['detail'][19108]['champs'] = 'Unité du prix d’achat';$array['category'][2]['detail'][19108]['name'] = 'Unité du prix d’achat';$array['category'][2]['detail'][19108]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-5-unitePrixAchat';
  5752.         $array['category'][2]['detail'][192]['champs'] = 'Extrait de matrice cadastrale';$array['category'][2]['detail'][192]['name'] = 'Extrait de matrice cadastrale (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][192]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-fileExtraitMatriceCadastrale-2' ;
  5753.         $array['category'][2]['detail'][193]['champs'] = 'Carte d’identité';$array['category'][2]['detail'][193]['name'] = 'Carte d’identité (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][193]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-fileCarteIdentite-2' ;
  5754.         $array['category'][2]['detail'][194]['champs'] = 'Livret de famille ';$array['category'][2]['detail'][194]['name'] = 'Livret de famille (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][194]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-fileLivretFamille-2' ;
  5755.         $array['category'][2]['detail'][195]['champs'] = 'Accord ML ';$array['category'][2]['detail'][195]['name'] = 'Accord ML (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][195]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-fileAccordMl-2' ;
  5756.         $array['category'][2]['detail'][196]['champs'] = 'Kbis ';$array['category'][2]['detail'][196]['name'] = 'Kbis (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][196]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-fileKbis-2' ;
  5757.         $array['category'][2]['detail'][197]['champs'] = 'Statuts ';$array['category'][2]['detail'][197]['name'] = 'Statuts (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][197]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-fileStatuts-2' ;
  5758.         $array['category'][2]['detail'][198]['champs'] = 'les parcelles du projet';$array['category'][2]['detail'][198]['name'] = 'les parcelles du projet (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][198]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-parcellesProjet' ;
  5759.         $array['category'][2]['detail'][199]['champs'] = 'les propriétaires';$array['category'][2]['detail'][199]['name'] = 'les propriétaires (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][199]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-proprietaires' ;
  5760.         $array['category'][2]['detail'][200]['champs'] = 'Situation foncière';$array['category'][2]['detail'][200]['name'] = 'Situation foncière (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][200]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-situationFonciere' ;
  5761.         $array['category'][2]['detail'][201]['champs'] = 'Statut Mainlevée ';$array['category'][2]['detail'][201]['name'] = 'Statut Mainlevée (Etape 2 Timeline Foncier)';$array['category'][2]['detail'][201]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-6-statutMainlevee' ;
  5762.         $array['category'][3]['num'] = 3;
  5763.         $array['category'][3]['name'] = 'Raccordement';
  5764.         $array['category'][3]['detail'][52001]['champs'] = 'IPR';$array['category'][3]['detail'][52001]['name'] = 'IPR (Etape 0 Timeline Raccordement)';$array['category'][3]['detail'][52001]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-80-fileIPR-2' ;
  5765.         $array['category'][3]['detail'][52002]['champs'] = 'PRAC';$array['category'][3]['detail'][52002]['name'] = 'PRAC (Etape 0 Timeline Raccordement)';$array['category'][3]['detail'][52002]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-80-filePRAC-2' ;
  5766.         $array['category'][3]['detail'][52003]['champs'] = 'Distance PDL';$array['category'][3]['detail'][52003]['name'] = 'Distance PDL  (Etape 0 Timeline Raccordement)';$array['category'][3]['detail'][52003]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-80-distancePdl' ;
  5767.         $array['category'][3]['detail'][52004]['champs'] = 'Nature du raccordement ';$array['category'][3]['detail'][52004]['name'] = 'Nature du raccordement  (Etape 0 Timeline Raccordement)';$array['category'][3]['detail'][52004]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-80-natureRaccordemenT' ;
  5768.         $array['category'][3]['detail'][52]['champs'] = 'Kbis de l’ETS';$array['category'][3]['detail'][52]['name'] = 'Kbis de l’ETS (Etape 1 Timeline Raccordement)';$array['category'][3]['detail'][52]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-8-fileKbisEtsMultiple-2' ;
  5769.         $array['category'][3]['detail'][53]['champs'] = 'Profil du créateur';$array['category'][3]['detail'][53]['name'] = 'Profil du créateur (Etape 1 Timeline Raccordement)';$array['category'][3]['detail'][53]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-8-profileCreateur' ;
  5770.         $array['category'][3]['detail'][54]['champs'] = 'Adresse';$array['category'][3]['detail'][54]['name'] = 'Adresse (Etape 1 Timeline Raccordement)';$array['category'][3]['detail'][54]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-8-adresseEtablissement' ;
  5771.         $array['category'][3]['detail'][55]['champs'] = 'Ville';$array['category'][3]['detail'][55]['name'] = 'Ville (Etape 1 Timeline Raccordement)';$array['category'][3]['detail'][55]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-8-cityEtablissement' ;
  5772.         $array['category'][3]['detail'][56]['champs'] = 'Code postal';$array['category'][3]['detail'][56]['name'] = 'Code postal (Etape 1 Timeline Raccordement)';$array['category'][3]['detail'][56]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-8-codePostalEtablissement' ;
  5773.         $array['category'][3]['detail'][57]['champs'] = 'Latitude';$array['category'][3]['detail'][57]['name'] = 'Latitude (Etape 1 Timeline Raccordement)';$array['category'][3]['detail'][57]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-8-latEtablissement' ;
  5774.         $array['category'][3]['detail'][58]['champs'] = 'Longitude';$array['category'][3]['detail'][58]['name'] = 'Longitude (Etape 1 Timeline Raccordement)';$array['category'][3]['detail'][58]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-8-longiEtablissement' ;
  5775.         $array['category'][3]['detail'][59]['champs'] = 'Numéro de parcelle';$array['category'][3]['detail'][59]['name'] = 'Numéro de parcelle (Etape 1 Timeline Raccordement)';$array['category'][3]['detail'][59]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-8-numParcelleEtablissement' ;
  5776.         $array['category'][3]['detail'][60]['champs'] = 'SIRET de l’ETS';$array['category'][3]['detail'][60]['name'] = 'SIRET de l’ETS (Etape 1 Timeline Raccordement)';$array['category'][3]['detail'][60]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-8-siretEts' ;
  5777.         $array['category'][3]['detail'][61]['champs'] = 'SPV confirmation ou changement';$array['category'][3]['detail'][61]['name'] = 'SPV confirmation ou changement (Etape 1 Timeline Raccordement)';$array['category'][3]['detail'][61]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-8-spvEtablissement' ;
  5778.         $array['category'][3]['detail'][62]['champs'] = 'Mail d’ENEDIS de confirmation';$array['category'][3]['detail'][62]['name'] = 'Mail d’ENEDIS de confirmation (Etape 2 Timeline Raccordement)';$array['category'][3]['detail'][62]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-9-fileMailEnedisConfirmationMultiple-2' ;
  5779.         $array['category'][3]['detail'][62001]['champs'] = 'Demande de raccordement';$array['category'][3]['detail'][62001]['name'] = 'Demande de raccordement (Etape 2 Timeline Raccordement)';$array['category'][3]['detail'][62001]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-9-fileDemandeRaccordementMultiple-2' ;
  5780. //        $array['category'][3]['detail'][62002]['champs'] = 'Garantie bancaire';$array['category'][3]['detail'][62002]['name'] = 'Garantie bancaire (Etape 2 Timeline Raccordement)';$array['category'][3]['detail'][62002]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-9-fileGarantieBancaireMultiple-2' ;
  5781. //        $array['category'][3]['detail'][63]['champs'] = 'Date maximale d\'achèvement des travaux';$array['category'][3]['detail'][63]['name'] = 'Date maximale d\'achèvement des travaux (Etape 2 Timeline Raccordement)';$array['category'][3]['detail'][63]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-9-dateMaximaleAchevement-1' ;
  5782. //        $array['category'][3]['detail'][64]['champs'] = 'Tarif Fit prévisionnel';$array['category'][3]['detail'][64]['name'] = 'Tarif Fit prévisionnel (Etape 2 Timeline Raccordement)';$array['category'][3]['detail'][64]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-9-tarifFit' ;
  5783.         $array['category'][3]['detail'][65]['champs'] = 'Date T0';$array['category'][3]['detail'][65]['name'] = 'Date T0 (Etape 2 Timeline Raccordement)';$array['category'][3]['detail'][65]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-9-dateT0-1' ;
  5784.         $array['category'][3]['detail'][66]['champs'] = 'PTF';$array['category'][3]['detail'][66]['name'] = 'PTF (Etape 3 Timeline Raccordement)';$array['category'][3]['detail'][66]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-10-filePtfMultiple-2' ;
  5785.         $array['category'][3]['detail'][67]['champs'] = 'CRD signée';$array['category'][3]['detail'][67]['name'] = 'CRD signée (Etape 3 Timeline Raccordement)';$array['category'][3]['detail'][67]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-10-fileCrdSigneeMultiple-2' ;
  5786.         $array['category'][3]['detail'][68]['champs'] = 'Preuve de virement';$array['category'][3]['detail'][68]['name'] = 'Preuve de virement (Etape 3 Timeline Raccordement)';$array['category'][3]['detail'][68]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-10-filePreuveVirementMultiple-2' ;
  5787.         $array['category'][3]['detail'][6800]['champs'] = 'Avenant CRD';$array['category'][3]['detail'][6800]['name'] = 'Avenant CRD (Etape 3 Timeline Raccordement)';$array['category'][3]['detail'][6800]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-10-fileAvenantCrdMultiple-2' ;
  5788.         $array['category'][3]['detail'][6801]['champs'] = 'Avenant CRD pour MES';$array['category'][3]['detail'][6801]['name'] = 'Avenant CRD pour MES (Etape 3 Timeline Raccordement)';$array['category'][3]['detail'][6801]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-10-fileAvenantCrdMesMultiple-2' ;
  5789.         $array['category'][3]['detail'][69]['champs'] = 'Montant acompte ';$array['category'][3]['detail'][69]['name'] = 'Montant acompte (Etape 3 Timeline Raccordement)';$array['category'][3]['detail'][69]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-10-montantAcompte' ;
  5790.         $array['category'][3]['detail'][6900]['champs'] = 'Avenant CRD TEXT ';$array['category'][3]['detail'][6900]['name'] = 'Avenant CRD TEXT (Etape 3 Timeline Raccordement)';$array['category'][3]['detail'][6900]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-10-avenantCrdMes' ;
  5791.         $array['category'][3]['detail'][70]['champs'] = 'Montant coût total';$array['category'][3]['detail'][70]['name'] = 'Montant coût total (Etape 3 Timeline Raccordement)';$array['category'][3]['detail'][70]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-10-montantCoutTotal' ;
  5792.         $array['category'][3]['detail'][71]['champs'] = 'Référence ENEDIS ';$array['category'][3]['detail'][71]['name'] = 'Référence ENEDIS (Etape 3 Timeline Raccordement)';$array['category'][3]['detail'][71]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-10-referenceEnedis' ;
  5793.         $array['category'][3]['detail'][72]['champs'] = 'CEX signé';$array['category'][3]['detail'][72]['name'] = 'CEX signé (Etape 4 Timeline Raccordement)';$array['category'][3]['detail'][72]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-12-fileCexSigneMultiple-2' ;
  5794.         $array['category'][3]['detail'][73]['champs'] = 'CARDi signé';$array['category'][3]['detail'][73]['name'] = 'CARDi signé (Etape 4 Timeline Raccordement)';$array['category'][3]['detail'][73]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-12-fileCardiSigneMultiple-2' ;
  5795.         $array['category'][3]['detail'][74]['champs'] = 'Numéro de contrat';$array['category'][3]['detail'][74]['name'] = 'Numéro de contrat (Etape 4 Timeline Raccordement)';$array['category'][3]['detail'][74]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-12-numeroCardiMultiple-0-numeroCardi' ;
  5796.         $array['category'][3]['detail'][75]['champs'] = 'Numéro PRM';$array['category'][3]['detail'][75]['name'] = 'Numéro PRM (Etape 4 Timeline Raccordement)';$array['category'][3]['detail'][75]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-12-numeroCardiMultiple-0-identifiantEnedis' ;
  5797.         $array['category'][3]['detail'][76]['champs'] = 'Consuel';$array['category'][3]['detail'][76]['name'] = 'Consuel (Etape 5 Timeline Raccordement)';$array['category'][3]['detail'][76]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-13-fileConsuelMultiple-2' ;
  5798.         $array['category'][3]['detail'][77]['champs'] = 'Date du consuel ';$array['category'][3]['detail'][77]['name'] = 'Date du consuel (Etape 5 Timeline Raccordement)';$array['category'][3]['detail'][77]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-13-dateConsuel-1' ;
  5799.         $array['category'][3]['detail'][9976]['champs'] = 'Attestation bureau de contrôle S21';$array['category'][3]['detail'][9976]['name'] = 'Attestation bureau de contrôle S21 (Etape 5 Timeline Raccordement)';$array['category'][3]['detail'][9976]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-13-fileAttestationBureauControleMultiple-2' ;
  5800.         $array['category'][3]['detail'][9977]['champs'] = 'DRE';$array['category'][3]['detail'][9977]['name'] = 'DRE (Etape 5 Timeline Raccordement)';$array['category'][3]['detail'][9977]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-13-fileDREMultiple-2' ;
  5801.         $array['category'][3]['detail'][78]['champs'] = 'Attestation de mise en service';$array['category'][3]['detail'][78]['name'] = 'Attestation de mise en service (Etape 7 Timeline Raccordement)';$array['category'][3]['detail'][78]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-14-fileDoeMultiple-2' ;
  5802.         $array['category'][3]['detail'][78001]['champs'] = 'ARPE';$array['category'][3]['detail'][78001]['name'] = 'ARPE (Etape 7 Timeline Raccordement)';$array['category'][3]['detail'][78001]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-14-fileARPE-2' ;
  5803.         $array['category'][3]['detail'][78002]['champs'] = 'DEIE';$array['category'][3]['detail'][78002]['name'] = 'DEIE (Etape 7 Timeline Raccordement)';$array['category'][3]['detail'][78002]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-14-fileDEIE-2' ;
  5804.         $array['category'][3]['detail'][79]['champs'] = 'Date de mise en service';$array['category'][3]['detail'][79]['name'] = 'Date de mise en service (Etape7 Timeline Raccordement)';$array['category'][3]['detail'][79]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-14-dateMiseEnService-1' ;
  5805.         $array['category'][3]['detail'][80]['champs'] = 'Adresse';$array['category'][3]['detail'][80]['name'] = 'Adresse (Etape 7 Timeline Raccordement)';$array['category'][3]['detail'][80]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-14-adresseMiseEnService' ;
  5806.         $array['category'][3]['detail'][81]['champs'] = 'Ville';$array['category'][3]['detail'][81]['name'] = 'Ville (Etape 7 Timeline Raccordement)';$array['category'][3]['detail'][81]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-14-cityMiseEnService' ;
  5807.         $array['category'][3]['detail'][82]['champs'] = 'Code postal';$array['category'][3]['detail'][82]['name'] = 'Code postal (Etape 7 Timeline Raccordement)';$array['category'][3]['detail'][82]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-14-codePostalMiseEnService' ;
  5808.         $array['category'][3]['detail'][83]['champs'] = 'Nom du bailleur';$array['category'][3]['detail'][83]['name'] = 'Nom du bailleur (Etape 7 Timeline Raccordement)';$array['category'][3]['detail'][83]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-14-firstnameProprietaire' ;
  5809.         $array['category'][3]['detail'][84]['champs'] = 'Prénom du bailleur';$array['category'][3]['detail'][84]['name'] = 'Prénom du bailleur (Etape 7 Timeline Raccordement)';$array['category'][3]['detail'][84]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-14-lastnameProprietaire' ;
  5810.         $array['category'][3]['detail'][85]['champs'] = 'N° de téléphone du propriétaire';$array['category'][3]['detail'][85]['name'] = 'N° de téléphone du propriétaire (Etape 7 Timeline Raccordement)';$array['category'][3]['detail'][85]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-14-phoneProprietaire' ;
  5811.         $array['category'][3]['detail'][86]['champs'] = 'E-mail du propriétaire';$array['category'][3]['detail'][86]['name'] = 'E-mail du propriétaire (Etape 7 Timeline Raccordement)';$array['category'][3]['detail'][86]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-14-emailProprietaire' ;
  5812.         $array['category'][3]['detail'][87]['champs'] = 'Procédure d’accès';$array['category'][3]['detail'][87]['name'] = 'Procédure d’accès (Etape 7 Timeline Raccordement)';$array['category'][3]['detail'][87]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-14-procedureAcces' ;
  5813.         $array['category'][3]['detail'][164]['champs'] = 'Date prévisionnelle d’installation du PDL';$array['category'][3]['detail'][164]['name'] = 'Date prévisionnelle d’installation du PDL (Etape 5 Timeline Raccordement)';$array['category'][3]['detail'][164]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-121-datePrevisionnelleInstallationPDL-1' ;
  5814.         $array['category'][3]['detail'][166]['champs'] = 'Date d’installation du PDL';$array['category'][3]['detail'][166]['name'] = 'Date d’installation du PDL (Etape 5 Timeline Raccordement)';$array['category'][3]['detail'][166]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-121-dateInstallationPDL-1' ;
  5815.         $array['category'][3]['detail'][167]['champs'] = 'Date de mise sous tension ENEDIS';$array['category'][3]['detail'][167]['name'] = 'Date de mise sous tension ENEDIS (Etape 5 Timeline Raccordement)';$array['category'][3]['detail'][167]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-121-dateMiseSousTensionEnedis-1' ;
  5816.         $array['category'][3]['detail'][165]['champs'] = 'Installation PDL';$array['category'][3]['detail'][165]['name'] = 'Installation PDL (Etape 5 Timeline Raccordement)';$array['category'][3]['detail'][165]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-121-fileDocument121Multiple-2' ;
  5817.         $array['category'][3]['detail'][210]['champs'] = 'Avenant CARDi';$array['category'][3]['detail'][210]['name'] = 'Avenant CARDi (Etape 4 Timeline Raccordement)';$array['category'][3]['detail'][210]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-12-fileAvenantCardiMultiple-2' ;
  5818.         $array['category'][4]['num'] = 4;
  5819.         $array['category'][4]['name'] = 'Construction';
  5820.         $array['category'][4]['detail'][96]['champs'] = 'Diagnostic charpente';$array['category'][4]['detail'][96]['name'] = 'Diagnostic charpente (Etape 1 Timeline Construction)';$array['category'][4]['detail'][96]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-160-fileDiagnostiqueCharpenteMultiple-2' ;
  5821.         $array['category'][4]['detail'][97]['champs'] = 'Étude de sol';$array['category'][4]['detail'][97]['name'] = 'Étude de sol (Etape 1 Timeline Construction)';$array['category'][4]['detail'][97]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-160-fileEtudeSoleMultiple-2' ;
  5822.         $array['category'][4]['detail'][100]['champs'] = 'PV de démarrage';$array['category'][4]['detail'][100]['name'] = 'PV de démarrage (Etape 4-1 Timeline Construction)';$array['category'][4]['detail'][100]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-171-filePVDemarrageMultiple-2' ;
  5823.         $array['category'][4]['detail'][101]['champs'] = 'DOC';$array['category'][4]['detail'][101]['name'] = 'DOC (Etape 4-1 Timeline Construction)';$array['category'][4]['detail'][101]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-171-fileDocEtap171Multiple-2' ;
  5824.         $array['category'][4]['detail'][102]['champs'] = 'Ordre de service';$array['category'][4]['detail'][102]['name'] = 'Ordre de service (Etape 4-1 Timeline Construction)';$array['category'][4]['detail'][102]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-171-fileOrderServiceMultiple-2' ;
  5825.         $array['category'][4]['detail'][103]['champs'] = 'Planning prévisionnel';$array['category'][4]['detail'][103]['name'] = 'Planning prévisionnel (Etape 4-1 Timeline Construction)';$array['category'][4]['detail'][103]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-171-filePlanningPrevisionnelMultiple-2' ;
  5826.         $array['category'][4]['detail'][1030]['champs'] = 'PGC';$array['category'][4]['detail'][1030]['name'] = 'PGC (Etape 4-1 Timeline Construction)';$array['category'][4]['detail'][1030]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-171-filePGCMultiple-2' ;
  5827.         $array['category'][4]['detail'][1031]['champs'] = 'PPSPS';$array['category'][4]['detail'][1031]['name'] = 'PPSPS (Etape 4-1 Timeline Construction)';$array['category'][4]['detail'][1031]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-171-filePPSPSMultiple-2' ;
  5828.         $array['category'][4]['detail'][1032]['champs'] = 'Harmonisation';$array['category'][4]['detail'][1032]['name'] = 'Harmonisation (Etape 4-1 Timeline Construction)';$array['category'][4]['detail'][1032]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-171-fileHarmonisationMultiple-2' ;
  5829.         $array['category'][4]['detail'][1033]['champs'] = 'Rapport de visite SPS';$array['category'][4]['detail'][1033]['name'] = 'Rapport de visite SPS (Etape 4-1 Timeline Construction)';$array['category'][4]['detail'][1033]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-171-fileRapportVisiteSpsMultiple-2' ;
  5830.         $array['category'][4]['detail'][1034]['champs'] = 'DIUO';$array['category'][4]['detail'][1034]['name'] = 'DIUO (Etape 4-1 Timeline Construction)';$array['category'][4]['detail'][1034]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-171-DIUO-2' ;
  5831.         $array['category'][4]['detail'][104]['champs'] = 'Note de calcul béton et féraillage';$array['category'][4]['detail'][104]['name'] = 'Note de calcul béton et féraillage (Etape 4-2 Timeline Construction)';$array['category'][4]['detail'][104]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-172-fileNoteCalculBetonFeraillageMultiple-2' ;
  5832.         $array['category'][4]['detail'][105]['champs'] = 'Plan implantation bâtiment avec dalle béton du local onduleur';$array['category'][4]['detail'][105]['name'] = 'Plan implantation bâtiment avec dalle béton du local onduleur (Etape 4-2 Timeline Construction)';$array['category'][4]['detail'][105]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-172-filePlanImplantationBatimentAvecDalleBetonMultiple-2' ;
  5833.         $array['category'][4]['detail'][106]['champs'] = 'PV de réception';$array['category'][4]['detail'][106]['name'] = 'PV de réception (Etape 4-2 Timeline Construction)';$array['category'][4]['detail'][106]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-172-filePVReceptionMultiple-2' ;
  5834.         $array['category'][4]['detail'][107]['champs'] = 'Fondations terminées ';$array['category'][4]['detail'][107]['name'] = 'Fondations terminées (Etape 4-2 Timeline Construction)';$array['category'][4]['detail'][107]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-172-fileFondationTermineesMultiple-2' ;
  5835.         $array['category'][4]['detail'][108]['champs'] = 'Dalle béton shelter ';$array['category'][4]['detail'][108]['name'] = 'Dalle béton shelter (Etape 4-2 Timeline Construction)';$array['category'][4]['detail'][108]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-172-fileDalleBetonShelterMultiple-2' ;
  5836.         $array['category'][4]['detail'][109]['champs'] = 'Chemin d’accès ';$array['category'][4]['detail'][109]['name'] = 'Chemin d’accès (Etape 4-2 Timeline Construction)';$array['category'][4]['detail'][109]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-172-fileCheminAccesMultiple-2' ;
  5837.         $array['category'][4]['detail'][110]['champs'] = 'Photos de la plateforme';$array['category'][4]['detail'][110]['name'] = 'Photos de la plateforme (Etape 4-2 Timeline Construction)';$array['category'][4]['detail'][110]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-172-filePhotosPlateformeMultiple-2' ;
  5838.         $array['category'][4]['detail'][111]['champs'] = 'Date debut des fondations';$array['category'][4]['detail'][111]['name'] = 'Date debut des fondations (Etape 4-2 Timeline Construction)';$array['category'][4]['detail'][111]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-172-dateDebutFondation-1' ;
  5839.         $array['category'][4]['detail'][112]['champs'] = 'Notes de calcul charpente';$array['category'][4]['detail'][112]['name'] = 'Notes de calcul charpente (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][112]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-fileNoteCalculCharpente173Multiple-2' ;
  5840. //        $array['category'][4]['detail'][113]['champs'] = 'Photos de renforcement charpente';$array['category'][4]['detail'][113]['name'] = 'Photos de renforcement charpente (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][113]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-filePhotoRenforcementcharpente173Multiple-2' ;
  5841.         $array['category'][4]['detail'][114]['champs'] = 'Plan de bardage';$array['category'][4]['detail'][114]['name'] = 'Plan de bardage (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][114]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-fileOssatureSecondaireBardage173Multiple-2' ;
  5842. //        $array['category'][4]['detail'][115]['champs'] = 'Photos de renforcement des bardages';$array['category'][4]['detail'][115]['name'] = 'Photos de renforcement des bardages (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][115]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-filePhotoRenforcementBardage173Multiple-2' ;
  5843.         $array['category'][4]['detail'][116]['champs'] = 'PV réception lot charpente / couverture / bardage';$array['category'][4]['detail'][116]['name'] = 'PV réception lot charpente / couverture / bardage (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][116]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-filePVreception173Multiple-2' ;
  5844. //        $array['category'][4]['detail'][117]['champs'] = 'Photos de renforcement de la couverture terminée';$array['category'][4]['detail'][117]['name'] = 'Photos de renforcement de la couverture terminée (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][117]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-filePhotoRenforcementCouvertureTermine173Multiple-2' ;
  5845.         $array['category'][4]['detail'][118]['champs'] = 'Plans de charpente';$array['category'][4]['detail'][118]['name'] = 'Plans de charpente (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][118]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-filePlansCharpente173Multiple-2' ;
  5846.         $array['category'][4]['detail'][1181]['champs'] = 'Plans de charpente signé par le bailleur';$array['category'][4]['detail'][1181]['name'] = 'Plans de charpente (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][1181]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-filePlansCharpente173SigneMultiple-2' ;
  5847.         $array['category'][4]['detail'][119]['champs'] = 'Vues 3D';$array['category'][4]['detail'][119]['name'] = 'Vues 3D (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][119]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-fileVues3d173Multiple-2' ;
  5848.         $array['category'][4]['detail'][120]['champs'] = 'Plan de couverture';$array['category'][4]['detail'][120]['name'] = 'Plan de couverture (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][120]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-filePlanCouverture173Multiple-2' ;
  5849.         $array['category'][4]['detail'][121]['champs'] = 'Plan et descriptifs des travaux de renforcement de charpente';$array['category'][4]['detail'][121]['name'] = 'Plan et descriptifs des travaux de renforcement de charpente (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][121]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-filePlanDescriptionTravauxRenforcementCharpente173Multiple-2' ;
  5850.         $array['category'][4]['detail'][122]['champs'] = 'Plan et descriptifs des travaux de dépose , repose de couverture';$array['category'][4]['detail'][122]['name'] = 'Plan et descriptifs des travaux de dépose , repose de couverture (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][122]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-filePlanDescriptionTravauxDeposeCouverture173Multiple-2' ;
  5851.         $array['category'][4]['detail'][123]['champs'] = 'Date Début Charpente';$array['category'][4]['detail'][123]['name'] = 'Date Début Charpente (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][123]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-dateDebutCharpente-1' ;
  5852.         $array['category'][4]['detail'][124]['champs'] = 'Date Fin Charpente';$array['category'][4]['detail'][124]['name'] = 'Date Fin Charpente (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][124]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-dateFinCharpente-1' ;
  5853.         $array['category'][4]['detail'][125]['champs'] = 'Date Début Couverture';$array['category'][4]['detail'][125]['name'] = 'Date Début Couverture (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][125]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-dateDebutCouverture-1' ;
  5854.         $array['category'][4]['detail'][126]['champs'] = 'Date Fin Couverture';$array['category'][4]['detail'][126]['name'] = 'Date Fin Couverture (Etape 4-3 Timeline Construction)';$array['category'][4]['detail'][126]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-173-dateFinCouverture-1' ;
  5855.         $array['category'][4]['detail'][127]['champs'] = 'Plan de calepinage / câblage';$array['category'][4]['detail'][127]['name'] = 'Plan de calepinage / câblage (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][127]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-filePlanCalepinageModule174Multiple-2' ;
  5856. //        $array['category'][4]['detail'][128]['champs'] = 'Plan de câblage des strings';$array['category'][4]['detail'][128]['name'] = 'Plan de câblage des strings (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][128]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-filePlanCaplageStrings174Multiple-2' ;
  5857.         $array['category'][4]['detail'][129]['champs'] = 'Note de calcul sous Lise PV';$array['category'][4]['detail'][129]['name'] = 'Note de calcul sous Lise PV (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][129]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-fileNoteCalculSousLisePV174Multiple-2' ;
  5858.         $array['category'][4]['detail'][130]['champs'] = 'Schéma Unifilaire de l’installation';$array['category'][4]['detail'][130]['name'] = 'Schéma Unifilaire de l’installation (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][130]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-fileSchemaUnifilaireInstallation174Multiple-2' ;
  5859.         $array['category'][4]['detail'][131]['champs'] = 'Schéma d’agencement du shelter ou photos';$array['category'][4]['detail'][131]['name'] = 'Schéma d’agencement du shelter ou photos (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][131]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-fileShemaAgencementShelterPhotos174Multiple-2' ;
  5860. //        $array['category'][4]['detail'][132]['champs'] = 'Test de PR à la mise en service';$array['category'][4]['detail'][132]['name'] = 'Test de PR à la mise en service (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][132]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-fileTestPrMiseService174Multiple-2' ;
  5861.         $array['category'][4]['detail'][133]['champs'] = 'Schéma unifilaire du système de monitoring';$array['category'][4]['detail'][133]['name'] = 'Schéma unifilaire du système de monitoring (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][133]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-fileShemaUnifilaireSystemeMonitoring174Multiple-2' ;
  5862.         $array['category'][4]['detail'][134]['champs'] = 'Tests et vérifications des travaux électriques, fiche d’auto-contrôle de l’installateur ';$array['category'][4]['detail'][134]['name'] = 'Tests et vérifications des travaux électriques, fiche d’auto-contrôle de l’installateur (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][134]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-fileTestVerificationTravauxElectriqueFiche174Multiple-2' ;
  5863.         $array['category'][4]['detail'][135]['champs'] = 'PV de réception (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][135]['name'] = 'PV de réception (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][135]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-filePVReception174Multiple-2' ;
  5864.         $array['category'][4]['detail'][136]['champs'] = 'Photos de la centrale solaire';$array['category'][4]['detail'][136]['name'] = 'Photos de la centrale solaire (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][136]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-filePhotosGenerateur174Multiple-2' ;
  5865. //        $array['category'][4]['detail'][127]['name'] = 'Pv terminées (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][127]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-filePvTerminees174Multiple-2' ;
  5866.         $array['category'][4]['detail'][137]['champs'] = 'Descentes de câbles';$array['category'][4]['detail'][137]['name'] = 'Descentes de câbles (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][137]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-fileDescentesCables174Multiple-2' ;
  5867.         $array['category'][4]['detail'][138]['champs'] = 'Raccordement du local onduleur';$array['category'][4]['detail'][138]['name'] = 'Raccordement du local onduleur (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][138]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-fileRaccordementLocalOnduleur174Multiple-2' ;
  5868.         $array['category'][4]['detail'][139]['champs'] = 'Date Début Pose PV ';$array['category'][4]['detail'][139]['name'] = 'Date Début Pose PV (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][139]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-dateDebutPosePv-1' ;
  5869.         $array['category'][4]['detail'][140]['champs'] = 'Date Fin Pose PV ';$array['category'][4]['detail'][140]['name'] = 'Date Fin Pose PV (Etape 4-4 Timeline Construction)';$array['category'][4]['detail'][140]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-174-dateFinPosePv-1' ;
  5870.         $array['category'][4]['detail'][141]['champs'] = 'Notes de calcul des câbles AC de la liaison ';$array['category'][4]['detail'][141]['name'] = 'Notes de calcul des câbles AC de la liaison (Etape 4-5 Timeline Construction)';$array['category'][4]['detail'][141]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-175-fileNoteCalculCableAcLiaison175Multiple-2' ;
  5871.         $array['category'][4]['detail'][142]['champs'] = 'Plans de la tranchée';$array['category'][4]['detail'][142]['name'] = 'Plans de la tranchée (Etape 4-5 Timeline Construction)';$array['category'][4]['detail'][142]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-175-filePlanTranchee175Multiple-2' ;
  5872. //        $array['category'][4]['detail'][143]['champs'] = 'DAACT';$array['category'][4]['detail'][143]['name'] = 'DAACT (Etape 4-5 Timeline Construction)';$array['category'][4]['detail'][143]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-175-fileDaact175Multiple-2' ;
  5873. //        $array['category'][4]['detail'][144]['champs'] = 'PV de réception';$array['category'][4]['detail'][144]['name'] = 'PV de réception (Etape 4-5 Timeline Construction)';$array['category'][4]['detail'][144]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-175-filePVReception175Multiple-2' ;
  5874. //        $array['category'][4]['detail'][145]['champs'] = 'Photos de la liaison terminée';$array['category'][4]['detail'][145]['name'] = 'Photos de la liaison terminée (Etape 4-5 Timeline Construction)';$array['category'][4]['detail'][145]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-175-filePhotosLiaisonTerminee175Multiple-2' ;
  5875.         $array['category'][4]['detail'][146]['champs'] = 'Date achévement des travaux';$array['category'][4]['detail'][146]['name'] = 'Date achévement des travaux (Etape 4-5 Timeline Construction)';$array['category'][4]['detail'][146]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-175-dateAchevementTraveaux-1' ;
  5876.         $array['category'][4]['detail'][147]['champs'] = 'Consuel';$array['category'][4]['detail'][147]['name'] = 'Consuel (Etape 5 Timeline Construction)';$array['category'][4]['detail'][147]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-20-fileConsuelEtap20Multiple-2' ;
  5877.         $array['category'][4]['detail'][148]['champs'] = 'Date du consuel';$array['category'][4]['detail'][148]['name'] = 'Date du consuel  (Etape 5 Timeline Construction)';$array['category'][4]['detail'][148]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-20-dateConsuelEtap20-1' ;
  5878.         $array['category'][4]['detail'][149]['champs'] = 'DOE';$array['category'][4]['detail'][149]['name'] = 'DOE (Etape 6 Timeline Construction)';$array['category'][4]['detail'][149]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-201-fileDoeEtap201Multiple-2' ;
  5879.         $array['category'][4]['detail'][150]['champs'] = 'tests de réception';$array['category'][4]['detail'][150]['name'] = 'tests de réception (Etape 7 Timeline Construction)';$array['category'][4]['detail'][150]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-21-fileTestReceptionMultiple-2' ;
  5880.         $array['category'][4]['detail'][151]['champs'] = 'Date du raccordement';$array['category'][4]['detail'][151]['name'] = 'Date du raccordement (Etape 7 Timeline Construction)';$array['category'][4]['detail'][151]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-21-dateRaccordement-1' ;
  5881.         $array['category'][4]['detail'][152]['champs'] = 'Date de mise en service';$array['category'][4]['detail'][152]['name'] = 'Date de mise en service (Etape 7 Timeline Construction)';$array['category'][4]['detail'][152]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-21-dateMiseEnService-1' ;
  5882.         $array['category'][4]['detail'][153]['champs'] = 'Tests de PR';$array['category'][4]['detail'][153]['name'] = 'Tests de PR (Etape 8 Timeline Construction)';$array['category'][4]['detail'][153]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-22-fileTestPrMultiple-2' ;
  5883.         $array['category'][4]['detail'][170]['champs'] = 'Visite technique';$array['category'][4]['detail'][170]['name'] = 'Visite technique (Etape 0 Timeline Construction)';$array['category'][4]['detail'][170]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-fileVisiteTechnique159Multiple-2' ;
  5884.         $array['category'][4]['detail'][171]['champs'] = 'Etude de productible';$array['category'][4]['detail'][171]['name'] = 'Etude de productible (Etape 0 Timeline Construction)';$array['category'][4]['detail'][171]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-fileEtudeProductible159Multiple-2' ;
  5885.         $array['category'][4]['detail'][172]['champs'] = 'Etude de sol';$array['category'][4]['detail'][172]['name'] = 'Etude géotechnique/étude structure (Etape 0 Timeline Construction)';$array['category'][4]['detail'][172]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-fileGeotechnique159Multiple-2' ;
  5886.         $array['category'][4]['detail'][173]['champs'] = 'Diagnostic charpente';$array['category'][4]['detail'][173]['name'] = 'Diagnostique charpente (Etape 0 Timeline Construction)';$array['category'][4]['detail'][173]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-fileDiagnostiqueCharpente159Multiple-2' ;
  5887.         $array['category'][4]['detail'][174]['champs'] = 'Design pré-CRD';$array['category'][4]['detail'][174]['name'] = 'Design pré-CRD (Etape 0 Timeline Construction)';$array['category'][4]['detail'][174]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-fileDesignPreCRD159Multiple-2' ;
  5888.         $array['category'][4]['detail'][175]['champs'] = 'Design post-CRD ';$array['category'][4]['detail'][175]['name'] = 'Design post-CRD  (Etape 0 Timeline Construction)';$array['category'][4]['detail'][175]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-fileDesignPostCRD159Multiple-2' ;
  5889.         $array['category'][4]['detail'][176]['champs'] = 'Plan de masse et de situation avec tranchée ';$array['category'][4]['detail'][176]['name'] = 'Plan de masse et de situation avec tranchée  (Etape 0 Timeline Construction)';$array['category'][4]['detail'][176]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-filePlanMasseSituationTranchee159Multiple-2' ;
  5890.         $array['category'][4]['detail'][177]['champs'] = 'Plan de calepinage';$array['category'][4]['detail'][177]['name'] = 'Plan de calepinage (Etape 0 Timeline Construction)';$array['category'][4]['detail'][177]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-filePlanCalepinage159Multiple-2' ;
  5891.         $array['category'][4]['detail'][178]['champs'] = 'Schéma unifilaire';$array['category'][4]['detail'][178]['name'] = 'Schéma unifilaire (Etape 0 Timeline Construction)';$array['category'][4]['detail'][178]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-fileSchemaUnifilaire159Multiple-2' ;
  5892.         $array['category'][4]['detail'][179]['champs'] = 'Etat charpente ';$array['category'][4]['detail'][179]['name'] = 'Etat charpente (Etape 0 Timeline Construction)';$array['category'][4]['detail'][179]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-etatCharpente' ;
  5893.         $array['category'][4]['detail'][17900]['champs'] = 'Plans Autocad ';$array['category'][4]['detail'][17900]['name'] = 'Plans Autocad (Etape 0 Timeline Construction)';$array['category'][4]['detail'][17900]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-filePlansAutocadMultiple-2' ;
  5894.         $array['category'][4]['detail'][17901]['champs'] = 'Plans dwg ';$array['category'][4]['detail'][17901]['name'] = 'Plans dwg (Etape 0 Timeline Construction)';$array['category'][4]['detail'][17901]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-filePlansDwgMultiple-2' ;
  5895.         $array['category'][4]['detail'][180]['champs'] = 'Type de toiture existante ';$array['category'][4]['detail'][180]['name'] = 'Type de toiture existante (Etape 0 Timeline Construction)';$array['category'][4]['detail'][180]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-typeToitureExistante' ;
  5896.         $array['category'][4]['detail'][181]['champs'] = 'Type de rénovation ';$array['category'][4]['detail'][181]['name'] = 'Type de rénovation (Etape 0 Timeline Construction)';$array['category'][4]['detail'][181]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-typeRenovation' ;
  5897.         $array['category'][4]['detail'][182]['champs'] = 'Type de toiture à poser ';$array['category'][4]['detail'][182]['name'] = 'Type de toiture à poser (Etape 0 Timeline Construction)';$array['category'][4]['detail'][182]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-159-typeToiturePoser' ;
  5898.         $array['category'][4]['detail'][202]['champs'] = 'Marque Module';$array['category'][4]['detail'][202]['name'] = 'Marque Module  (Étape 1  Timeline Construction)'; $array['category'][4]['detail'][202]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-160-moduleInformation-0-marque' ;
  5899.         $array['category'][4]['detail'][203]['champs'] = 'Puissance crête';$array['category'][4]['detail'][203]['name'] = 'Puissance crête  (Étape 1  Timeline Construction)'; $array['category'][4]['detail'][203]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-160-moduleInformation-0-reference' ;
  5900.         $array['category'][4]['detail'][204]['champs'] = 'Nombre de modules';$array['category'][4]['detail'][204]['name'] = 'Nombre de modules  (Étape 1  Timeline Construction)'; $array['category'][4]['detail'][204]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-160-moduleInformation-0-nbr' ;
  5901.         $array['category'][4]['detail'][205]['champs'] = 'Marque Onduleur';$array['category'][4]['detail'][205]['name'] = 'Marque Onduleur  (Étape 1  Timeline Construction)'; $array['category'][4]['detail'][205]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-160-onduleurInformation-0-marque' ;
  5902.         $array['category'][4]['detail'][206]['champs'] = 'Puissance Onduleur';$array['category'][4]['detail'][206]['name'] = 'Puissance Onduleur  (Étape 1  Timeline Construction)'; $array['category'][4]['detail'][206]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-160-onduleurInformation-0-puissance' ;
  5903.         $array['category'][4]['detail'][207]['champs'] = 'Nombre de Onduleurs';$array['category'][4]['detail'][207]['name'] = 'Nombre de Onduleurs  (Étape 1  Timeline Construction)'; $array['category'][4]['detail'][207]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-160-onduleurInformation-0-nbr' ;
  5904.         $array['category'][4]['detail'][215]['champs'] = 'Contrat de EPC signé';$array['category'][4]['detail'][215]['name'] = 'Contrat EPC (Etape 3 Timeline Construction)';$array['category'][4]['detail'][215]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-16-contratConstruction-2-fileContratEpcMultiple-1' ;
  5905.         $array['category'][4]['detail'][216]['champs'] = 'Annexes de EPC';$array['category'][4]['detail'][216]['name'] = 'Annexes EPC (fiches techniques…) (Etape 3 Timeline Construction)';$array['category'][4]['detail'][216]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-16-contratConstruction-2-fileAnnexesMultiple-1' ;
  5906.         $array['category'][4]['detail'][217]['champs'] = 'Demande d’agrément de EPC';$array['category'][4]['detail'][217]['name'] = 'Demande d’agrément EPC (Etape 3 Timeline Construction)';$array['category'][4]['detail'][217]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-16-contratConstruction-2-fileDemandeAgrementMultiple-1' ;
  5907.         $array['category'][4]['detail'][218]['champs'] = 'Contrat lot PV signé';$array['category'][4]['detail'][218]['name'] = 'Contrat lot PV signé (Etape 3 Timeline Construction)';$array['category'][4]['detail'][218]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-16-contratConstruction-2-fileContratEpcMultiple-2' ;
  5908.         $array['category'][4]['detail'][219]['champs'] = 'Annexes lot PV';$array['category'][4]['detail'][219]['name'] = 'Annexes lot PV (fiches techniques…) (Etape 3 Timeline Construction)';$array['category'][4]['detail'][219]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-16-contratConstruction-2-fileAnnexesMultiple-2' ;
  5909.         $array['category'][4]['detail'][220]['champs'] = 'Demande d’agrément lot PV';$array['category'][4]['detail'][220]['name'] = 'Demande d’agrément lot PV (Etape 3 Timeline Construction)';$array['category'][4]['detail'][220]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-16-contratConstruction-2-fileDemandeAgrementMultiple-2' ;
  5910.         $array['category'][4]['detail'][221]['champs'] = 'Contrat lot bâtiment signé';$array['category'][4]['detail'][221]['name'] = 'Contrat lot bâtiment signé (Etape 3 Timeline Construction)';$array['category'][4]['detail'][221]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-16-contratConstruction-2-fileContratEpcMultiple-3' ;
  5911.         $array['category'][4]['detail'][222]['champs'] = 'Annexes lot bâtiment ';$array['category'][4]['detail'][222]['name'] = 'Annexes lot bâtiment (fiches techniques…) (Etape 3 Timeline Construction)';$array['category'][4]['detail'][222]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-16-contratConstruction-2-fileAnnexesMultiple-3' ;
  5912.         $array['category'][4]['detail'][223]['champs'] = 'Demande d’agrément lot bâtiment';$array['category'][4]['detail'][223]['name'] = 'Demande d’agrément lot bâtiment (Etape 3 Timeline Construction)';$array['category'][4]['detail'][223]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-16-contratConstruction-2-fileDemandeAgrementMultiple-3' ;
  5913.         $array['category'][5]['num'] = 5;
  5914.         $array['category'][5]['name'] = 'Valorisation';
  5915.         $array['category'][5]['detail'][10031]['champs'] = 'Type de valorisation';$array['category'][5]['detail'][10031]['name'] = 'Type de valorisation';$array['category'][5]['detail'][10031]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-0-typeValorisation' ;
  5916.         $array['category'][5]['detail'][10032]['champs'] = 'Sous choix de valorisation';$array['category'][5]['detail'][10032]['name'] = 'Sous choix de valorisation';$array['category'][5]['detail'][10032]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-0-sousChoixValorisation' ;
  5917.         $array['category'][5]['detail'][10033]['champs'] = 'Sous choix de valorisation (champ libre)';$array['category'][5]['detail'][10033]['name'] = 'Sous choix de valorisation (champ libre)';$array['category'][5]['detail'][10033]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-0-sousChoixValorisationLibre' ;
  5918.         $array['category'][5]['detail'][10034]['champs'] = 'Durée du contrat ';$array['category'][5]['detail'][10034]['name'] = 'Durée du contrat ';$array['category'][5]['detail'][10034]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-0-dureeContrat' ;
  5919.         $array['category'][5]['detail'][10035]['champs'] = 'Date T0';$array['category'][5]['detail'][10035]['name'] = 'Date T0 (Etape 2 Timeline Valorisation)';$array['category'][5]['detail'][10035]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-1-dateT0' ;
  5920.         $array['category'][5]['detail'][10036]['champs'] = 'Tarif Fit prévisionnel';$array['category'][5]['detail'][10036]['name'] = 'Tarif Fit prévisionnel (Etape 2 Timeline Valorisation)';$array['category'][5]['detail'][10036]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-0-tarifFit' ;
  5921.         $array['category'][5]['detail'][10037]['champs'] = 'Date maximale d\'achèvement des travaux';$array['category'][5]['detail'][10037]['name'] = 'Date maximale d\'achèvement des travaux (Etape 2 Timeline Valorisation)';$array['category'][5]['detail'][10037]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-1-dateMaximaleAchevement' ;
  5922.         $array['category'][5]['detail'][10038]['champs'] = 'Type d’AO/Période de candidature';$array['category'][5]['detail'][10038]['name'] = 'Type d’AO/Période de candidature (Etape 2 Timeline Valorisation)';$array['category'][5]['detail'][10038]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-0-typeAoPeriodeCandidature' ;
  5923.         $array['category'][5]['detail'][10039]['champs'] = 'Date de consignation';$array['category'][5]['detail'][10039]['name'] = 'Date de consignation (Etape 2 Timeline Valorisation)';$array['category'][5]['detail'][10039]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-1-dateConsignation' ;
  5924.         $array['category'][5]['detail'][10040]['champs'] = 'Date de dépôt AO';$array['category'][5]['detail'][10040]['name'] = 'Date de dépôt AO (Etape 2 Timeline Valorisation)';$array['category'][5]['detail'][10040]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-1-dateDepotAo' ;
  5925.         $array['category'][5]['detail'][10041]['champs'] = 'Notification Lauréat AO';$array['category'][5]['detail'][10041]['name'] = 'Notification Lauréat AO (Etape 2 Timeline Valorisation)';$array['category'][5]['detail'][10041]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-1-dateNotificationLaureatAo' ;
  5926.         $array['category'][5]['detail'][10042]['champs'] = 'Agrégateur';$array['category'][5]['detail'][10042]['name'] = 'Agrégateur (Etape 2 Timeline Valorisation)';$array['category'][5]['detail'][10042]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-0-agregateur' ;
  5927.         $array['category'][5]['detail'][10043]['champs'] = 'Frais de gestion';$array['category'][5]['detail'][10043]['name'] = 'Frais de gestion (Etape 2 Timeline Valorisation)';$array['category'][5]['detail'][10043]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-0-fraisGestion' ;
  5928.         $array['category'][5]['detail'][10044]['champs'] = 'Unité Frais de Gestion';$array['category'][5]['detail'][10044]['name'] = 'Unité Frais de Gestion (Etape 2 Timeline Valorisation)';$array['category'][5]['detail'][10044]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-0-uniteFraisGestion' ;
  5929.         $array['category'][5]['detail'][10045]['champs'] = 'Contrepartie';$array['category'][5]['detail'][10045]['name'] = 'Contrepartie (Etape 2 Timeline Valorisation)';$array['category'][5]['detail'][10045]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-0-contrepartie' ;
  5930.         $array['category'][5]['detail'][10046]['champs'] = 'Garantie bancaire';$array['category'][5]['detail'][10046]['name'] = 'Garantie bancaire (Etape 2 Timeline Valorisation)';$array['category'][5]['detail'][10046]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-2-fileGarantieBancaireEtap25Multiple' ;
  5931.         $array['category'][5]['detail'][10047]['champs'] = 'Demande de raccordement';$array['category'][5]['detail'][10047]['name'] = 'Demande de raccordement (Etape 2 Timeline Valorisation)';$array['category'][5]['detail'][10047]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-2-fileDemandeRaccordementEtap25Multiple' ;
  5932.         $array['category'][5]['detail'][10048]['champs'] = 'Mail d’ENEDIS de confirmation';$array['category'][5]['detail'][10048]['name'] = 'Mail d’ENEDIS de confirmation (Etape 2 Timeline Valorisation)';$array['category'][5]['detail'][10048]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-2-fileMailEnedisConfirmationEtap25Multiple' ;
  5933.         $array['category'][5]['detail'][10049]['champs'] = 'Contrat d’achat signé';$array['category'][5]['detail'][10049]['name'] = 'Contrat d’achat signé (Etape 3 Timeline Valorisation)';$array['category'][5]['detail'][10049]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-3-etap26Champs-fileContratAchatSigneEtap25Multiple-1' ;
  5934.         $array['category'][5]['detail'][10050]['champs'] = 'Attestation de producteur';$array['category'][5]['detail'][10050]['name'] = 'Attestation de producteur (Etape 3 Timeline Valorisation)';$array['category'][5]['detail'][10050]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-3-etap26Champs-fileAttestionProducteurEtap25Multiple-1' ;
  5935.         $array['category'][5]['detail'][10051]['champs'] = 'Attestation de l’installateur';$array['category'][5]['detail'][10051]['name'] = 'Attestation de l’installateur (Etape 3 Timeline Valorisation)';$array['category'][5]['detail'][10051]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-3-etap26Champs-fileAttestionInstallateurEtap25Multiple-1' ;
  5936.         $array['category'][5]['detail'][10052]['champs'] = 'AR Contrat d’achat';$array['category'][5]['detail'][10052]['name'] = 'AR Contrat d’achat (Etape 3 Timeline Valorisation)';$array['category'][5]['detail'][10052]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-3-etap26Champs-fileArContratAchatEtap25Multiple-1' ;
  5937.         $array['category'][5]['detail'][10053]['champs'] = 'Tarif Fit Contrat d’Achat';$array['category'][5]['detail'][10053]['name'] = 'Tarif Fit Contrat d’Achat (Etape 3 Timeline Valorisation)';$array['category'][5]['detail'][10053]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-3-etap26Champs-tarifContratAchat1-3' ;
  5938.         $array['category'][5]['detail'][10054]['champs'] = 'Périodicité de la facturation';$array['category'][5]['detail'][10054]['name'] = 'Périodicité de la facturation (Etape 3 Timeline Valorisation)';$array['category'][5]['detail'][10054]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-3-etap26Champs-peridiciteFacturation1-3' ;
  5939.         $array['category'][5]['detail'][10055]['champs'] = 'Numéro de contrat d’achat';$array['category'][5]['detail'][10055]['name'] = 'Numéro de contrat d’achat (Etape 3 Timeline Valorisation)';$array['category'][5]['detail'][10055]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-3-etap26Champs-numeroContratAchat1-3' ;
  5940.         $array['category'][5]['detail'][10056]['champs'] = 'Type de contrat';$array['category'][5]['detail'][10056]['name'] = 'Type de contrat (Etape 3 Timeline Valorisation)';$array['category'][5]['detail'][10056]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-3-etap26Champs-typeContrat1-3' ;
  5941.         $array['category'][5]['detail'][10057]['champs'] = 'Agrégateur';$array['category'][5]['detail'][10057]['name'] = 'Agrégateur (Etape 3 Timeline Valorisation)';$array['category'][5]['detail'][10057]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-3-etap26Champs-agregateurEtap25-3' ;
  5942.         $array['category'][5]['detail'][10058]['champs'] = 'Contrepartie';$array['category'][5]['detail'][10058]['name'] = 'Contrepartie (Etape 3 Timeline Valorisation)';$array['category'][5]['detail'][10058]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-3-etap26Champs-contrepartieEtap25-3' ;
  5943.         $array['category'][5]['detail'][10059]['champs'] = 'Date de début de contrat d’achat';$array['category'][5]['detail'][10059]['name'] = 'Date de début de contrat d’achat (Etape 3 Timeline Valorisation)';$array['category'][5]['detail'][10059]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-3-etap26Champs-dateDebutContratAchat1-2' ;
  5944.         $array['category'][5]['detail'][10060]['champs'] = 'Date de fin de contrat d’achat';$array['category'][5]['detail'][10060]['name'] = 'Date de fin de contrat d’achat (Etape 3 Timeline Valorisation)';$array['category'][5]['detail'][10060]['value'] = 'projet-'.ParametrageXlsProject::type_row_etap.'-etap-24-etap24Champs-3-etap26Champs-dateFinContratAchat1-2' ;
  5945.         return $array ;
  5946.     }
  5947.     public function verouillerEtaps(){
  5948.         $etaps = $this->em->getRepository(Etaps::class)->findAll();
  5949.         foreach ($etaps as $etap){
  5950.             $etapClass = 'App\\Entity\\Etap' . $etap->getNum();
  5951.             $etapsEntity = $this->em->getRepository($etapClass)->findBy(['status' => Etaps::STATUS_FERMEE]);
  5952.             if($etapsEntity){
  5953.                 foreach ($etapsEntity as $etapEntity){
  5954.                     if ($etapEntity) {
  5955.                         if ($etapEntity->getStatus() == Etaps::STATUS_FERMEE) {
  5956.                             $etapEntity->setStatus(Etaps::STATUS_EN_COURS);
  5957.                             $this->em->persist($etapEntity);
  5958.                         }
  5959.                     }
  5960.                 }
  5961.             }
  5962.             $this->em->flush();
  5963.         }
  5964.     }
  5965.     public function checkEtapStatusColorByDoc($etapEntity){
  5966.         if($etapEntity && $etapEntity->getEtap() && $etapEntity->getEtap()->getCategory() && $etapEntity->getEtap()->getCategory()->getNum() == 5){
  5967.             $docsUploadeCount = 0;
  5968.             $docsCount = 0;
  5969.             if($etapEntity->getEtap()->getNum() == 24){
  5970.                 $etap25Champs = $etapEntity->getEtap24Champs();
  5971.                 if(count($etap25Champs) > 0){
  5972.                     return "#86D687";
  5973.                 }else{
  5974.                     return "red"; // rouge
  5975.                 }
  5976.             }elseif ($etapEntity->getEtap()->getNum() == 25){
  5977.                 $etap25Champs = $etapEntity->getEtap24Champs();
  5978.                 if(count($etap25Champs) > 0){
  5979.                     foreach ($etap25Champs as $champ){
  5980.                         $typeValorisation = $champ->getTypeValorisation() ? $champ->getTypeValorisation()->getCategory() : null;
  5981.                         if($typeValorisation == TypeValorisation::type_guichet_ouvert){
  5982.                             $fileCount = $this->checkDocNotArchive($champ->getFileDemandeRaccordementEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  5983.                             $fileCount = $this->checkDocNotArchive($champ->getFileMailEnedisConfirmationEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  5984.                         }elseif ($typeValorisation == TypeValorisation::type_ao_cre){
  5985.                             $fileCount = $this->checkDocNotArchive($champ->getFileGarantieBancaireEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  5986.                             $fileCount = $this->checkDocNotArchive($champ->getFileRecepisseDemandeAoMultiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  5987.                             $fileCount = $this->checkDocNotArchive($champ->getFileLettreLaureaMultiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  5988.                         }elseif ($typeValorisation == TypeValorisation::type_acc || $typeValorisation == TypeValorisation::type_aci || $typeValorisation == TypeValorisation::type_ppa){
  5989.                         }elseif ($typeValorisation == TypeValorisation::type_spot){
  5990.                         }
  5991.                     }
  5992.                 }
  5993.             } elseif ($etapEntity->getEtap()->getNum() == 26){
  5994.                 $etap24Champs = $etapEntity->getEtap24Champs();
  5995.                 if(count($etap24Champs) > 0){
  5996.                     foreach ($etap24Champs as $etap24Champ){
  5997.                         foreach ($etap24Champ->getEtap26Champs() as $champ){
  5998.                             $typeValorisation = $etap24Champ->getTypeValorisation() ? $etap24Champ->getTypeValorisation()->getCategory() : null;
  5999.                             if($typeValorisation == TypeValorisation::type_guichet_ouvert or $typeValorisation == TypeValorisation::type_ao_cre){
  6000.                                 $fileCount = $this->checkDocNotArchive($champ->getFileContratAchatSigneEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  6001.                                 $fileCount = $this->checkDocNotArchive($champ->getFileAttestionProducteurEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  6002.                                 $fileCount = $this->checkDocNotArchive($champ->getFileAttestionInstallateurEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  6003.                                 $fileCount = $this->checkDocNotArchive($champ->getFileArContratAchatEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  6004.                             }elseif ($typeValorisation == TypeValorisation::type_acc || $typeValorisation == TypeValorisation::type_aci || $typeValorisation == TypeValorisation::type_ppa || $typeValorisation == TypeValorisation::type_fer){
  6005.                                 $fileCount = $this->checkDocNotArchive($champ->getFileContratAchatSigneEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  6006.                             }elseif ($typeValorisation == TypeValorisation::type_spot){
  6007.                                 $fileCount = $this->checkDocNotArchive($champ->getFileContratAchatSigneEtap25Multiple())? 1 : 0 ; $docsUploadeCount = $docsUploadeCount + $fileCount ;$docsCount = $docsCount + 1;
  6008.                             }
  6009.                         }
  6010.                     }
  6011.                 }
  6012.             }
  6013.             if($docsUploadeCount == 0){
  6014.                 return "red"; // rouge
  6015.             }elseif ($docsUploadeCount == $docsCount){
  6016.                 return "#86D687"; // vert
  6017.             }else{
  6018.                 return "#ff9f43"; // orange
  6019.             }
  6020.         }else{
  6021.             if($etapEntity) {
  6022.                 $etapEntityClass = 'App\\Entity\\Etap' . $etapEntity->getEtap()->getNum();
  6023.                 $classMetadata = $this->em->getClassMetadata($etapEntityClass);
  6024.                 $data = $this->getNbrDocUploadByEtap($etapEntity, $classMetadata);
  6025.                 $docsUploadeCount = $data['docsUploadeCount'];
  6026.                 $docsCount = $data['docsCount'];
  6027.                 if ($docsUploadeCount == 0) {
  6028.                     return "red"; // rouge
  6029.                 } elseif ($docsUploadeCount == $docsCount) {
  6030.                     return "#86D687"; // vert
  6031.                 } else {
  6032.                     return "#ff9f43"; // orange
  6033.                 }
  6034.             }else{
  6035.                 return "red"; // rouge 
  6036.             }
  6037.         }
  6038.     }
  6039.     public function checkEtapStatusColorByDocEtap4Construction($project){
  6040.         $docsUploadeCountGlobal = 0;
  6041.         $docsCountGlobal = 0;
  6042.         $etap171 = $this->em->getRepository(Etap171::class)->findOneBy(['project'=>$project->getId()]);
  6043.         $etap172 = $this->em->getRepository(Etap172::class)->findOneBy(['project'=>$project->getId()]);
  6044.         $etap173 = $this->em->getRepository(Etap173::class)->findOneBy(['project'=>$project->getId()]);
  6045.         $etap174 = $this->em->getRepository(Etap174::class)->findOneBy(['project'=>$project->getId()]);
  6046.         $etap175 = $this->em->getRepository(Etap175::class)->findOneBy(['project'=>$project->getId()]);
  6047.         $etapEntityClass = 'App\\Entity\\Etap' . $etap171->getEtap()->getNum();
  6048.         $classMetadata171 = $this->em->getClassMetadata($etapEntityClass);
  6049.         $data = $this->getNbrDocUploadByEtap($etap171,$classMetadata171);
  6050.         $docsUploadeCountGlobal += $data['docsUploadeCount'] ;
  6051.         $docsCountGlobal +=$data['docsCount'] ;
  6052.         $etapEntityClass = 'App\\Entity\\Etap' . $etap172->getEtap()->getNum();
  6053.         $classMetadata172 = $this->em->getClassMetadata($etapEntityClass);
  6054.         $data = $this->getNbrDocUploadByEtap($etap172,$classMetadata172);
  6055.         $docsUploadeCountGlobal += $data['docsUploadeCount'] ;
  6056.         $docsCountGlobal +=$data['docsCount'] ;
  6057.         $etapEntityClass = 'App\\Entity\\Etap' . $etap173->getEtap()->getNum();
  6058.         $classMetadata173 = $this->em->getClassMetadata($etapEntityClass);
  6059.         $data = $this->getNbrDocUploadByEtap($etap173,$classMetadata173);
  6060.         $docsUploadeCountGlobal += $data['docsUploadeCount'] ;
  6061.         $docsCountGlobal +=$data['docsCount'] ;
  6062.         $etapEntityClass = 'App\\Entity\\Etap' . $etap174->getEtap()->getNum();
  6063.         $classMetadata174 = $this->em->getClassMetadata($etapEntityClass);
  6064.         $data = $this->getNbrDocUploadByEtap($etap174,$classMetadata174);
  6065.         $docsUploadeCountGlobal += $data['docsUploadeCount'] ;
  6066.         $docsCountGlobal +=$data['docsCount'] ;
  6067.         $etapEntityClass = 'App\\Entity\\Etap' . $etap175->getEtap()->getNum();
  6068.         $classMetadata175 = $this->em->getClassMetadata($etapEntityClass);
  6069.         $data = $this->getNbrDocUploadByEtap($etap175,$classMetadata175);
  6070.         $docsUploadeCountGlobal += $data['docsUploadeCount'] ;
  6071.         $docsCountGlobal +=$data['docsCount'] ;
  6072.         if($docsUploadeCountGlobal == 0){
  6073.             return "red"; // rouge
  6074.         }elseif ($docsUploadeCountGlobal == $docsCountGlobal){
  6075.             return "#86D687"; // vert
  6076.         }else{
  6077.             return "#ff9f43"; // orange
  6078.         }
  6079.     }
  6080.     public function checkEtapStatusColorByDocEtap3Construction($project){
  6081.         $docsUploadeCount = 0;
  6082.         $docsCount = 0;
  6083.         $etap16 = $this->em->getRepository(Etap16::class)->findOneBy(['project'=>$project->getId()]);
  6084.         $contratConstruction = $etap16->getContratConstruction();
  6085.         foreach ($contratConstruction as $item){
  6086.             $etapEntityClass = 'App\\Entity\\ContratConstruction' ;
  6087.             $classMetadata = $this->em->getClassMetadata($etapEntityClass);
  6088.             $data = $this->getNbrDocUploadByEtapDetail($item,$classMetadata);
  6089.             $docsUploadeCount += $data['docsUploadeCount'] ;
  6090.             $docsCount +=$data['docsCount'] ;
  6091.         }
  6092.         if($docsUploadeCount == 0){
  6093.             return "red"; // rouge
  6094.         }elseif ($docsUploadeCount == $docsCount){
  6095.             return "#86D687"; // vert
  6096.         }else{
  6097.             return "#ff9f43"; // orange
  6098.         }
  6099.     }
  6100.     public function copyFileDoeToEtap201(){
  6101.         $date = new \DateTime('2023-11-15');
  6102.         $does = $this->em->getRepository(Etap14::class)->findDoeEtap14ByDate($date);
  6103.         foreach ($does as $doe){
  6104.             $etap201 = $this->em->getRepository(Etap201::class)->findOneBy(['project'=>$doe['id']]);
  6105.             if($etap201){
  6106.                 $doeDoc = $this->em->getRepository(DocUpload::class)->find($doe['idDoc']);
  6107.                 $docUpload = new DocUpload();
  6108.                 $docUpload->setName($doeDoc->getName());
  6109.                 $docUpload->setCreatedAt($doeDoc->getCreatedAt());
  6110.                 $docUpload->setUserCreated($doeDoc->getUserCreated());
  6111.                 $docUpload->setTitreDoc($doeDoc->getTitreDoc());
  6112.                 $fileNameCopy = $doe['id'].'-'.time().$doeDoc->getPath();
  6113.                 $file = $this->params->get('uploads_directory') . '/' . $doeDoc->getPath();
  6114.                 $fileCopy = $this->params->get('uploads_directory'). '/' . $fileNameCopy;
  6115.                 copy($file , $fileCopy);
  6116.                 $docUpload->setPath($fileNameCopy);
  6117.                 $this->em->persist($docUpload);
  6118.                 $this->em->flush();
  6119.                 $etap201->addFileDoeEtap201Multiple($docUpload);
  6120.                 $this->em->persist($etap201);
  6121.                 $this->em->flush();
  6122.                 $this->getNomenclature($etap201,$docUpload,'DOE');
  6123.             }
  6124.         }
  6125.     }
  6126.     public function getProjectsActive(){
  6127.         $projects = $this->em->getRepository(Project::class)->findAllProjectActive();
  6128.         return $projects;
  6129.     }
  6130.     public function updateStatusUrbanisme($project){
  6131.         $str = '';
  6132.         $etap0 = $this->em->getRepository(Etap0::class)->findOneBy(['project'=>$project->getId()]);
  6133.         $etap1 = $this->em->getRepository(Etap1::class)->findOneBy(['project'=>$project->getId()]);
  6134.         $etap2 = $this->em->getRepository(Etap2::class)->findOneBy(['project'=>$project->getId()]);
  6135.         $etap3 = $this->em->getRepository(Etap3::class)->findOneBy(['project'=>$project->getId()]);
  6136.         $etap4 = $this->em->getRepository(Etap4::class)->findOneBy(['project'=>$project->getId()]);
  6137.         $etap16 = $this->em->getRepository(Etap16::class)->findOneBy(['project'=>$project->getId()]);
  6138.         $etap174 = $this->em->getRepository(Etap174::class)->findOneBy(['project'=>$project->getId()]);
  6139.         $etap171 = $this->em->getRepository(Etap171::class)->findOneBy(['project'=>$project->getId()]);
  6140.         $date1PassageHuissierModif2mois = null;
  6141.         if($etap2){
  6142.             $date1PassageHuissier = $etap2->getDate1PassageHuissier();
  6143.             if($date1PassageHuissier){
  6144.                 $date1PassageHuissierModif =  new \DateTime($date1PassageHuissier->format('d-m-Y'));
  6145.                 $date1PassageHuissierModif2mois =  $date1PassageHuissierModif->modify('+2 months');
  6146.             }
  6147.         }
  6148.         if($etap4 && $this->checkDocNotArchive($etap4->getFileDaactMultiple())) {
  6149.             $str = 'DAACT OK';
  6150.         }elseif($etap174 && ($etap174->getDateFinPosePv() && ($etap174->getDateFinPosePv() <= new \DateTime('now')))){
  6151.             if($etap4 && $etap4->getDateDaact()) {
  6152.                 $str = 'DAACT signée à recup. ('.$etap4->getDateDaact()->format('d/m').')';
  6153.             }else{
  6154.                 $str = 'DAACT à déposer';
  6155.             }
  6156.         }elseif(($project->getTypologieProject() && ($project->getTypologieProject()->getId() == 2)) &&  (($etap16 && count($etap16->getContratConstruction()) > 0 && $this->checkDocNotArchive($etap16->getContratConstruction()[0]->getFileContratEpcMultiple())) || ($etap171 && $etap171->getDateRealisationPlateforme()))  ){
  6157.             if(($etap171 && $this->checkDocNotArchive($etap171->getFileDocEtap171Multiple())) || ($etap3 && $this->checkDocNotArchive($etap3->getFileDocDrocMultiple()))){
  6158.                 $str = 'DOC OK';
  6159.             }elseif ($etap4 && $etap4->getDateDaact()){
  6160.                 $str = 'DAACT signée à recup. ('.$etap4->getDateDaact()->format('d/m').')';
  6161.             }else{
  6162.                 $str = 'DAACT à déposer';
  6163.             }
  6164.         }elseif ($etap2 && $this->checkDocNotArchive($etap2->getFileCertificatNonRecoursMultiple()) && $this->checkDocNotArchive($etap2->getFileCertificatNonRetraitMultiple())){
  6165.             $str = 'ANR OK';
  6166.         }elseif ($etap2 && $this->checkDocNotArchive($etap2->getFilePVPassageHuissierMultiple())){
  6167.             if ($etap2 && $this->checkDocNotArchive($etap2->getFileCertificatNonRecoursMultiple())){
  6168.                 $str = 'Certif. non-retrait à récup.';
  6169.             }else{
  6170.                 if ($etap2 && $this->checkDocNotArchive($etap2->getFileCertificatNonRetraitMultiple())){
  6171.                     $str = 'Certif. non-recours à récup.';
  6172.                 }else{
  6173.                     $str = 'ANR à demander';
  6174.                 }
  6175.             }
  6176.         }elseif ($etap2 && ($date1PassageHuissierModif2mois && $date1PassageHuissierModif2mois < new \DateTime('now'))){
  6177.             $str = 'PVA à récup. ('.$date1PassageHuissierModif2mois->format('d/m').')';
  6178.         }elseif ($etap2 && $etap2->getDate1PassageHuissier() ){
  6179.             $str = 'Att.PVA ('.$date1PassageHuissierModif2mois->format('d/m').')';
  6180.         }elseif ($etap1 && $this->checkDocNotArchive($etap1->getFileArretePcDpMultiple()) ){
  6181.             $str = 'Huissier NOK';
  6182.         }elseif ($project->getTypologieProject() && ($project->getTypologieProject()->getId() == 1)){
  6183.             if($etap1 && $etap1->getDateDepotComplement()){
  6184.                 $dateDepotComplementModifModif =  new \DateTime($etap1->getDateDepotComplement()->format('d-m-Y'));
  6185.                 $delaiInstruction = $etap1->getDelaiInstruction()? (int)$etap1->getDelaiInstruction() : 3 ;
  6186.                 $dateDepotComplementModifPlus =  $dateDepotComplementModifModif->modify('+'.$delaiInstruction.' months');
  6187.                 $str = 'DP comp. en instruction -> '.$dateDepotComplementModifPlus->format('d/m');
  6188.             }elseif($etap1 && $etap1->getDateDemandeComplement()){
  6189.                 $str = 'Dem. Pièces comp. ('.$etap1->getDateDemandeComplement()->format('d/m').')';
  6190.             }elseif($etap1 && $etap1->getDateDepotPc() && $this->checkDocNotArchive($etap1->getFileRecepisseDepotPcMultiple())){
  6191. //                $dateDepotModif =  new \DateTime($etap1->getDateDepotPc()->format('d-m-Y'));
  6192. //                $dateDepotModifPlus =  $dateDepotModif->modify('+42 days');
  6193. //                if($dateDepotModifPlus < new \DateTime('now')){
  6194. //                    $dateDepotModif2 =  new \DateTime($etap1->getDateDepotPc()->format('d-m-Y'));
  6195. //                    $delaiInstruction = $etap1->getDelaiInstruction()? (int)$etap1->getDelaiInstruction() : 3 ;
  6196. //                    $dateDepotModif2Plus =  $dateDepotModif2->modify('+'.$delaiInstruction.' months');
  6197. //                    $str = 'DP en instruction -> '.$dateDepotModif2Plus->format('d/m');
  6198. //                }else{
  6199. //                    $dateDepotModif2 =  new \DateTime($etap1->getDateDepotPc()->format('d-m-Y'));
  6200. //                    $dateDepotModif2Plus =  $dateDepotModif2->modify('+1 months');
  6201. //                    $str = 'DP déposée - check comp. -> '.$dateDepotModif2Plus->format('d/m');
  6202. //                }
  6203.                 if($etap1->getIsNotDateDemandeComplement()){
  6204.                     $dateDepotModif2 =  new \DateTime($etap1->getDateDepotPc()->format('d-m-Y'));
  6205.                     $delaiInstruction = $etap1->getDelaiInstruction()? (int)$etap1->getDelaiInstruction() : 3 ;
  6206.                     $dateDepotModif2Plus =  $dateDepotModif2->modify('+'.$delaiInstruction.' months');
  6207.                     $str = 'DP en instruction -> '.$dateDepotModif2Plus->format('d/m');
  6208.                 }else{
  6209.                     $dateDepotModif2 =  new \DateTime($etap1->getDateDepotPc()->format('d-m-Y'));
  6210.                     $dateDepotModif2Plus =  $dateDepotModif2->modify('+1 months');
  6211.                     $str = 'DP déposée - check comp. -> '.$dateDepotModif2Plus->format('d/m');
  6212.                 }
  6213.             }elseif($etap1 && $etap1->getDateDepotPc()){
  6214.                 $str = 'DP déposée - récup. récépissé';
  6215.             }elseif($etap1 && $this->checkDocNotArchive($etap1->getFileDossierPcDpMultiple())){
  6216.                 $str = 'DP à déposer';
  6217.             }else{
  6218.                 $str = 'DP à faire';
  6219.             }
  6220.         }else{
  6221.             if($project->getTypologieProject() && ($project->getTypologieProject()->getId() == 2)){
  6222.                 if($etap1 && count($etap1->getEtap1Pcm()) > 0){
  6223.                     $pcm = $etap1->getEtap1Pcm()[0];
  6224.                     if($pcm && $pcm->getDateDepotComplement()){
  6225.                         $dateDepotComplementPcmModif =  new \DateTime($pcm->getDateDepotComplement()->format('d-m-Y'));
  6226.                         $delaiInstruction = $pcm->getDelaiInstruction()? (int)$pcm->getDelaiInstruction() : 3 ;
  6227.                         $dateDepotComplementPcmModifPlus =  $dateDepotComplementPcmModif->modify('+'.$delaiInstruction.' months');
  6228.                         $str = 'PCM comp. en instruction -> '.$dateDepotComplementPcmModifPlus->format('d/m');
  6229.                     }elseif ($pcm && $pcm->getDateDemandeComplement()){
  6230.                         $str = 'Dem. Pièces comp. PCM ('.$pcm->getDateDemandeComplement()->format('d/m').')';
  6231.                     }elseif($pcm && $pcm->getDateDepotPCM() && $this->checkDocNotArchive($pcm->getFileRecepisseDepotPcmMultiple())){
  6232. //                        $dateDepotPCMModif =  new \DateTime($pcm->getDateDepotPCM()->format('d-m-Y'));
  6233. //                        $dateDepotPCMModifPlus =  $dateDepotPCMModif->modify('+42 days');
  6234. //                        if($dateDepotPCMModifPlus < new \DateTime('now')){
  6235. //                            $dateDepotPCMModif2 =  new \DateTime($pcm->getDateDepotPCM()->format('d-m-Y'));
  6236. //                            $delaiInstruction = $pcm->getDelaiInstruction()? (int)$pcm->getDelaiInstruction() : 3 ;
  6237. //                            $dateDepotPCMModif2Plus =  $dateDepotPCMModif2->modify('+'.$delaiInstruction.' months');
  6238. //                            $str = 'PCM en instruction -> '.$dateDepotPCMModif2Plus->format('d/m');
  6239. //                        }else{
  6240. //                            $dateDepotPCMModif2 =  new \DateTime($pcm->getDateDepotPCM()->format('d-m-Y'));
  6241. //                            $dateDepotPCMModif2Plus =  $dateDepotPCMModif2->modify('+1 months');
  6242. //                            $str = 'PCM déposée - check comp. -> '.$dateDepotPCMModif2Plus->format('d/m');
  6243. //                        }
  6244.                         if($pcm->getIsNotDateDemandeComplementPcm()){
  6245.                             $dateDepotPCMModif2 =  new \DateTime($pcm->getDateDepotPCM()->format('d-m-Y'));
  6246.                             $delaiInstruction = $pcm->getDelaiInstruction()? (int)$pcm->getDelaiInstruction() : 3 ;
  6247.                             $dateDepotPCMModif2Plus =  $dateDepotPCMModif2->modify('+'.$delaiInstruction.' months');
  6248.                             $str = 'PCM en instruction -> '.$dateDepotPCMModif2Plus->format('d/m');
  6249.                         }else{
  6250.                             $dateDepotPCMModif2 =  new \DateTime($pcm->getDateDepotPCM()->format('d-m-Y'));
  6251.                             $dateDepotPCMModif2Plus =  $dateDepotPCMModif2->modify('+1 months');
  6252.                             $str = 'PCM déposée - check comp. -> '.$dateDepotPCMModif2Plus->format('d/m');
  6253.                         }
  6254.                     }elseif($pcm && $pcm->getDateDepotPCM()){
  6255.                         $str = 'PCM déposée - récup. récépissé';
  6256.                     }elseif($pcm && $this->checkDocNotArchive($pcm->getFileDossierPcmpMultiple())){
  6257.                         $str = 'PCM à déposer';
  6258.                     }else{
  6259.                         $str = 'PCM à faire';
  6260.                     }
  6261.                 }else{
  6262.                     if($etap1 && $etap1->getDateDepotComplement()){
  6263.                         $dateDepotComplementModifModif =  new \DateTime($etap1->getDateDepotComplement()->format('d-m-Y'));
  6264.                         $delaiInstruction = $etap1->getDelaiInstruction()? (int)$etap1->getDelaiInstruction() : 3 ;
  6265.                         $dateDepotComplementModifPlus =  $dateDepotComplementModifModif->modify('+'.$delaiInstruction.' months');
  6266.                         $str = 'PC comp. en instruction -> '.$dateDepotComplementModifPlus->format('d/m');
  6267.                     }elseif($etap1 && $etap1->getDateDemandeComplement()){
  6268.                         $str = 'Dem. Pièces comp. ('.$etap1->getDateDemandeComplement()->format('d/m').')';
  6269.                     }elseif($etap1 && $etap1->getDateDepotPc() && $this->checkDocNotArchive($etap1->getFileRecepisseDepotPcMultiple())){
  6270. //                        $dateDepotModif =  new \DateTime($etap1->getDateDepotPc()->format('d-m-Y'));
  6271. //                        $dateDepotModifPlus =  $dateDepotModif->modify('+42 days');
  6272. //                        if($dateDepotModifPlus < new \DateTime('now')){
  6273. //                            $dateDepotModif2 =  new \DateTime($etap1->getDateDepotPc()->format('d-m-Y'));
  6274. //                            $delaiInstruction = $etap1->getDelaiInstruction()? (int)$etap1->getDelaiInstruction() : 3 ;
  6275. //                            $dateDepotModif2Plus =  $dateDepotModif2->modify('+'.$delaiInstruction.' months');
  6276. //                            $str = 'PC en instruction -> '.$dateDepotModif2Plus->format('d/m');
  6277. //                        }else{
  6278. //                            $dateDepotModif2 =  new \DateTime($etap1->getDateDepotPc()->format('d-m-Y'));
  6279. //                            $dateDepotModif2Plus =  $dateDepotModif2->modify('+1 months');
  6280. //                            $str = 'PC déposé - check comp. -> '.$dateDepotModif2Plus->format('d/m');
  6281. //                        }
  6282.                         if($etap1->getIsNotDateDemandeComplement()){
  6283.                             $dateDepotModif2 =  new \DateTime($etap1->getDateDepotPc()->format('d-m-Y'));
  6284.                             $delaiInstruction = $etap1->getDelaiInstruction()? (int)$etap1->getDelaiInstruction() : 3 ;
  6285.                             $dateDepotModif2Plus =  $dateDepotModif2->modify('+'.$delaiInstruction.' months');
  6286.                             $str = 'PC en instruction -> '.$dateDepotModif2Plus->format('d/m');
  6287.                         }else{
  6288.                             $dateDepotModif2 =  new \DateTime($etap1->getDateDepotPc()->format('d-m-Y'));
  6289.                             $dateDepotModif2Plus =  $dateDepotModif2->modify('+1 months');
  6290.                             $str = 'PC déposé - check comp. -> '.$dateDepotModif2Plus->format('d/m');
  6291.                         }
  6292.                     }elseif($etap1 && $etap1->getDateDepotPc()){
  6293.                         $str = 'PC déposé - récup. récépissé';
  6294.                     }elseif($etap1 && $this->checkDocNotArchive($etap1->getFileDossierPcDpMultiple())){
  6295.                         $str = 'PC à déposer';
  6296.                     }else{
  6297.                         $str = 'PC à faire';
  6298.                     }
  6299.                 }
  6300.             }else{
  6301.                 $str = '';
  6302.             }
  6303.         }
  6304.         $statusOld = $this->em->getRepository(StatusUrbanisme::class)->findOneBy(['project'=>$project->getId()]);
  6305.         if($statusOld){
  6306.             if($statusOld && $statusOld->getStatusStr() == $str){
  6307.             }else{
  6308.                 $statusOld->setStatusStr($str);
  6309.                 $statusOld->setUpdatedAt(new \DateTime());
  6310.                 $statusOld->setProject($project);
  6311.                 $this->em->persist($statusOld);
  6312.                 $this->em->flush();
  6313.             }
  6314.             return $statusOld;
  6315.         }else{
  6316.             $status = new StatusUrbanisme();
  6317.             $status->setStatusStr($str);
  6318.             $status->setUpdatedAt(new \DateTime());
  6319.             $status->setProject($project);
  6320.             $this->em->persist($status);
  6321.             $this->em->flush();
  6322.             return $status;
  6323.         }
  6324.     }
  6325.     public function updateStatusFoncier($project){
  6326.         $str1 = '';
  6327.         $str2 = '';
  6328.         $str3 = '';
  6329.         $etap1 = $this->em->getRepository(Etap1::class)->findOneBy(['project'=>$project->getId()]);
  6330.         $etap6 = $this->em->getRepository(Etap6::class)->findOneBy(['project'=>$project->getId()]);
  6331.         $etap7 = $this->em->getRepository(Etap7::class)->findOneBy(['project'=>$project->getId()]);
  6332.         $etap601 = $this->em->getRepository(Etap601::class)->findOneBy(['project'=>$project->getId()]);
  6333.         $etap602 = $this->em->getRepository(Etap602::class)->findOneBy(['project'=>$project->getId()]);
  6334.         // status 1
  6335.         if($etap6 && $etap6->getSituationFonciere() == 'NOK' ){
  6336.             $str1 = 'Foncier NOK';
  6337.         }elseif($etap6 && $etap6->getStatutMainlevee() && $etap6->getStatutMainlevee() != 'n.a.' && $etap6->getStatutMainlevee() != 'ML OK'){
  6338.             $str1 = $etap6->getStatutMainlevee();
  6339.         }else{
  6340.             $str1 = '';
  6341.         }
  6342.         // status 2
  6343.         if($etap7 && $this->checkDocNotArchive($etap7->getFileBailSigneMultiple())) {
  6344.             $str2 = '';
  6345.             $str1 = '';
  6346.         }else{
  6347.             if($etap601 && $this->checkDocNotArchive($etap601->getFileEtatDecriptifMultiple())) {
  6348.                 if($project->getTypologieProject() && $project->getTypologieProject()->getId() == 1){
  6349.                     $str2 = 'EDDV OK';
  6350.                 }elseif($project->getTypologieProject() && $project->getTypologieProject()->getId() == 2){
  6351.                     $str2 = 'DA OK';
  6352.                 }else{
  6353.                     $str2 = '';
  6354.                 }
  6355.             }elseif ($etap601 && $etap601->getDateIntervention()){
  6356.                 if($project->getTypologieProject() && $project->getTypologieProject()->getId() == 1){
  6357.                     $str2 = 'Att. EDDV (interv. '.$etap601->getDateIntervention()->format('d/m').' )';
  6358.                 }elseif($project->getTypologieProject() && $project->getTypologieProject()->getId() == 2){
  6359.                     $str2 = 'Att. DA (interv. '.$etap601->getDateIntervention()->format('d/m').' )';
  6360.                 }else{
  6361.                     $str2 = '';
  6362.                 }
  6363.             }elseif ($etap601 && $etap601->getDateLancement()){
  6364.                 if($project->getTypologieProject() && $project->getTypologieProject()->getId() == 1){
  6365.                     $str2 = 'Att. EDDV ('.$etap601->getDateLancement()->format('d/m').')';
  6366.                 }elseif($project->getTypologieProject() && $project->getTypologieProject()->getId() == 2){
  6367.                     $str2 = 'Att. DA ('.$etap601->getDateLancement()->format('d/m').')';
  6368.                 }else{
  6369.                     $str2 = '';
  6370.                 }
  6371.             }elseif ($etap601 && $etap601->getFournisseur()){
  6372.                 if($project->getTypologieProject() && $project->getTypologieProject()->getId() == 1){
  6373.                     $str2 = 'Att. EDDV';
  6374.                 }elseif($project->getTypologieProject() && $project->getTypologieProject()->getId() == 2){
  6375.                     $str2 = 'Att. DA';
  6376.                 }else{
  6377.                     $str2 = '';
  6378.                 }
  6379.             }else{
  6380.                 if(($etap1 && $etap1->getDateArretePcDp() ) || ($etap1 && $etap1->getDateArretePcDpMixte())){
  6381.                     $str2 = 'Géom. NOK';
  6382.                 }else{
  6383.                     $str2 = '';
  6384.                 }
  6385.             }
  6386.         }
  6387.         // status 3
  6388.         if($etap7 && $this->checkDocNotArchive($etap7->getFileBailSigneMultiple())) {
  6389.             $str3 = 'Bail signé';
  6390.         }elseif ($etap602 && $etap602->getDateSignatureProcuration()){
  6391.             $str3 = 'Procs signées ('.$etap602->getDateSignatureProcuration()->format('d/m').')';
  6392.         }elseif ($etap602 && $etap602->getDateEnvoiPocuration()){
  6393.             $str3 = 'Procs envoyées ('.$etap602->getDateEnvoiPocuration()->format('d/m').')';
  6394.         }elseif ($etap602 && $etap602->getFournisseur()){
  6395.             $str3 = 'Bail EC';
  6396.         }else{
  6397.             $str3 = 'Notaire NOK';
  6398.         }
  6399.         $statusOld = $this->em->getRepository(StatusFoncier::class)->findOneBy(['project'=>$project->getId()]);
  6400.         $str = '';
  6401.         if($str1 == ''){
  6402.             $str = $str1." ";
  6403.         }else{
  6404.             $str = $str1." | ";
  6405.         }
  6406.         if($str2 == ''){
  6407.             $str = $str.$str2." ".$str3;
  6408.         }else{
  6409.             $str =  $str.$str2." | ".$str3;
  6410.         }
  6411.         if($statusOld){
  6412.             if($statusOld && $statusOld->getStatusStr() == $str){
  6413.             }else {
  6414.                 $statusOld->setStatusStr($str);
  6415.                 $statusOld->setStatusStr1($str1);
  6416.                 $statusOld->setStatusStr2($str2);
  6417.                 $statusOld->setStatusStr3($str3);
  6418.                 $statusOld->setUpdatedAt(new \DateTime());
  6419.                 $statusOld->setProject($project);
  6420.                 $this->em->persist($statusOld);
  6421.                 $this->em->flush();
  6422.             }
  6423.             return $statusOld;
  6424.         }else{
  6425.             $status = new StatusFoncier();
  6426.             $status->setStatusStr($str);
  6427.             $status->setStatusStr1($str1);
  6428.             $status->setStatusStr2($str2);
  6429.             $status->setStatusStr3($str3);
  6430.             $status->setUpdatedAt(new \DateTime());
  6431.             $status->setProject($project);
  6432.             $this->em->persist($status);
  6433.             $this->em->flush();
  6434.             return $status;
  6435.         }
  6436.     }
  6437.     public function updateStatusRaccordement($project){
  6438.         $statusOld = $this->em->getRepository(StatusRaccordement::class)->findOneBy(['project'=>$project->getId()]);
  6439.         $str = '';
  6440.         if($statusOld){
  6441.             if($statusOld && $statusOld->getStatusStr() == $str){
  6442.             }else {
  6443.                 $statusOld->setStatusStr($str);
  6444.                 $statusOld->setUpdatedAt(new \DateTime());
  6445.                 $statusOld->setProject($project);
  6446.                 $this->em->persist($statusOld);
  6447.                 $this->em->flush();
  6448.             }
  6449.             return $statusOld;
  6450.         }else{
  6451.             $status = new StatusRaccordement();
  6452.             $status->setStatusStr($str);
  6453.             $status->setUpdatedAt(new \DateTime());
  6454.             $status->setProject($project);
  6455.             $this->em->persist($status);
  6456.             $this->em->flush();
  6457.             return $status;
  6458.         }
  6459.     }
  6460.     public function updateStatusConstruction($project){
  6461.         $statusOld = $this->em->getRepository(StatusConsruction::class)->findOneBy(['project'=>$project->getId()]);
  6462.         $str = '';
  6463.         if($statusOld){
  6464.             if($statusOld && $statusOld->getStatusStr() == $str){
  6465.             }else {
  6466.                 $statusOld->setStatusStr($str);
  6467.                 $statusOld->setUpdatedAt(new \DateTime());
  6468.                 $statusOld->setProject($project);
  6469.                 $this->em->persist($statusOld);
  6470.                 $this->em->flush();
  6471.             }
  6472.             return $statusOld;
  6473.         }else{
  6474.             $status = new StatusConsruction();
  6475.             $status->setStatusStr($str);
  6476.             $status->setUpdatedAt(new \DateTime());
  6477.             $status->setProject($project);
  6478.             $this->em->persist($status);
  6479.             $this->em->flush();
  6480.             return $status;
  6481.         }
  6482.     }
  6483.     public function removeUpdateManuelStatus($status){
  6484.         if($status){
  6485.             $status->setIsModif(false);
  6486.             $this->em->persist($status);
  6487.             $this->em->flush();
  6488.         }
  6489.     }
  6490.     public function getStatusDetailStr($project,$cat){
  6491.         if($cat == 1){
  6492.             $status = $this->em->getRepository(StatusUrbanisme::class)->findOneBy(['project'=>$project->getId()]);
  6493.         }elseif ($cat == 2){
  6494.             $status = $this->em->getRepository(StatusFoncier::class)->findOneBy(['project'=>$project->getId()]);
  6495.         }elseif ($cat == 3){
  6496.             $status = $this->em->getRepository(StatusRaccordement::class)->findOneBy(['project'=>$project->getId()]);
  6497.         }elseif ($cat == 4){
  6498.             $status = $this->em->getRepository(StatusConsruction::class)->findOneBy(['project'=>$project->getId()]);
  6499.         }else{
  6500.             $status = null;
  6501.         }
  6502.         if($status){
  6503.             if($status->getIsModif()){
  6504.                 return $status->getStatusStrModif();
  6505.             }else{
  6506.                 return $status->getStatusStr();
  6507.             }
  6508.         }else{
  6509.             return '';
  6510.         }
  6511.     }
  6512.     public function updateStatusDetailStrManuel($project,$cat,$str){
  6513.         if($cat == 1){
  6514.             $status = $this->em->getRepository(StatusUrbanisme::class)->findOneBy(['project'=>$project->getId()]);
  6515.         }elseif ($cat == 2){
  6516.             $status = $this->em->getRepository(StatusFoncier::class)->findOneBy(['project'=>$project->getId()]);
  6517.         }elseif ($cat == 3){
  6518.             $status = $this->em->getRepository(StatusRaccordement::class)->findOneBy(['project'=>$project->getId()]);
  6519.         }elseif ($cat == 4){
  6520.             $status = $this->em->getRepository(StatusConsruction::class)->findOneBy(['project'=>$project->getId()]);
  6521.         }else{
  6522.             $status = null;
  6523.         }
  6524.         if($status){
  6525.             $status->setStatusStrModif($str);
  6526.             $status->setIsModif(true);
  6527.             $this->em->persist($status);
  6528.             $this->em->flush();
  6529.         }else{
  6530.             if($cat == 3 || $cat == 4){
  6531.                 if($cat == 3){
  6532.                     $status = new StatusRaccordement();
  6533.                 }elseif ($cat == 4){
  6534.                     $status = new StatusConsruction();
  6535.                 }
  6536.                 $status->setProject($project);
  6537.                 $status->setStatusStrModif($str);
  6538.                 $status->setIsModif(true);
  6539.                 $this->em->persist($status);
  6540.                 $this->em->flush();
  6541.             }
  6542.         }
  6543.     }
  6544.     public function updateCodeProject(){
  6545.         $fileName = 'Codes projets.xlsx';
  6546.         $filePath =  $this->params->get('images_directory'). '/' . $fileName;
  6547.         if (!file_exists($filePath)) {
  6548.             throw new \Exception("Le fichier n'existe pas : " . $filePath);
  6549.         }
  6550.         $spreadsheet = IOFactory::load($filePath);
  6551.         $worksheet = $spreadsheet->getActiveSheet();
  6552.         $data = [];
  6553.         $i = 1;
  6554.         foreach ($worksheet->getRowIterator() as $row) {
  6555.             $rowData = [];
  6556.             if($i > 2){
  6557.                 foreach ($row->getCellIterator() as $cell) {
  6558.                     if($cell->getColumn() == 'A'){
  6559.                         $rowData[] = $cell->getValue();
  6560.                     }
  6561.                     if($cell->getColumn() == 'E'){
  6562.                         $rowData[] = $cell->getOldCalculatedValue();
  6563.                     }
  6564.                     if($cell->getColumn() == 'D'){
  6565.                         $rowData[] = $cell->getValue();
  6566.                     }
  6567.                 }
  6568.                 if($rowData && isset($rowData[0]) && isset($rowData[1])){
  6569.                     $data[$rowData[0]]['num'] = $rowData[1];
  6570.                     $data[$rowData[0]]['code'] = $rowData[2];
  6571.                 }
  6572.             }
  6573.             $i++;
  6574.         }
  6575.         $projects = $this->em->getRepository(Project::class)->findAll();
  6576.         foreach ($projects as $project){
  6577.             $name = $project->getName();
  6578.             if(isset($data[$name])){
  6579.                 $project->setIsImportCode(true);
  6580.                 $project->setCodeProject($data[$name]['code']);
  6581.                 $project->setCompteurErpiNbr((int)$data[$name]['num']);
  6582.                 $project->setCompteurErpiAnnee($project->getCreatedAt()->format('y'));
  6583.                 $this->em->persist($project);
  6584.             }
  6585.         }
  6586.         $this->em->flush();
  6587.         $worksheet2 = $spreadsheet->setActiveSheetIndex(1);
  6588.         $data = [];
  6589.         $i = 1;
  6590.         foreach ($worksheet2->getRowIterator() as $row) {
  6591.             $rowData = [];
  6592.             if($i > 5){
  6593.                 foreach ($row->getCellIterator() as $cell) {
  6594.                     if($cell->getColumn() == 'B'){
  6595.                         $rowData[] = $cell->getValue();
  6596.                     }
  6597.                     if($cell->getColumn() == 'C'){
  6598.                         $rowData[] = $cell->getValue();
  6599.                     }
  6600.                 }
  6601.                 if($rowData && isset($rowData[0]) && isset($rowData[1])){
  6602.                     $data[$rowData[0]]['name'] = $rowData[0];
  6603.                     $data[$rowData[0]]['code'] = $rowData[1];
  6604.                 }
  6605.             }
  6606.             $i++;
  6607.         }
  6608.         $devs = $this->em->getRepository(User::class)->getUserByRole('ROLE_DEV');
  6609.         foreach ($devs as $dev){
  6610.             $name = $dev->getFirstName().' '.$dev->getLastname();
  6611.             if(isset($data[$name])){
  6612.                 $dev->setCodeDev($data[$name]['code']);
  6613.                 $this->em->persist($dev);
  6614.             }
  6615.         }
  6616.         $this->em->flush();
  6617.         $this->setAllCodeProject();
  6618.     }
  6619.     public function setCodeProject($project){
  6620.         if(!$project->getIsImportCode()){
  6621.             if($project && $project->getDeveloppeur() && $project->getChoixDev() != Project::dev_intern){
  6622.                 if($project->getDeveloppeur()->getCodeDev()){
  6623.                     $devCode = $project->getDeveloppeur()->getCodeDev();
  6624.                 }else{
  6625.                     $devCode = strtoupper(substr($project->getDeveloppeur()->getFirstname(), 0, 3));
  6626.                 }
  6627.                 $annee = $project->getCreatedAt()->format('y');
  6628.                 if(!$project->getCodeProject()){
  6629.                     $compteurErpi= $this->em->getRepository(Project::class)->findCodeProjectByYearAndDev($annee,$project->getDeveloppeur()->getId());
  6630.                     $compteurNbr = 1;
  6631.                     if($compteurErpi){
  6632.                         $compteurNbr = $compteurErpi->getCompteurErpiNbr() ? $compteurErpi->getCompteurErpiNbr() + 1 : 1;
  6633.                     }
  6634.                     $codeGenerate = $annee.''.$devCode.''.$this->generateCodeCompteurErpi($compteurNbr);
  6635.                     $project->setCodeProject($codeGenerate);
  6636.                     $project->setCompteurErpiNbr($compteurNbr);
  6637.                     $project->setCompteurErpiAnnee($annee);
  6638.                     $this->em->persist($project);
  6639.                     $this->em->flush();
  6640.                 }else{
  6641.                     $pos =  strpos($project->getCodeProject(),$devCode) ;
  6642.                     if ($pos === false) {
  6643.                         $codeGenerate = $annee.''.$devCode.''.$this->generateCodeCompteurErpi($project->getCompteurErpiNbr());
  6644.                         $project->setCodeProject($codeGenerate);
  6645.                         $this->em->persist($project);
  6646.                         $this->em->flush();
  6647.                     }
  6648.                 }
  6649.             }
  6650.         }
  6651.     }
  6652.     function generateCodeCompteurErpi($number) {
  6653.         $numberFormatted = str_pad($number, 4, '0', STR_PAD_LEFT);
  6654.         return $numberFormatted;
  6655.     }
  6656.     public function setAllCodeProject(){
  6657.         $projects = $this->em->getRepository(Project::class)->findAll();
  6658.         foreach ($projects as $project){
  6659.             $this->setCodeProject($project);
  6660.         }
  6661.     }
  6662.     public function addAlertEtap1AndEtap2($project) : void
  6663.     {
  6664.         $dateNow = new \DateTime();
  6665.         $dateCreationProject = $project->getCreatedAt();
  6666.         if($dateCreationProject){
  6667.             $dateCreationProject->modify('+6 month');
  6668.         }
  6669.         $alert = false;
  6670.         if( $dateNow >= $dateCreationProject ) {
  6671.             $etap1 = $this->em->getRepository(Etap1::class)->findOneBy(['project' => $project->getId()]);
  6672.             $etap2 = $this->em->getRepository(Etap2::class)->findOneBy(['project' => $project->getId()]);
  6673.             if ($etap1 && $etap2) {
  6674.                 $color = $this->checkEtapStatusColorByDoc($etap1);
  6675.                 $color2 = $this->checkEtapStatusColorByDoc($etap2);
  6676.                 if (($color == '#86D687' or $color == '#ff9f43') and ($color2 == '#86D687' or $color2 == '#ff9f43')) {
  6677.                     $alert =  false;
  6678.                 } else {
  6679.                     $alert =  true;
  6680.                 }
  6681.             }
  6682.         }
  6683.         $alertEntity = $this->em->getRepository(Alert::class)->findOneBy(['project'=>$project->getId(),'typeAlert'=>Alert::ALERT_Etap1And2]);
  6684.         if($alertEntity){
  6685.             if($alert){
  6686.                 $alertEntity->setIsArchived(false);
  6687.             }else{
  6688.                 $alertEntity->setIsArchived(true);
  6689.             }
  6690.             $this->em->persist($alertEntity);
  6691.             $this->em->flush();
  6692.         }
  6693.         else{
  6694.             $alertEntity = new Alert();
  6695.             $alertEntity->setDateLimit($dateCreationProject);
  6696.             $alertEntity->setProject($project);
  6697.             $alertEntity->setTypeAlert(Alert::ALERT_Etap1And2);
  6698.             if($alert){
  6699.                 $alertEntity->setIsArchived(false);
  6700.             }else{
  6701.                 $alertEntity->setIsArchived(true);
  6702.             }
  6703.             $this->em->persist($alertEntity);
  6704.             $this->em->flush();
  6705.         }
  6706.     }
  6707.     public function addAlertsEtap1AndEtap2(){
  6708.         $projects = $this->em->getRepository(Project::class)->findAllProjectActive();
  6709.         if($projects){
  6710.             foreach ($projects as $project){
  6711.                 $this->addAlertEtap1AndEtap2($project);
  6712.             }
  6713.         }
  6714.     }
  6715.     public function getAlertsEtap1AndEtap2($project){
  6716.         $dateNow = new \DateTime();
  6717.         $dateCreationProject = $project->getCreatedAt();
  6718.         if($dateCreationProject){
  6719.             $dateCreationProject->modify('+6 month');
  6720.         }
  6721.         $alert = false;
  6722.         if(  $dateNow >= $dateCreationProject ) {
  6723.             $etap1 = $this->em->getRepository(Etap1::class)->findOneBy(['project' => $project->getId()]);
  6724.             $etap2 = $this->em->getRepository(Etap2::class)->findOneBy(['project' => $project->getId()]);
  6725.             if ($etap1 && $etap2) {
  6726.                 $color = $this->checkEtapStatusColorByDoc($etap1);
  6727.                 $color2 = $this->checkEtapStatusColorByDoc($etap2);
  6728.                 if (($color == '#86D687' or $color == '#ff9f43') and ($color2 == '#86D687' or $color2 == '#ff9f43')) {
  6729.                     $alert =  false;
  6730.                 } else {
  6731.                     $alert =  true;
  6732.                 }
  6733.             }
  6734.         }
  6735.         $str = false;
  6736.         if($alert){
  6737.             $str = 'il n’y a pas d\'avancement de l\'étape 1 à l\'étape 2 de timeline urbanisme ';
  6738.         }
  6739.         return $str;
  6740.     }
  6741.     public function sendMailMESprevisionnelle($date){
  6742.         $etaps14 = $this->em->getRepository(Etap14::class)->findByDateMESprevisionnelle($date);
  6743.         if($etaps14){
  6744.             $userCourant = $this->security->getUser();
  6745.             foreach ($etaps14 as $etap){
  6746.                 if(!$etap->getProject()->getIsNotifDateMESPrevisionnelle()) {
  6747.                     $isNotif = $this->notification->notifProjectDateMESPrevisionnelle($etap,$userCourant);
  6748.                     if ($isNotif) {
  6749.                         $etap->getProject()->setIsNotifDateMESPrevisionnelle(true);
  6750.                         $this->em->persist($etap->getProject());
  6751.                         $this->em->flush();
  6752.                     }
  6753.                 }
  6754.             }
  6755.         }
  6756.     }
  6757.     public function changeDev4($date){
  6758.         $etaps173 = $this->em->getRepository(Etap173::class)->getDateCahrpentier($date);
  6759.         if($etaps173){
  6760.             foreach ($etaps173 as $etap173){
  6761.                 if ($etap173 && is_object($etap173->getDateDebutCharpente())  && ($date >= $etap173->getDateDebutCharpente()) ){
  6762.                     $this->updateStatusTracker($etap173->getProject());
  6763.                 }
  6764.             }
  6765.         }
  6766.     }
  6767.     public function updateStatusTrackerConstruction($project){
  6768.         if($project){
  6769.             $isGoConsultation = false;
  6770.             $isAttenteDevis = false;
  6771.             $isArbitrageDevis = false;
  6772.             $isBudgetCapex = false;
  6773.             $isContratConstruction = false;
  6774.             $isConstructionDemarree = false;
  6775.             $isConstructionAcheveeNonRaccordable = false;
  6776.             $isConstructionAcheveeARaccorder = false;
  6777.             $isConstructionAcheveeRaccordee = false;
  6778.             $isPassagedre = false;
  6779.             $isConsuelobtenu = false;
  6780.             $isOperating = false;
  6781.             $isBillable = false;
  6782.             $isInvoiced = false;
  6783.             $isOrderDemarrageEnvoye = false;
  6784.             if($project->getStadeConstruction() == 'Go consultation'){
  6785.                 $isGoConsultation = true;
  6786.             }
  6787.             if($project->getStadeConstruction() == 'Attente devis' or $project->getStadeConstruction() == 'Devis reçus' or $project->getStadeConstruction() == 'Attente validation budget/Capex' ){
  6788.                 $isAttenteDevis = true;
  6789.             }
  6790.             if($project->getStadeConstruction() == 'Arbitrage Devis'){
  6791.                 $isArbitrageDevis = true;
  6792.             }
  6793.             if($project->getStadeConstruction() == 'Devis signé' or$project->getStadeConstruction() == 'Budget/Capex validé' or $project->getStadeConstruction() == 'Contrat de construction signé' or $project->getStadeConstruction() == 'Ordre de démarrage envoyé' or $project->getStadeConstruction() == 'Travaux réceptionnés'){
  6794.                 $isBudgetCapex = true;
  6795.             }
  6796.             $etap16 = $this->em->getRepository(Etap16::class)->findOneBy(['project'=>$project->getId()]);
  6797.             if(count($etap16->getContratConstruction()) > 0){
  6798.                 foreach ($etap16->getContratConstruction() as $item){
  6799.                     if(count($item->getFileContratEpcMultiple())>0){
  6800.                         foreach ($item->getFileContratEpcMultiple() as $value){
  6801.                             if(!$value->getIsArchived()){
  6802.                                 $isContratConstruction = true;
  6803.                             }
  6804.                         }
  6805.                     }
  6806.                 }
  6807.             }
  6808.             $dateJour = new \DateTime();
  6809.             $dateNow1 = new \DateTime($dateJour->format('Y-m-d').' 23:59:59');
  6810.             $etap172 = $this->em->getRepository(Etap172::class)->findOneBy(['project'=>$project->getId()]);
  6811.             $etap173 = $this->em->getRepository(Etap173::class)->findOneBy(['project'=>$project->getId()]);
  6812.             $etap174 = $this->em->getRepository(Etap174::class)->findOneBy(['project'=>$project->getId()]);
  6813.             $etap175 = $this->em->getRepository(Etap175::class)->findOneBy(['project'=>$project->getId()]);
  6814.             $etap121 = $this->em->getRepository(Etap121::class)->findOneBy(['project'=>$project->getId()]);
  6815.             if($etap172 && $etap172->getDateDebutFondation() && ($etap172->getDateDebutFondation() <= $dateNow1) ){
  6816.                 $isConstructionDemarree = true;
  6817.             }
  6818.             if($etap173 && $etap173->getDateDebutCharpente() && ($etap173->getDateDebutCharpente() <= $dateNow1) ){
  6819.                 $isConstructionDemarree = true;
  6820.             }
  6821.             if($etap173 && $etap173->getDateDebutCouverture() && ($etap173->getDateDebutCouverture() <= $dateNow1) ){
  6822.                 $isConstructionDemarree = true;
  6823.             }
  6824.             if($etap174 && $etap174->getDateDebutPosePv() && ($etap174->getDateDebutPosePv() <= $dateNow1) ){
  6825.                 $isConstructionDemarree = true;
  6826.             }
  6827.             if($etap174 && $etap174->getDateFinPosePv() && ($etap174->getDateFinPosePv() <= $dateNow1)){
  6828.                 if($etap175 && !$etap175->getDateAchevementTraveaux()){
  6829.                     if($etap121 && !$etap121->getDateInstallationPDL()){
  6830.                         $isConstructionAcheveeNonRaccordable = true;
  6831.                     }
  6832.                     if($etap121 && (!$etap121->getDatePrevisionnelleInstallationPDL() || ($etap121->getDatePrevisionnelleInstallationPDL() < $dateNow1))){
  6833.                         $isConstructionAcheveeNonRaccordable = true;
  6834.                     }
  6835.                     if($etap121 && !$etap121->getDateMiseSousTensionEnedis()){
  6836.                         $isConstructionAcheveeNonRaccordable = true;
  6837.                     }
  6838.                 }
  6839.             }
  6840.             if($etap174 && $etap174->getDateFinPosePv() && ($etap174->getDateFinPosePv() <= $dateNow1)){
  6841.                 if($etap175 && !$etap175->getDateAchevementTraveaux()){
  6842.                     if($etap121 && $etap121->getDateInstallationPDL() && $etap121->getDateInstallationPDL() <= $dateNow1){
  6843.                         $isConstructionAcheveeARaccorder = true;
  6844.                     }
  6845.                     if($etap121 && $etap121->getDatePrevisionnelleInstallationPDL()  && $etap121->getDatePrevisionnelleInstallationPDL() <= $dateNow1){
  6846.                         $isConstructionAcheveeARaccorder = true;
  6847.                     }
  6848.                     if($etap121 && $etap121->getDateMiseSousTensionEnedis()  && $etap121->getDateMiseSousTensionEnedis() <= $dateNow1){
  6849.                         $isConstructionAcheveeARaccorder = true;
  6850.                     }
  6851.                 }
  6852.             }
  6853.             $etap175 = $this->em->getRepository(Etap175::class)->findOneBy(['project'=>$project->getId()]);
  6854.             if($etap175 && $etap175->getDateAchevementTraveaux()){
  6855.                 $isConstructionAcheveeRaccordee = true;
  6856.             }
  6857.             $etap13 = $this->em->getRepository(Etap13::class)->findOneBy(['project'=>$project->getId()]);
  6858.             $etap20 = $this->em->getRepository(Etap20::class)->findOneBy(['project'=>$project->getId()]);
  6859.             if($etap13 || $etap20){
  6860.                 if($this->checkArchiveFile($project, Etaps::ETAP_13, 'getFileDREMultiple')){
  6861.                     $isPassagedre = true;
  6862.                 }
  6863.                 if($etap13->getDateConsuel() or $this->checkArchiveFile($project, Etaps::ETAP_13, 'getFileConsuelMultiple')){
  6864.                     $isConsuelobtenu = true;
  6865.                 }
  6866.                 if($etap20->getDateConsuelEtap20() or $this->checkArchiveFile($project, Etaps::ETAP_20, 'getFileConsuelEtap20Multiple')){
  6867.                     $isConsuelobtenu = true;
  6868.                 }
  6869.             }
  6870.             if($project->getDateMiseEnService()){
  6871.                 $isOperating = true;
  6872.             }
  6873.             $etap14 = $this->em->getRepository(Etap14::class)->findOneBy(['project'=>$project->getId()]);
  6874.             if($etap13 || $etap14){
  6875.                 if((int)$project->getCapacite() > 100 && ($this->checkArchiveFile($project, Etaps::ETAP_13, 'getFileAttestationBureauControleMultiple') or $this->checkArchiveFile($project, Etaps::ETAP_14, 'getFileAttestationS21Multiple'))){
  6876.                     $isBillable = true;
  6877.                 }
  6878.             }
  6879. //            $etap15 = $this->em->getRepository(Etap15::class)->findOneBy(['project'=>$project->getId()]);
  6880. //            if($etap15 && $this->checkArchiveFile($project, Etaps::ETAP_15, 'getFileContratAchatSigneMultiple')){
  6881. //                $isInvoiced = true;
  6882. //            }
  6883.             $etap24 = $this->em->getRepository(Etap24::class)->findOneBy(['project'=>$project->getId()]);
  6884.             if($etap24 && count($etap24->getEtap24Champs()) > 0){
  6885.                 $notEmpty = false  ;
  6886.                 foreach ($etap24->getEtap24Champs() as $champ){
  6887.                     if(count($champ->getEtap26Champs()) > 0){
  6888.                         foreach ($champ->getEtap26Champs() as $champ26){
  6889.                             if(count($champ26->getFileContratAchatSigneEtap25Multiple()) > 0){
  6890.                                 foreach ($champ26->getFileContratAchatSigneEtap25Multiple() as $doc){
  6891.                                     if(!$doc->getIsArchived()){
  6892.                                         $notEmpty = true  ;
  6893.                                     }
  6894.                                 }
  6895.                             }
  6896.                         }
  6897.                     }
  6898.                 }
  6899.                 if($notEmpty){
  6900.                     $isInvoiced = true;
  6901.                 }
  6902.             }
  6903.             $etap171 = $this->em->getRepository(Etap171::class)->findOneBy(['project'=>$project->getId()]);
  6904.             if($etap171 && $this->checkArchiveFile($project, Etaps::ETAP_171, 'getFileOrderServiceMultiple')){
  6905.                 $isOrderDemarrageEnvoye = true;
  6906.             }
  6907.             $status = 0;
  6908.             if($isInvoiced){
  6909.                 $status = StatusTrackerConstruction::Invoiced;
  6910.             }elseif ($isBillable) {
  6911.                 $status = StatusTrackerConstruction::Billable;
  6912.             }elseif ($isOperating) {
  6913.                 $status = StatusTrackerConstruction::Operating;
  6914.             }elseif ($isConsuelobtenu) {
  6915.                 $status = StatusTrackerConstruction::Consuel_obtenu;
  6916.             }elseif ($isPassagedre) {
  6917.                 $status = StatusTrackerConstruction::Passage_dre;
  6918.             }elseif ($isConstructionAcheveeRaccordee) {
  6919.                 $status = StatusTrackerConstruction::Construction_Achevee_Raccordee;
  6920.             }elseif ($isConstructionAcheveeARaccorder) {
  6921.                 $status = StatusTrackerConstruction::Construction_Achevee_A_Raccorder;
  6922.             }elseif ($isConstructionAcheveeNonRaccordable) {
  6923.                 $status = StatusTrackerConstruction::Construction_Achevee_Non_Raccordable;
  6924.             }elseif ($isConstructionDemarree) {
  6925.                 $status = StatusTrackerConstruction::Construction_Demarree;
  6926.             }elseif ($isOrderDemarrageEnvoye) {
  6927.                 $status = StatusTrackerConstruction::Order_demarrage_envoye;
  6928.             }elseif ($isContratConstruction) {
  6929.                 $status = StatusTrackerConstruction::Contrat_Construction;
  6930.             }elseif ($isBudgetCapex) {
  6931.                 $status = StatusTrackerConstruction::Budget_Capex;
  6932.             }elseif ($isArbitrageDevis) {
  6933.                 $status = StatusTrackerConstruction::Arbitrage_Devis;
  6934.             }elseif ($isAttenteDevis) {
  6935.                 $status = StatusTrackerConstruction::Attente_Devis;
  6936.             }elseif ($isGoConsultation) {
  6937.                 $status = StatusTrackerConstruction::Go_Consultation;
  6938.             }
  6939.             $statusTracker = $project->getStatusTrackerActuel();
  6940.             if($statusTracker == StatusTracker::STATUS_dev_4){
  6941.                 if(in_array($status ,[StatusTrackerConstruction::Construction_Achevee_Non_Raccordable,StatusTrackerConstruction::Construction_Achevee_A_Raccorder,StatusTrackerConstruction::Construction_Achevee_Raccordee,StatusTrackerConstruction::Passage_dre])){
  6942.                 }else{
  6943.                     $status = StatusTrackerConstruction::Construction_Demarree;
  6944.                 }
  6945.             }elseif ($statusTracker == StatusTracker::STATUS_dev_5){
  6946. //                if(in_array($status ,[StatusTrackerConstruction::Construction_Achevee_Non_Raccordable,StatusTrackerConstruction::Construction_Achevee_A_Raccorder,StatusTrackerConstruction::Construction_Achevee_Raccordee,StatusTrackerConstruction::Passage_dre])){
  6947. //
  6948. //                }else{
  6949. //                    $status = StatusTrackerConstruction::Construction_Achevee_Non_Raccordable;
  6950. //                }
  6951.             }
  6952.             elseif ($statusTracker == StatusTracker::STATUS_dev_6){
  6953.                 $status = StatusTrackerConstruction::Consuel_obtenu;
  6954.             }
  6955.             elseif ($statusTracker == StatusTracker::STATUS_operating){
  6956.                 if(in_array($status ,[StatusTrackerConstruction::Operating,StatusTrackerConstruction::Billable,StatusTrackerConstruction::Invoiced])){
  6957.                 }else{
  6958.                     $status = StatusTrackerConstruction::Operating;
  6959.                 }
  6960.             }
  6961.             $statusTrackerProjectConstruction = $this->em->getRepository(StatusTrackerConstruction::class)->findOneBy(['project'=>$project->getId()],['createdAt'=>'desc']);
  6962.             if($statusTrackerProjectConstruction){
  6963.                 if($statusTrackerProjectConstruction->getStatus() != $status){
  6964.                     $entity = new StatusTrackerConstruction();
  6965.                     $entity->setProject($project);
  6966.                     $entity->setStatus($status);
  6967.                     $this->em->persist($entity);
  6968.                     $project->setStatusTrackerActuelConstruction($status);
  6969.                     $this->em->persist($project);
  6970.                     $this->em->flush();
  6971.                 }
  6972.             }else{
  6973.                 $entity = new StatusTrackerConstruction();
  6974.                 $entity->setProject($project);
  6975.                 $entity->setStatus($status);
  6976.                 $this->em->persist($entity);
  6977.                 $project->setStatusTrackerActuelConstruction($status);
  6978.                 $this->em->persist($project);
  6979.                 $this->em->flush();
  6980.             }
  6981.         }
  6982.     }
  6983.     private function checkArchiveFile($project,$numEtap,$attribute){
  6984.         $class = 'App\Entity\Etap'.$numEtap;
  6985.         $etap = $this->em->getRepository($class)->findOneBy(['project'=>$project->getId()]);
  6986.         $docs = $etap->{$attribute}();
  6987.         if($docs && count($docs) > 0){
  6988.             $empty =false;
  6989.             foreach ($docs as $doc){
  6990.                 if(!$doc->getIsArchived()){
  6991.                     $empty = true  ;
  6992.                 }
  6993.             }
  6994.             if($empty){
  6995.                 return true;
  6996.             }else{
  6997.                 return false;
  6998.             }
  6999.         }else{
  7000.             return false;
  7001.         }
  7002.     }
  7003.     public function addEtap71()
  7004.     {
  7005.         $projects = $this->em->getRepository(Project::class)->findAll();
  7006.         foreach ($projects as $project){
  7007.             $etap71 = $this->em->getRepository(Etap71::class)->findOneBy(['project'=>$project->getId()]);
  7008.             $etap = $this->em->getRepository(Etaps::class)->findOneBy(['num'=>Etaps::ETAP_71]);
  7009.             if(!$etap71){
  7010.                 $etap71 = new Etap71();
  7011.                 $etap71->setProject($project);
  7012.                 $etap71->setEtap($etap);
  7013.                 $etap71->setStatus(Etaps::STATUS_EN_COURS);
  7014.                 $this->em->persist($etap71);
  7015.                 $this->em->flush();
  7016.             }
  7017.         }
  7018.     }
  7019.     public function addEtap50()
  7020.     {
  7021.         $projects = $this->em->getRepository(Project::class)->findAll();
  7022.         foreach ($projects as $project){
  7023.             $etap50 = $this->em->getRepository(Etap50::class)->findOneBy(['project'=>$project->getId()]);
  7024.             $etap = $this->em->getRepository(Etaps::class)->findOneBy(['num'=>Etaps::ETAP_50]);
  7025.             if(!$etap50){
  7026.                 $etap50 = new Etap50();
  7027.                 $etap50->setProject($project);
  7028.                 $etap50->setEtap($etap);
  7029.                 $etap50->setStatus(Etaps::STATUS_EN_COURS);
  7030.                 $this->em->persist($etap50);
  7031.                 $this->em->flush();
  7032.             }
  7033.         }
  7034.     }
  7035.     public function migrateImageProject()
  7036.     {
  7037.         $projects = $this->em->getRepository(Project::class)->findAll();
  7038.         foreach ($projects as $project){
  7039.             if($project->getImageProject()){
  7040.                 $project->addImagesProject($project->getImageProject());
  7041.                 $this->em->persist($project);
  7042.                 $this->em->flush();
  7043.             }
  7044.         }
  7045.     }
  7046.     public function addCategoryValorisation()
  7047.     {
  7048.         $typeValorisations = $this->em->getRepository(TypeValorisation::class)->findAll();
  7049.         if(!$typeValorisations){
  7050.             $typeValorisation = new TypeValorisation();$typeValorisation->setName('Guichet ouvert');$typeValorisation->setCategory(TypeValorisation::type_guichet_ouvert);$this->em->persist($typeValorisation);
  7051.             $typeValorisation = new TypeValorisation();$typeValorisation->setName('AO CRE');$typeValorisation->setCategory(TypeValorisation::type_ao_cre);$this->em->persist($typeValorisation);
  7052.             $typeValorisation = new TypeValorisation();$typeValorisation->setName('ACC');$typeValorisation->setCategory(TypeValorisation::type_acc);$this->em->persist($typeValorisation);
  7053.             $typeValorisation = new TypeValorisation();$typeValorisation->setName('ACI');$typeValorisation->setCategory(TypeValorisation::type_aci);$this->em->persist($typeValorisation);
  7054.             $typeValorisation = new TypeValorisation();$typeValorisation->setName('PPA');$typeValorisation->setCategory(TypeValorisation::type_ppa);$this->em->persist($typeValorisation);
  7055.             $typeValorisation = new TypeValorisation();$typeValorisation->setName('Spot');$typeValorisation->setCategory(TypeValorisation::type_spot);$this->em->persist($typeValorisation);
  7056.             $typeValorisation = new TypeValorisation();$typeValorisation->setName('FER');$typeValorisation->setCategory(TypeValorisation::type_fer);$this->em->persist($typeValorisation);
  7057.             $this->em->flush();
  7058.         }
  7059.         $projects = $this->em->getRepository(Project::class)->findAll();
  7060.         $catValorisation = $this->em->getRepository(EtapsCategory::class)->findOneBy(['name'=>'Valorisation']);
  7061.         if(!$catValorisation){
  7062.             $catValorisation = new EtapsCategory();
  7063.             $catValorisation->setName('Valorisation');
  7064.             $catValorisation->setNum(5);
  7065.             $this->em->persist($catValorisation);
  7066.             $this->em->flush();
  7067.         }
  7068.         $catRaccordement = $this->em->getRepository(EtapsCategory::class)->findOneBy(['name'=>'Raccordement']);
  7069.         if(!$catRaccordement){
  7070.             $catRaccordement = new EtapsCategory();
  7071.             $catRaccordement->setName('Raccordement');
  7072.             $catRaccordement->setNum(3);
  7073.             $this->em->persist($catRaccordement);
  7074.             $this->em->flush();
  7075.         }
  7076.         $etapCat24 = $this->em->getRepository(Etaps::class)->findOneBy(['num'=>Etaps::ETAP_24]);
  7077.         if(!$etapCat24){
  7078.             $etapCat24 = new Etaps();
  7079.             $etapCat24->setName('Méthode de valorisation');
  7080.             $etapCat24->setCategory($catValorisation);
  7081.             $etapCat24->setNum(24);
  7082.             $etapCat24->setEtapsNum(1);
  7083.             $etapCat24->setIsDelete(false);
  7084.             $etapCat24->setIsDeleteNewConstruction(false);
  7085.             $etapCat24->setIsNeedCondition(false);
  7086.             $etapCat24->setIsNeedValide(false);
  7087.             $this->em->persist($etapCat24);
  7088.             $this->em->flush();
  7089.         }
  7090.         $etapCat25 = $this->em->getRepository(Etaps::class)->findOneBy(['num'=>Etaps::ETAP_25]);
  7091.         if(!$etapCat25){
  7092.             $etapCat25 = new Etaps();
  7093.             $etapCat25->setName('Avancée de la valorisation');
  7094.             $etapCat25->setCategory($catValorisation);
  7095.             $etapCat25->setNum(25);
  7096.             $etapCat25->setEtapsNum(2);
  7097.             $etapCat25->setIsDelete(false);
  7098.             $etapCat25->setIsDeleteNewConstruction(false);
  7099.             $etapCat25->setIsNeedCondition(false);
  7100.             $etapCat25->setIsNeedValide(false);
  7101.             $this->em->persist($etapCat25);
  7102.             $this->em->flush();
  7103.         }
  7104.         $etapCat26 = $this->em->getRepository(Etaps::class)->findOneBy(['num'=>Etaps::ETAP_26]);
  7105.         if(!$etapCat26){
  7106.             $etapCat26 = new Etaps();
  7107.             $etapCat26->setName('Contrat d’achat');
  7108.             $etapCat26->setCategory($catValorisation);
  7109.             $etapCat26->setNum(26);
  7110.             $etapCat26->setEtapsNum(3);
  7111.             $etapCat26->setIsDelete(false);
  7112.             $etapCat26->setIsDeleteNewConstruction(false);
  7113.             $etapCat26->setIsNeedCondition(false);
  7114.             $etapCat26->setIsNeedValide(false);
  7115.             $this->em->persist($etapCat26);
  7116.             $this->em->flush();
  7117.         }
  7118.         $etapCat80 = $this->em->getRepository(Etaps::class)->findOneBy(['num'=>Etaps::ETAP_80]);
  7119.         if(!$etapCat80){
  7120.             $etapCat80 = new Etaps();
  7121.             $etapCat80->setName('Faisabilité du raccordement');
  7122.             $etapCat80->setCategory($catRaccordement);
  7123.             $etapCat80->setNum(80);
  7124.             $etapCat80->setEtapsNum(0);
  7125.             $etapCat80->setIsDelete(false);
  7126.             $etapCat80->setIsDeleteNewConstruction(false);
  7127.             $etapCat80->setIsNeedCondition(false);
  7128.             $etapCat80->setIsNeedValide(false);
  7129.             $this->em->persist($etapCat80);
  7130.             $this->em->flush();
  7131.         }
  7132.         foreach ($projects as $project){
  7133.             $etap24 = $this->em->getRepository(Etap24::class)->findOneBy(['project'=>$project->getId()]);
  7134.             if(!$etap24){
  7135.                 $etap24 = new Etap24();
  7136.                 $etap24->setProject($project);
  7137.                 $etap24->setEtap($etapCat24);
  7138.                 $etap24->setStatus(Etaps::STATUS_EN_COURS);
  7139.                 $this->em->persist($etap24);
  7140.                 $this->em->flush();
  7141.             }
  7142.             $etap25 = $this->em->getRepository(Etap25::class)->findOneBy(['project'=>$project->getId()]);
  7143.             if(!$etap25){
  7144.                 $etap25 = new Etap25();
  7145.                 $etap25->setProject($project);
  7146.                 $etap25->setEtap($etapCat25);
  7147.                 $etap25->setStatus(Etaps::STATUS_EN_COURS);
  7148.                 $this->em->persist($etap25);
  7149.                 $this->em->flush();
  7150.             }
  7151.             $etap26 = $this->em->getRepository(Etap26::class)->findOneBy(['project'=>$project->getId()]);
  7152.             if(!$etap26 ){
  7153.                 $etap26 = new Etap26();
  7154.                 $etap26->setProject($project);
  7155.                 $etap26->setEtap($etapCat26);
  7156.                 $etap26->setStatus(Etaps::STATUS_EN_COURS);
  7157.                 $this->em->persist($etap26);
  7158.                 $this->em->flush();
  7159.             }
  7160.             // deplacer les champs
  7161.             $etap9 = $this->em->getRepository(Etap9::class)->findOneBy(['project'=>$project->getId()]);
  7162.             if($etap9){
  7163.                 if($etap24 && $etap25 && $etap26){
  7164.                     if(count($etap24->getEtap24Champs()) > 0){
  7165.                     }else{
  7166.                         $etap15 = $this->em->getRepository(Etap15::class)->findOneBy(['project'=>$project->getId()]);
  7167.                         if($etap15) {
  7168.                             if (count($etap15->getInformationMultiple()) > 0) {
  7169.                                 foreach ($etap15->getInformationMultiple() as $contrat) {
  7170.                                     $typeValorisation = $this->em->getRepository(TypeValorisation::class)->findOneBy(['category' => TypeValorisation::type_guichet_ouvert]);
  7171.                                     if($typeValorisation){
  7172.                                         $etap24Cahmps = new Etap24Champs();
  7173.                                         $etap24Cahmps->setEtap24($etap24);
  7174.                                         $etap24Cahmps->setEtap25($etap25);
  7175.                                         $etap24Cahmps->setEtap26($etap26);
  7176.                                         $etap24Cahmps->setTypeValorisation($typeValorisation);
  7177.                                         if($contrat->getTypeContrat()){
  7178.                                             $etap24Cahmps->setSousChoixValorisation($contrat->getTypeContrat());
  7179.                                         }
  7180.                                         if($etap9->getTarifFit()){
  7181.                                             $etap24Cahmps->setTarifFit($etap9->getTarifFit());
  7182.                                         }
  7183.                                         if($etap9->getDateConsignation()){
  7184.                                             $etap24Cahmps->setDateConsignation($etap9->getDateConsignation());
  7185.                                         }
  7186.                                         if($etap9->getDateMaximaleAchevement()){
  7187.                                             $etap24Cahmps->setDateConsignation($etap9->getDateMaximaleAchevement());
  7188.                                         }
  7189.                                         if($etap9->getDateT0()){
  7190.                                             $etap24Cahmps->setDateT0($etap9->getDateT0());
  7191.                                         }
  7192.                                         if(count($etap9->getFileGarantieBancaireMultiple()) > 0){
  7193.                                             foreach ($etap9->getFileGarantieBancaireMultiple() as $value){
  7194.                                                 $etap24Cahmps->addFileGarantieBancaireEtap25Multiple($value);
  7195.                                             }
  7196.                                         }
  7197.                                         if(count($etap9->getFileMailEnedisConfirmationMultiple()) > 0){
  7198.                                             foreach ($etap9->getFileMailEnedisConfirmationMultiple() as $value){
  7199.                                                 $etap24Cahmps->addFileMailEnedisConfirmationEtap25Multiple($value);
  7200.                                             }
  7201.                                         }
  7202.                                         if(count($etap9->getFileDemandeRaccordementMultiple()) > 0){
  7203.                                             foreach ($etap9->getFileDemandeRaccordementMultiple() as $value){
  7204.                                                 $etap24Cahmps->addFileDemandeRaccordementEtap25Multiple($value);
  7205.                                             }
  7206.                                         }
  7207.                                         $this->em->persist($etap24Cahmps);
  7208.                                         $this->em->flush();
  7209.                                         // add contrat
  7210.                                         if($etap24Cahmps){
  7211.                                             $etap26Cahmps = new Etap26Champs();
  7212.                                             $etap26Cahmps->setEtap24Champs($etap24Cahmps);
  7213.                                             if($contrat->getDateDebutContratAchat()){$etap26Cahmps->setDateDebutContratAchat1($contrat->getDateDebutContratAchat());}
  7214.                                             if($contrat->getDateFinContratAchat()){$etap26Cahmps->setDateFinContratAchat1($contrat->getDateFinContratAchat());}
  7215.                                             if($contrat->getNumeroContratAchat()){$etap26Cahmps->setNumeroContratAchat1($contrat->getNumeroContratAchat());}
  7216.                                             if($contrat->getPeridiciteFacturation()){$etap26Cahmps->setPeridiciteFacturation1($contrat->getPeridiciteFacturation());}
  7217.                                             if($contrat->getTarifContratAchat()){$etap26Cahmps->setTarifContratAchat1($contrat->getTarifContratAchat());}
  7218.                                             if($contrat->getTypeContrat()){$etap26Cahmps->setTypeContrat1($contrat->getTypeContrat());}
  7219.                                             if(count($etap15->getFileContratAchatSigneMultiple()) > 0){
  7220.                                                 foreach ($etap15->getFileContratAchatSigneMultiple() as $item){
  7221.                                                     $val = clone $item;
  7222.                                                     $etap26Cahmps->addFileContratAchatSigneEtap25Multiple($val);
  7223.                                                 }
  7224.                                             }
  7225.                                             if(count($etap15->getFileAttestionProducteurMultiple()) > 0){
  7226.                                                 foreach ($etap15->getFileAttestionProducteurMultiple() as $item){
  7227.                                                     $val = clone $item;
  7228.                                                     $etap26Cahmps->addFileAttestionProducteurEtap25Multiple($val);
  7229.                                                 }
  7230.                                             }
  7231.                                             if(count($etap15->getFileAttestionInstallateurMultiple()) > 0){
  7232.                                                 foreach ($etap15->getFileAttestionInstallateurMultiple() as $item){
  7233.                                                     $val = clone $item;
  7234.                                                     $etap26Cahmps->addFileAttestionInstallateurEtap25Multiple($val);
  7235.                                                 }
  7236.                                             }
  7237.                                             if(count($etap15->getFileArContratAchatMultiple()) > 0){
  7238.                                                 foreach ($etap15->getFileArContratAchatMultiple() as $item){
  7239.                                                     $val = clone $item;
  7240.                                                     $etap26Cahmps->addFileArContratAchatEtap25Multiple($val);
  7241.                                                 }
  7242.                                             }
  7243.                                             $this->em->persist($etap26Cahmps);
  7244.                                             $this->em->flush();
  7245.                                         }
  7246.                                     }
  7247.                                 }
  7248.                             }
  7249.                         }
  7250.                     }
  7251.                 }
  7252.             }
  7253.             $etap80 = $this->em->getRepository(Etap80::class)->findOneBy(['project'=>$project->getId()]);
  7254.             if(!$etap80 ){
  7255.                 $etap80 = new Etap80();
  7256.                 $etap80->setProject($project);
  7257.                 $etap80->setEtap($etapCat80);
  7258.                 $etap80->setStatus(Etaps::STATUS_EN_COURS);
  7259.                 $this->em->persist($etap80);
  7260.                 $this->em->flush();
  7261.             }
  7262.         }
  7263.     }
  7264.     public function submitEtap24($request,$user)
  7265.     {
  7266.         $etapToken = $request->get('etapToken');
  7267.         $tokenProject = $request->get('tokenProject');
  7268.         $etap24Champs = $request->get('etap24Champs');
  7269.         if($etapToken and $tokenProject){
  7270.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  7271.             $etap = $this->em->getRepository(Etap24::class)->findOneBy(['token'=>$etapToken]);
  7272.             $etap25 = $this->em->getRepository(Etap25::class)->findOneBy(['project'=>$project->getId()]);
  7273.             $etap26 = $this->em->getRepository(Etap26::class)->findOneBy(['project'=>$project->getId()]);
  7274.             if($project && $etap){
  7275.                 if(!$this->checkUserAction($user,$project,$etap)){
  7276.                     return [
  7277.                         'success' => false
  7278.                     ];
  7279.                 }
  7280.                 if($etap24Champs) {
  7281.                     foreach ($etap24Champs as $item) {
  7282.                         if (isset($item['id']) and $item['id'] != '') {
  7283.                             $etap24ChampsEntity = $this->em->getRepository(Etap24Champs::class)->findOneBy(['token' => $item['id']]);
  7284.                         } else {
  7285.                             $etap24ChampsEntity = new Etap24Champs();
  7286.                         }
  7287.                         if (isset($item['typeValorisation']) and $item['typeValorisation'] != '') {
  7288.                            $typeValorisation = $this->em->getRepository(TypeValorisation::class)->find($item['typeValorisation']);
  7289.                            $etap24ChampsEntity->setTypeValorisation($typeValorisation);
  7290.                         }else{
  7291.                             $etap24ChampsEntity->setTypeValorisation(null);
  7292.                         }
  7293.                         if(isset($item['sousChoixValorisation']) and $item['sousChoixValorisation'] != ''){
  7294.                             $etap24ChampsEntity->setSousChoixValorisation($item['sousChoixValorisation']);
  7295.                         }else{
  7296.                             $etap24ChampsEntity->setSousChoixValorisation(null);
  7297.                         }
  7298.                         if(isset($item['sousChoixValorisationLibre']) and $item['sousChoixValorisationLibre'] != ''){
  7299.                             $etap24ChampsEntity->setSousChoixValorisationLibre($item['sousChoixValorisationLibre']);
  7300.                         }else{
  7301.                             $etap24ChampsEntity->setSousChoixValorisationLibre(null);
  7302.                         }
  7303.                         if(isset($item['dureeContrat']) and $item['dureeContrat'] != ''){
  7304.                             $etap24ChampsEntity->setDureeContrat($item['dureeContrat']);
  7305.                         }else{
  7306.                             $etap24ChampsEntity->setDureeContrat(null);
  7307.                         }
  7308.                         if(isset($item['prixVenteElectricite']) and $item['prixVenteElectricite'] != ''){
  7309.                             $etap24ChampsEntity->setPrixVenteElectricite($item['prixVenteElectricite']);
  7310.                         }else{
  7311.                             $etap24ChampsEntity->setPrixVenteElectricite(null);
  7312.                         }
  7313.                         if(isset($item['tauxIndexationTarif']) and $item['tauxIndexationTarif'] != ''){
  7314.                             $etap24ChampsEntity->setTauxIndexationTarif($item['tauxIndexationTarif']);
  7315.                         }else{
  7316.                             $etap24ChampsEntity->setTauxIndexationTarif(null);
  7317.                         }
  7318.                         $etap9 = $this->em->getRepository(Etap9::class)->findOneBy(['project'=>$project->getId()]);
  7319.                         if(count($etap9->getFileMailEnedisConfirmationMultiple()) > 0) {
  7320.                             foreach ($etap9->getFileMailEnedisConfirmationMultiple() as $itemEtap9Doc){
  7321.                                 if($etap24ChampsEntity->getTypeValorisation() && ($etap24ChampsEntity->getTypeValorisation()->getCategory() == TypeValorisation::type_ao_cre or $etap24ChampsEntity->getTypeValorisation()->getCategory() == TypeValorisation::type_guichet_ouvert)){
  7322.                                     $etap24ChampsEntity->addFileMailEnedisConfirmationEtap25Multiple($itemEtap9Doc);
  7323.                                 }
  7324.                             }
  7325.                         }
  7326.                         if(count($etap9->getFileDemandeRaccordementMultiple()) > 0) {
  7327.                             foreach ($etap9->getFileDemandeRaccordementMultiple() as $itemEtap9Doc){
  7328.                                 if($etap24ChampsEntity->getTypeValorisation() && ($etap24ChampsEntity->getTypeValorisation()->getCategory() == TypeValorisation::type_ao_cre or $etap24ChampsEntity->getTypeValorisation()->getCategory() == TypeValorisation::type_guichet_ouvert)){
  7329.                                     $etap24ChampsEntity->addFileDemandeRaccordementEtap25Multiple($itemEtap9Doc);
  7330.                                 }
  7331.                             }
  7332.                         }
  7333.                         if(count($etap9->getFileGarantieBancaireMultiple()) > 0) {
  7334.                             foreach ($etap9->getFileGarantieBancaireMultiple() as $itemEtap9Doc){
  7335.                                 if($etap24ChampsEntity->getTypeValorisation() && ($etap24ChampsEntity->getTypeValorisation()->getCategory() == TypeValorisation::type_ao_cre )){
  7336.                                     $etap24ChampsEntity->addFileDemandeRaccordementEtap25Multiple($itemEtap9Doc);
  7337.                                 }
  7338.                             }
  7339.                         }
  7340.                         if($etap9->getDateT0()){
  7341.                             $etap24ChampsEntity->setDateT0($etap9->getDateT0());
  7342.                         }
  7343.                         $etap24ChampsEntity->setEtap24($etap);
  7344.                         $etap24ChampsEntity->setEtap25($etap25);
  7345.                         $etap24ChampsEntity->setEtap26($etap26);
  7346.                         $this->em->persist($etap24ChampsEntity);
  7347.                         $this->em->flush();
  7348.                     }
  7349.                 }
  7350.                 $this->em->persist($etap);
  7351.                 $this->em->flush();
  7352.                 $this->updateStatusTracker($project); // set status tracker
  7353.                 $this->flashBag->add(
  7354.                     'success',
  7355.                     'L\'opération a été effectuée avec succès.'
  7356.                 );
  7357.                 return [
  7358.                     'etap' => $etap,
  7359.                     'success' => true
  7360.                 ];
  7361.             }
  7362.         }
  7363.         return [
  7364.             'success' => false
  7365.         ];
  7366.     }
  7367.     public function submitEtap25($request,$user)
  7368.     {
  7369.         $etapToken = $request->get('etapToken');
  7370.         $tokenProject = $request->get('tokenProject');
  7371.         $etap25Champs = $request->get('etap25Champs');
  7372.         if($etapToken and $tokenProject){
  7373.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  7374.             $etap = $this->em->getRepository(Etap25::class)->findOneBy(['token'=>$etapToken]);
  7375.             $etap9 = $this->em->getRepository(Etap9::class)->findOneBy(['project'=>$project->getId()]);
  7376.             if($project && $etap){
  7377.                 if(!$this->checkUserAction($user,$project,$etap)){
  7378.                     return [
  7379.                         'success' => false
  7380.                     ];
  7381.                 }
  7382.                 if($etap25Champs) {
  7383.                     foreach ($etap25Champs as $item) {
  7384.                         if (isset($item['id']) and $item['id'] != '') {
  7385.                             $etap24ChampsEntity = $this->em->getRepository(Etap24Champs::class)->findOneBy(['token' => $item['id']]);
  7386.                         } else {
  7387.                             $etap24ChampsEntity = new Etap24Champs();
  7388.                         }
  7389.                         if(isset($item['fileDemandeRaccordementEtap25Multiple']) and $item['fileDemandeRaccordementEtap25Multiple'] != ''){
  7390.                             $array = explode(',',$item['fileDemandeRaccordementEtap25Multiple']);
  7391.                             foreach ($array as $item1){
  7392.                                 $fileMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  7393.                                 $nomenclature = $this->getNomenclature($etap,$fileMultipleEntity,'Demande de raccordement');
  7394.                                 $etap24ChampsEntity->addFileDemandeRaccordementEtap25Multiple($fileMultipleEntity);
  7395.                                 $etap9->addFileDemandeRaccordementMultiple($fileMultipleEntity);
  7396.                             }
  7397.                         }
  7398.                         if(isset($item['fileMailEnedisConfirmationEtap25Multiple']) and $item['fileMailEnedisConfirmationEtap25Multiple'] != ''){
  7399.                             $array = explode(',',$item['fileMailEnedisConfirmationEtap25Multiple']);
  7400.                             foreach ($array as $item1){
  7401.                                 $fileMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  7402.                                 $nomenclature = $this->getNomenclature($etap,$fileMultipleEntity,'Mail d’ENEDIS de confirmation');
  7403.                                 $etap24ChampsEntity->addFileMailEnedisConfirmationEtap25Multiple($fileMultipleEntity);
  7404.                                 $etap9->addFileMailEnedisConfirmationMultiple($fileMultipleEntity);
  7405.                             }
  7406.                         }
  7407.                         if(isset($item['fileGarantieBancaireEtap25Multiple']) and $item['fileGarantieBancaireEtap25Multiple'] != ''){
  7408.                             $array = explode(',',$item['fileGarantieBancaireEtap25Multiple']);
  7409.                             foreach ($array as $item1){
  7410.                                 $fileMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  7411.                                 $nomenclature = $this->getNomenclature($etap,$fileMultipleEntity,'Garantie Bancaire ');
  7412.                                 $etap24ChampsEntity->addFileGarantieBancaireEtap25Multiple($fileMultipleEntity);
  7413.                                 $etap9->addFileGarantieBancaireMultiple($fileMultipleEntity);
  7414.                             }
  7415.                         }
  7416.                         if(isset($item['fileRecepisseDemandeAoMultiple']) and $item['fileRecepisseDemandeAoMultiple'] != ''){
  7417.                             $array = explode(',',$item['fileRecepisseDemandeAoMultiple']);
  7418.                             foreach ($array as $item1){
  7419.                                 $fileMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  7420.                                 $nomenclature = $this->getNomenclature($etap,$fileMultipleEntity,'Récépissé demande AO');
  7421.                                 $etap24ChampsEntity->addFileRecepisseDemandeAoMultiple($fileMultipleEntity);
  7422.                             }
  7423.                         }
  7424.                         if(isset($item['fileLettreLaureaMultiple']) and $item['fileLettreLaureaMultiple'] != ''){
  7425.                             $array = explode(',',$item['fileLettreLaureaMultiple']);
  7426.                             foreach ($array as $item1){
  7427.                                 $fileMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  7428.                                 $nomenclature = $this->getNomenclature($etap,$fileMultipleEntity,'Lettre de lauréat ');
  7429.                                 $etap24ChampsEntity->addFileLettreLaureaMultiple($fileMultipleEntity);
  7430.                             }
  7431.                         }
  7432.                         if(isset($item['dateT0']) and $item['dateT0'] != ''){
  7433.                             $etap24ChampsEntity->setDateT0(new \DateTime($item['dateT0']));
  7434.                             $etap9->setDateT0(new \DateTime($item['dateT0']));
  7435.                         }else{
  7436.                             $etap24ChampsEntity->setDateT0(null);
  7437.                             $etap9->setDateT0(null);
  7438.                         }
  7439.                         if(isset($item['tarifFit']) and $item['tarifFit'] != ''){
  7440.                             $etap24ChampsEntity->setTarifFit($item['tarifFit']);
  7441.                         }else{
  7442.                             $etap24ChampsEntity->setTarifFit(null);
  7443.                         }
  7444.                         if(isset($item['dateMaximaleAchevement']) and $item['dateMaximaleAchevement'] != ''){
  7445.                             $etap24ChampsEntity->setDateMaximaleAchevement(new \DateTime($item['dateMaximaleAchevement']));
  7446.                         }else{
  7447.                             $etap24ChampsEntity->setDateMaximaleAchevement(null);
  7448.                         }
  7449.                         if(isset($item['dateConsignation']) and $item['dateConsignation'] != ''){
  7450.                             $etap24ChampsEntity->setDateConsignation(new \DateTime($item['dateConsignation']));
  7451.                         }else{
  7452.                             $etap24ChampsEntity->setDateConsignation(null);
  7453.                         }
  7454.                         if(isset($item['dateDepotAo']) and $item['dateDepotAo'] != ''){
  7455.                             $etap24ChampsEntity->setDateDepotAo(new \DateTime($item['dateDepotAo']));
  7456.                         }else{
  7457.                             $etap24ChampsEntity->setDateDepotAo(null);
  7458.                         }
  7459.                         if(isset($item['dateNotificationLaureatAo']) and $item['dateNotificationLaureatAo'] != ''){
  7460.                             $etap24ChampsEntity->setDateNotificationLaureatAo(new \DateTime($item['dateNotificationLaureatAo']));
  7461.                         }else{
  7462.                             $etap24ChampsEntity->setDateNotificationLaureatAo(null);
  7463.                         }
  7464.                         if(isset($item['typeAoPeriodeCandidature']) and $item['typeAoPeriodeCandidature'] != ''){
  7465.                             $etap24ChampsEntity->setTypeAoPeriodeCandidature($item['typeAoPeriodeCandidature']);
  7466.                         }else{
  7467.                             $etap24ChampsEntity->setTypeAoPeriodeCandidature(null);
  7468.                         }
  7469.                         if(isset($item['agregateur']) and $item['agregateur'] != ''){
  7470.                             $etap24ChampsEntity->setAgregateur($item['agregateur']);
  7471.                         }else{
  7472.                             $etap24ChampsEntity->setAgregateur(null);
  7473.                         }
  7474.                         if(isset($item['fraisGestion']) and $item['fraisGestion'] != ''){
  7475.                             $etap24ChampsEntity->setFraisGestion($item['fraisGestion']);
  7476.                         }else{
  7477.                             $etap24ChampsEntity->setFraisGestion(null);
  7478.                         }
  7479.                         if(isset($item['uniteFraisGestion']) and $item['uniteFraisGestion'] != ''){
  7480.                             $etap24ChampsEntity->setUniteFraisGestion($item['uniteFraisGestion']);
  7481.                         }else{
  7482.                             $etap24ChampsEntity->setUniteFraisGestion(null);
  7483.                         }
  7484.                         if(isset($item['contrepartie']) and $item['contrepartie'] != ''){
  7485.                             $etap24ChampsEntity->setContrepartie($item['contrepartie']);
  7486.                         }else{
  7487.                             $etap24ChampsEntity->setContrepartie(null);
  7488.                         }
  7489.                         $etap24ChampsEntity->setEtap25($etap);
  7490.                         $this->em->persist($etap24ChampsEntity);
  7491.                         $this->em->persist($etap9);
  7492.                         $this->em->flush();
  7493.                     }
  7494.                 }
  7495.                 $this->em->persist($etap);
  7496.                 $this->em->flush();
  7497.                 $this->updateStatusTracker($project); // set status tracker
  7498.                 $this->flashBag->add(
  7499.                     'success',
  7500.                     'L\'opération a été effectuée avec succès.'
  7501.                 );
  7502.                 return [
  7503.                     'etap' => $etap,
  7504.                     'success' => true
  7505.                 ];
  7506.             }
  7507.         }
  7508.         return [
  7509.             'success' => false
  7510.         ];
  7511.     }
  7512.     public function submitEtap26($request,$user)
  7513.     {
  7514.         $etapToken = $request->get('etapToken');
  7515.         $tokenProject = $request->get('tokenProject');
  7516.         $etap26Champs = $request->get('etap26Champs');
  7517.         if($etapToken and $tokenProject){
  7518.             $project = $this->em->getRepository(Project::class)->findOneBy(['token'=>$tokenProject]);
  7519.             $etap = $this->em->getRepository(Etap26::class)->findOneBy(['token'=>$etapToken]);
  7520.             if($project && $etap){
  7521.                 if(!$this->checkUserAction($user,$project,$etap)){
  7522.                     return [
  7523.                         'success' => false
  7524.                     ];
  7525.                 }
  7526.                 if($etap26Champs) {
  7527.                     foreach ($etap26Champs as $item) {
  7528.                         if (isset($item['id']) and $item['id'] != '') {
  7529.                             $etap24ChampsEntity = $this->em->getRepository(Etap24Champs::class)->findOneBy(['token' => $item['id']]);
  7530.                             if($etap24ChampsEntity){
  7531.                                 if (isset($item['vlalorisation']) and $item['vlalorisation'] != '') {
  7532.                                     foreach ($item['vlalorisation'] as $valorisation) {
  7533.                                         if (isset($valorisation['id']) and $valorisation['id'] != '') {
  7534.                                             $etap26ChampsEntity = $this->em->getRepository(Etap26Champs::class)->findOneBy(['token' => $valorisation['id']]);
  7535.                                         }else{
  7536.                                             $etap26ChampsEntity = new Etap26Champs();
  7537.                                         }
  7538.                                         if(isset($valorisation['fileContratAchatSigneEtap25Multiple']) and $valorisation['fileContratAchatSigneEtap25Multiple'] != ''){
  7539.                                             $array = explode(',',$valorisation['fileContratAchatSigneEtap25Multiple']);
  7540.                                             foreach ($array as $item1){
  7541.                                                 $fileMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  7542.                                                 if($fileMultipleEntity){
  7543.                                                     $nomenclature = $this->getNomenclature($etap,$fileMultipleEntity,'Contrat d’achat signé');
  7544.                                                     $etap26ChampsEntity->addFileContratAchatSigneEtap25Multiple($fileMultipleEntity);
  7545.                                                 }
  7546.                                             }
  7547.                                         }
  7548.                                         if(isset($valorisation['fileAttestionProducteurEtap25Multiple']) and $valorisation['fileAttestionProducteurEtap25Multiple'] != ''){
  7549.                                             $array = explode(',',$valorisation['fileAttestionProducteurEtap25Multiple']);
  7550.                                             foreach ($array as $item1){
  7551.                                                 $fileMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  7552.                                                 if($fileMultipleEntity) {
  7553.                                                     $nomenclature = $this->getNomenclature($etap, $fileMultipleEntity, 'Attestation de producteur');
  7554.                                                     $etap26ChampsEntity->addFileAttestionProducteurEtap25Multiple($fileMultipleEntity);
  7555.                                                 }
  7556.                                             }
  7557.                                         }
  7558.                                         if(isset($valorisation['fileAttestionInstallateurEtap25Multiple']) and $valorisation['fileAttestionInstallateurEtap25Multiple'] != ''){
  7559.                                             $array = explode(',',$valorisation['fileAttestionInstallateurEtap25Multiple']);
  7560.                                             foreach ($array as $item1){
  7561.                                                 $fileMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  7562.                                                 if($fileMultipleEntity) {
  7563.                                                     $nomenclature = $this->getNomenclature($etap, $fileMultipleEntity, 'Attestation de l’installateur');
  7564.                                                     $etap26ChampsEntity->addFileAttestionInstallateurEtap25Multiple($fileMultipleEntity);
  7565.                                                 }
  7566.                                             }
  7567.                                         }
  7568.                                         if(isset($valorisation['fileArContratAchatEtap25Multiple']) and $valorisation['fileArContratAchatEtap25Multiple'] != ''){
  7569.                                             $array = explode(',',$valorisation['fileArContratAchatEtap25Multiple']);
  7570.                                             foreach ($array as $item1){
  7571.                                                 $fileMultipleEntity = $this->em->getRepository(DocUpload::class)->findOneBy(['token'=>$item1]);
  7572.                                                 if($fileMultipleEntity) {
  7573.                                                     $nomenclature = $this->getNomenclature($etap, $fileMultipleEntity, 'AR Contrat d’achat');
  7574.                                                     $etap26ChampsEntity->addFileArContratAchatEtap25Multiple($fileMultipleEntity);
  7575.                                                 }
  7576.                                             }
  7577.                                         }
  7578.                                         if(isset($valorisation['dateDebutContratAchat1']) and $valorisation['dateDebutContratAchat1'] != ''){
  7579.                                             $etap26ChampsEntity->setDateDebutContratAchat1(new \DateTime($valorisation['dateDebutContratAchat1']));
  7580.                                         }else{
  7581.                                             $etap26ChampsEntity->setDateDebutContratAchat1(null);
  7582.                                         }
  7583.                                         if(isset($valorisation['dateDebutContratAchat2']) and $valorisation['dateDebutContratAchat2'] != ''){
  7584.                                             $etap26ChampsEntity->setDateDebutContratAchat2(new \DateTime($valorisation['dateDebutContratAchat2']));
  7585.                                         }else{
  7586.                                             $etap26ChampsEntity->setDateDebutContratAchat2(null);
  7587.                                         }
  7588.                                         if(isset($valorisation['dateFinContratAchat1']) and $valorisation['dateFinContratAchat1'] != ''){
  7589.                                             $etap26ChampsEntity->setDateFinContratAchat1(new \DateTime($valorisation['dateFinContratAchat1']));
  7590.                                         }else{
  7591.                                             $etap26ChampsEntity->setDateFinContratAchat1(null);
  7592.                                         }
  7593.                                         if(isset($valorisation['dateFinContratAchat2']) and $valorisation['dateFinContratAchat2'] != ''){
  7594.                                             $etap26ChampsEntity->setDateFinContratAchat2(new \DateTime($valorisation['dateFinContratAchat2']));
  7595.                                         }else{
  7596.                                             $etap26ChampsEntity->setDateFinContratAchat2(null);
  7597.                                         }
  7598.                                         if(isset($valorisation['tarifContratAchat1']) and $valorisation['tarifContratAchat1'] != ''){
  7599.                                             $etap26ChampsEntity->setTarifContratAchat1($valorisation['tarifContratAchat1']);
  7600.                                         }else{
  7601.                                             $etap26ChampsEntity->setTarifContratAchat1(null);
  7602.                                         }
  7603.                                         if(isset($valorisation['tarifContratAchat2']) and $valorisation['tarifContratAchat2'] != ''){
  7604.                                             $etap26ChampsEntity->setTarifContratAchat2($valorisation['tarifContratAchat2']);
  7605.                                         }else{
  7606.                                             $etap26ChampsEntity->setTarifContratAchat2(null);
  7607.                                         }
  7608.                                         if(isset($valorisation['peridiciteFacturation1']) and $valorisation['peridiciteFacturation1'] != ''){
  7609.                                             $etap26ChampsEntity->setPeridiciteFacturation1($valorisation['peridiciteFacturation1']);
  7610.                                         }else{
  7611.                                             $etap26ChampsEntity->setPeridiciteFacturation1(null);
  7612.                                         }
  7613.                                         if(isset($valorisation['peridiciteFacturation2']) and $valorisation['peridiciteFacturation2'] != ''){
  7614.                                             $etap26ChampsEntity->setPeridiciteFacturation2($valorisation['peridiciteFacturation2']);
  7615.                                         }else{
  7616.                                             $etap26ChampsEntity->setPeridiciteFacturation2(null);
  7617.                                         }
  7618.                                         if(isset($valorisation['numeroContratAchat1']) and $valorisation['numeroContratAchat1'] != ''){
  7619.                                             $etap26ChampsEntity->setNumeroContratAchat1($valorisation['numeroContratAchat1']);
  7620.                                         }else{
  7621.                                             $etap26ChampsEntity->setNumeroContratAchat1(null);
  7622.                                         }
  7623.                                         if(isset($valorisation['numeroContratAchat2']) and $valorisation['numeroContratAchat2'] != ''){
  7624.                                             $etap26ChampsEntity->setNumeroContratAchat2($valorisation['numeroContratAchat2']);
  7625.                                         }else{
  7626.                                             $etap26ChampsEntity->setNumeroContratAchat2(null);
  7627.                                         }
  7628.                                         if(isset($valorisation['typeContrat1']) and $valorisation['typeContrat1'] != ''){
  7629.                                             $etap26ChampsEntity->setTypeContrat1($valorisation['typeContrat1']);
  7630.                                         }else{
  7631.                                             $etap26ChampsEntity->setTypeContrat1(null);
  7632.                                         }
  7633.                                         if(isset($valorisation['typeContrat2']) and $valorisation['typeContrat2'] != ''){
  7634.                                             $etap26ChampsEntity->setTypeContrat2($valorisation['typeContrat2']);
  7635.                                         }else{
  7636.                                             $etap26ChampsEntity->setTypeContrat2(null);
  7637.                                         }
  7638.                                         if(isset($valorisation['agregateurEtap25']) and $valorisation['agregateurEtap25'] != ''){
  7639.                                             $etap26ChampsEntity->setAgregateurEtap25($valorisation['agregateurEtap25']);
  7640.                                         }else{
  7641.                                             $etap26ChampsEntity->setAgregateurEtap25(null);
  7642.                                         }
  7643.                                         if(isset($valorisation['contrepartieEtap25']) and $valorisation['contrepartieEtap25'] != ''){
  7644.                                             $etap26ChampsEntity->setContrepartieEtap25($valorisation['contrepartieEtap25']);
  7645.                                         }else{
  7646.                                             $etap26ChampsEntity->setContrepartieEtap25(null);
  7647.                                         }
  7648.                                         $etap26ChampsEntity->setEtap24Champs($etap24ChampsEntity);
  7649.                                         $this->em->persist($etap26ChampsEntity);
  7650.                                         $this->em->flush();
  7651.                                     }
  7652.                                 }
  7653.                             }
  7654.                         }
  7655.                     }
  7656.                 }
  7657.                 $this->em->persist($etap);
  7658.                 $this->em->flush();
  7659.                 $this->updateStatusTracker($project); // set status tracker
  7660.                 $this->flashBag->add(
  7661.                     'success',
  7662.                     'L\'opération a été effectuée avec succès.'
  7663.                 );
  7664.                 return [
  7665.                     'etap' => $etap,
  7666.                     'success' => true
  7667.                 ];
  7668.             }
  7669.         }
  7670.         return [
  7671.             'success' => false
  7672.         ];
  7673.     }
  7674.     public function addUserFournisseurInProject($fournisseur){
  7675.         $name = $fournisseur->getName();
  7676.         $email = $fournisseur->getEmail();
  7677.         if(!$fournisseur->getUser()){
  7678.             if($email) {
  7679.                 $user = new User();
  7680.                 // encode the plain password
  7681.                 $password = $this->randomPassword();
  7682.                 $user->setPassword(
  7683.                     $this->passwordEncoder->encodePassword(
  7684.                         $user,
  7685.                         $password
  7686.                     )
  7687.                 );
  7688.                 $user->setRoles(array('ROLE_FOURNISSEUR'));
  7689.                 $user->setFirstname($name);
  7690.                 $user->setLastname($name);
  7691.                 $user->setEmail($email);
  7692.                 $user->setAcces(User::ACCES_ECRETURE);
  7693.                 if ($fournisseur->getId()) {
  7694.                     $user->setIsEnabled($fournisseur->getIsEnabled());
  7695.                 } else {
  7696.                     $user->setIsEnabled(true);
  7697.                 }
  7698.                 $errors = $this->validator->validate($user);
  7699.                 if (count($errors) > 0) {
  7700.                     foreach ($errors as $error) {
  7701.                         $erreurs[] = $error->getMessage();
  7702.                     }
  7703.                     return array(
  7704.                         'erreurs' => $erreurs,
  7705.                         'success' => false
  7706.                     );
  7707.                 }
  7708.                 $this->em->persist($user);
  7709.                 $this->em->flush();
  7710.                 $this->notification->createUser($user, $password);
  7711.             }else{
  7712.                 return array(
  7713.                     'success' => false,
  7714.                     'erreurs' => 'Erreur email !',
  7715.                 );
  7716.             }
  7717.         }
  7718.         return array(
  7719.             'success' => true,
  7720.             'user' => $user
  7721.         );
  7722.     }
  7723. }