src/Services/ManagerEntity/SocietesManagers.php line 998

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * @author Raymond
  5.  */
  6. namespace App\Services\ManagerEntity;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Knp\Component\Pager\PaginatorInterface;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use App\Helper\Utils;
  11. use App\Helper\PagesRedirection;
  12. use App\Services\ManagerEntity\LocalisationsManagers;
  13. use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
  14. use App\Repository\SecteursActiviteRepository;
  15. use App\Repository\LocalisationsRepository;
  16. use App\Entity\Societes;
  17. use App\Entity\Participation;
  18. use App\Helper\DateProvider;
  19. use App\Twig\TranslationExtension;
  20. use App\Entity\FondsInvestissement;
  21. use App\Services\TelephoneInternational;
  22. use App\Entity\SocieteGestionnaireFonds;
  23. use Symfony\Component\Security\Core\Security;
  24. use App\Repository\CommandesRepository;
  25. class SocietesManagers {
  26.     /**
  27.      * @var EntityManagerInterface
  28.      */
  29.     private $em;
  30.     /**
  31.      * @var LocalisationsManagers
  32.      */
  33.     private $lm;
  34.     /**
  35.      * @var string
  36.      */
  37.     private $dns_pdc;
  38.     /**
  39.      * @var string
  40.      */
  41.     private $cdn_fusacq;
  42.     /**
  43.      * @var SecteursActiviteRepository
  44.      */
  45.     private $secteursActiviteRepo;
  46.     /**
  47.      * @var LocalisationsRepository
  48.      */
  49.     private $localisationsRepository;
  50.     /**
  51.      * @var TranslationExtension
  52.      */
  53.     private $translationExtension;
  54.     /**
  55.      * @var TelephoneInternational
  56.      */
  57.     private $telephoneInternational;
  58.     
  59.     /**
  60.      * @var CommandesRepository
  61.      */
  62.     private $cr;
  63.     
  64.     /**
  65.      * @var Security
  66.      */
  67.     private $security;
  68.     public const NB_ANNONCE_PAGINATION 10;
  69.     public $lang;
  70.     /**
  71.      * @param EntityManagerInterface $em
  72.      */
  73.     public function __construct(EntityManagerInterface $emLocalisationsManagers $lmContainerBagInterface $paramsSecteursActiviteRepository $secteursActiviteRepoLocalisationsRepository $localisationsRepositoryTranslationExtension $translationExtensionTelephoneInternational $telephoneInternationalCommandesRepository $crSecurity $security) {
  74.         $this->em $em;
  75.         $this->lm $lm;
  76.         $this->dns_pdc $params->get('app.DNS')['PDC_ROOT'];
  77.         $this->cdn_fusacq $params->get('app.CDN')['CDN_FUSACQ'];
  78.         $this->secteursActiviteRepo $secteursActiviteRepo;
  79.         $this->localisationsRepository $localisationsRepository;
  80.         $this->translationExtension $translationExtension;
  81.         $this->telephoneInternational $telephoneInternational;
  82.         $this->lang = isset($_SESSION['_sf2_attributes']['lang']) ? $_SESSION['_sf2_attributes']['lang'] : "fr";
  83.         $this->security $security;
  84.         $this->cr $cr;
  85.     }
  86.     public function getParticipationsFondsList(Request $requestPaginatorInterface $paginator, array $filter = [], $mode ""$type null$lang "fr") {
  87.         $sql $this->em->getRepository(Societes::class)->donne_requete_SQL_pour_tableau_participations_fonds($filter$mode$type);
  88.         $params $this->em->getRepository(Societes::class)->prepareParameters($filter$type);
  89.         $query $this->em->createQuery($sql);
  90.         $query->setParameters($params);
  91.         $annoncesCiblePotentielle $paginator->paginate(
  92.                 $query// Requête contenant les données à paginer (ici nos annonces)
  93.             max(1$request->query->getInt('page'1)), // Numéro de la page en cours, passé dans l'URL, 1 si aucune page
  94.                 10 // Nombre de résultats par page
  95.         );
  96.         foreach ($annoncesCiblePotentielle as $annonce) {
  97.             if ($annonce->_get('date_dernier_investissement') != null && strlen($annonce->_get('date_dernier_investissement')) == 6) {
  98.                 $date_dernier_investissement = \DateTime::createFromFormat("Ym"$annonce->_get('date_dernier_investissement'));
  99.                 $annonce->date_dernier_investissement_formated $date_dernier_investissement->format('m/Y');
  100.             } else {
  101.                 $annonce->date_dernier_investissement_formated "N.C";
  102.             }
  103.             $id_pays $annonce->_get('id_pays');
  104.             $id_region $annonce->_get('id_region');
  105.             $code_postal $annonce->_get('code_postal');
  106.             if ($id_pays != "" && $id_pays == 33 && $id_region != "" && $code_postal != "") {
  107.                 $id_departement $id_region '_' substr($code_postal02);
  108.             } else {
  109.                 $id_departement null;
  110.             }
  111.             $annonce->carte "";
  112.             if ($id_region != null) {
  113.                 if (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_region ".png")) {
  114.                     $annonce->carte $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_region ".png";
  115.                     /* // Si le département n'est pas confidentiel, on affiche la carte de la région
  116.                       if (substr($id_departement, -3) != "_99") {
  117.                       $annonce->_get('carte = $this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_region.".png";
  118.                       } else {
  119.                       // Sinon on regarde si la carte confidentielle existe pour ce pays, si oui on l'affiche
  120.                       if (Utils::url_exists($this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_pays."_99.png")) {
  121.                       $annonce->_get('carte = $this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_pays."_99.png";
  122.                       } else {
  123.                       $annonce->_get('carte = $this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_pays."_blanc.png";
  124.                       }
  125.                       } */
  126.                 } elseif (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png")) {
  127.                     $annonce->carte $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png";
  128.                 } else {
  129.                     $annonce->carte $this->cdn_fusacq "/images/cartes/big/monde.png";
  130.                 }
  131.             } elseif ($id_pays != null) {
  132.                 if (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png")) {
  133.                     $annonce->carte $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png";
  134.                 } else {
  135.                     $annonce->carte $this->cdn_fusacq "/images/cartes/big/monde.png";
  136.                 }
  137.             }
  138.             if ($id_departement != null && preg_match('/[A-Za-z]/'$id_departement) == 0) {
  139.                 $localisation $this->lm->getNomLocalisationById($id_departement);
  140.                 $nom_localisation "";
  141.                 for ($i count($localisation) - 1$i >= 0$i--) {
  142.                     $nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
  143.                 }
  144.                 $nom_localisation substr($nom_localisation0, -2);
  145.             } elseif ($id_region != null && preg_match('/[A-Za-z]/'$id_region) == 0) {
  146.                 $localisation $this->lm->getNomLocalisationById($id_region);
  147.                 $nom_localisation "";
  148.                 for ($i count($localisation) - 1$i >= 0$i--) {
  149.                     $nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
  150.                 }
  151.                 $nom_localisation substr($nom_localisation0, -2);
  152.             } elseif ($id_pays != null) {
  153.                 $localisation $this->lm->getNomLocalisationById($id_pays);
  154.                 if ($localisation) {
  155.                     $nom_localisation $localisation[0]['nom_localisation'];
  156.                 } else {
  157.                     $nom_localisation "";
  158.                 }
  159.             }
  160.             $annonce->nom_localisation = isset($nom_localisation) ? $nom_localisation "";
  161.             if (isset($localisation)) {
  162.                 foreach ($localisation as $niveau => $loc) {
  163.                     $nom_niveau "nom_localisation_niveau_" $niveau;
  164.                     $id_niveau "id_localisation_niveau_" $niveau;
  165.                     ;
  166.                     $annonce->$nom_niveau $loc['nom_localisation'];
  167.                     $annonce->$id_niveau $loc['id_localisation'];
  168.                 }
  169.             }
  170.             if (!isset($annonce->nom_localisation_niveau_0)) {
  171.                 $annonce->nom_localisation_niveau_0 "";
  172.                 $annonce->id_localisation_niveau_0 "";
  173.             }
  174.             if (!isset($annonce->nom_localisation_niveau_1)) {
  175.                 $annonce->nom_localisation_niveau_1 "";
  176.                 $annonce->id_localisation_niveau_1 "";
  177.             }
  178.             if (!isset($annonce->nom_localisation_niveau_2)) {
  179.                 $annonce->nom_localisation_niveau_2 "";
  180.                 $annonce->id_localisation_niveau_2 "";
  181.             }
  182.             
  183.             if ($annonce->_get('resume_activite') == null || $annonce->_get('resume_activite') == "null") {
  184.                 if ($annonce->_get('id_region') != null && $annonce->_get('id_pays') == 33) {
  185.                     $localisation_societe $this->localisationsRepository->findOneBy(['id_localisation' => $annonce->_get('id_region')]);
  186.                 } else {
  187.                     $localisation_societe $this->localisationsRepository->findOneBy(['id_localisation' => $annonce->_get('id_pays')]);
  188.                 }
  189.                 $arrayVarsTrans = [
  190.                     "prefixe" => $localisation_societe->__get('prefixe'),
  191.                     "nom_localisation" => $localisation_societe->__get('nom_localisation')
  192.                 ];
  193.                 $annonce->_set('resume_activite'$this->translationExtension->translate('société basée %$prefixe%$ %$nom_localisation%$'$lang"""M"""$arrayVarsTrans));
  194.             }
  195.             $tab_actionnaires $this->getTableauActionnairesInstitutionnelsParticipation($annonce->_get('id_societe'), $lang);
  196.             $annonce->numero_cadran $this->calcul_numero_image_cadran($tab_actionnaires);
  197.             $slug $annonce->_get('resume_activite') ? Utils::slugify($annonce->_get('resume_activite')) : "sans-resume";
  198.             $annonce->slug $slug;
  199.             
  200.             $annonce->commande $this->userHasOrderedParticipation($annonce->_get('id_societe'));
  201.             $annonce->arrondi_ca $this->donne_arrondi_CA($annonce->_get('ca_n'));
  202.             
  203.             $this->em->detach($annonce);
  204.         }
  205.         return $annoncesCiblePotentielle;
  206.     }
  207.     
  208.     public function userHasOrderedParticipation($idParticipation) {
  209.         $user $this->security->getUser();
  210.         
  211.         if ($user) {
  212.             // On regarde si elle a été commandée dans la table commandes
  213.             $commande $this->cr->hasAnnonceCommande($user->_get('login_utilisateur'),$idParticipation,"participation");
  214.             
  215.             return $commande;
  216.         } else {
  217.             return false;
  218.         }
  219.     }
  220.     
  221.     public function userHasOrderedAcquereurHistorique($idSociete) {
  222.         $user $this->security->getUser();
  223.         
  224.         if ($user) {
  225.             // On regarde si elle a été commandée dans la table commandes
  226.             $commande $this->cr->hasAnnonceCommande($user->_get('login_utilisateur'),$idSociete,"acquereur_historique");
  227.             
  228.             return $commande;
  229.         } else {
  230.             return false;
  231.         }
  232.     }
  233.     
  234.     public function userHasOrderedFonds($idFonds) {
  235.         $user $this->security->getUser();
  236.         
  237.         if ($user) {
  238.             // On regarde si elle a été commandée dans la table commandes
  239.             $commande $this->cr->hasAnnonceCommande($user->_get('login_utilisateur'),$idFonds,"fonds");
  240.             
  241.             return $commande;
  242.         } else {
  243.             return false;
  244.         }
  245.     }
  246.     
  247.     /**
  248.      * @param $filter
  249.      * @param $mode
  250.      * @param $page
  251.      * @param $element_index
  252.      * @return
  253.      */
  254.     public function getIndexNParticipationsFondsList(array $filter = [], $mode ''$type null$page$element_index) {
  255.         $index_in_list = ($page 1) * self::NB_ANNONCE_PAGINATION $element_index;
  256.         if ($page == && $index_in_list == -1) {
  257.             return null;
  258.         }
  259.         $sql $this->em->getRepository(Societes::class)->donne_requete_SQL_pour_tableau_participations_fonds($filter$mode$type);
  260.         $params $this->em->getRepository(Societes::class)->prepareParameters($filter$type);
  261.         $query $this->em->createQuery($sql);
  262.         $query->setParameters($params);
  263.         $query->setFirstResult(max(0, (int) $index_in_list));
  264.         $query->setMaxResults(1);
  265.         return $query->getOneOrNullResult();
  266.     }
  267.     public function getAcquereurHistoriqueList(Request $requestPaginatorInterface $paginator, array $filter = [], $mode ""$lang 'fr') {
  268.         $sql $this->em->getRepository(Societes::class)->donne_requete_SQL_pour_tableau_acquereur_historique($filter$mode);
  269.         $params $this->em->getRepository(Societes::class)->prepareParametersAcquereurHistorique($filter);
  270.         $query $this->em->createQuery($sql);
  271.         $query->setParameters($params);
  272.         $annoncesAcquereurHistorique $paginator->paginate(
  273.                 $query// Requête contenant les données à paginer (ici nos annonces)
  274.                  max(1$request->query->getInt('page'1)), // Numéro de la page en cours, passé dans l'URL, 1 si aucune page
  275.                 10 // Nombre de résultats par page
  276.         );
  277.         $listeIdSociete = array();
  278.         $arrayAnnonces = array();
  279.         for ($i 0$i count($annoncesAcquereurHistorique); $i++) {
  280.             if (!in_array($annoncesAcquereurHistorique[$i]['id_societe'], $listeIdSociete)) {
  281.                 $listeIdSociete[] = $annoncesAcquereurHistorique[$i]['id_societe'];
  282.                 $idSociete $annoncesAcquereurHistorique[$i]['id_societe'];
  283.                 $arrayAnnonces[$idSociete] = $annoncesAcquereurHistorique[$i];
  284.                 if (isset($annoncesAcquereurHistorique[$i]['ca_n']) && $annoncesAcquereurHistorique[$i]['ca_n'] != "") {
  285.                     $arrayAnnonces[$idSociete]['ca_n'] = substr($annoncesAcquereurHistorique[$i]['ca_n'], 0strpos($annoncesAcquereurHistorique[$i]['ca_n'], '.'));
  286.                 }
  287.                 $nom_localisation "";
  288.                 if ($annoncesAcquereurHistorique[$i]['id_region'] != null && $annoncesAcquereurHistorique[$i]['id_region'] != '00' && preg_match('/[A-Za-z]/'$annoncesAcquereurHistorique[$i]['id_region']) == 0) {
  289.                     $localisation $this->lm->getNomLocalisationById($annoncesAcquereurHistorique[$i]['id_region']);
  290.                     for ($j count($localisation) - 1$j >= 0$j--) {
  291.                         $nom_localisation .= $localisation[$j]['nom_localisation'] . ", ";
  292.                     }
  293.                     $nom_localisation substr($nom_localisation0, -2);
  294.                 } elseif ($annoncesAcquereurHistorique[$i]['id_pays'] != null) {
  295.                     $localisation $this->lm->getNomLocalisationById($annoncesAcquereurHistorique[$i]['id_pays']);
  296.                     if ($localisation) {
  297.                         $nom_localisation $localisation[0]['nom_localisation'];
  298.                     } else {
  299.                         $nom_localisation "";
  300.                     }
  301.                 }
  302.                 $arrayAnnonces[$idSociete]['siege'] = $nom_localisation;
  303.                 $arrayAnnonces[$idSociete]['url_actualite'] = Utils::slugify($annoncesAcquereurHistorique[$i]['titre_actualite']) . '-a' $annoncesAcquereurHistorique[$i]['id_actualite'] . '';
  304.                 $id_region $annoncesAcquereurHistorique[$i]['id_region'];
  305.                 $id_pays $annoncesAcquereurHistorique[$i]['id_pays'];
  306.                 $date_mise_en_ligne = \DateTime::createFromFormat('YmdHis'$arrayAnnonces[$idSociete]['date_mise_en_ligne']);
  307.                 $arrayAnnonces[$idSociete]['date_formated'] = $date_mise_en_ligne->format('d/m/Y');
  308.                 if ($id_region != null) {
  309.                     if (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_region ".png")) {
  310.                         $arrayAnnonces[$idSociete]['carte'] = $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_region ".png";
  311.                     } elseif (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png")) {
  312.                         $arrayAnnonces[$idSociete]['carte'] = $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png";
  313.                     } else {
  314.                         $arrayAnnonces[$idSociete]['carte'] = $this->cdn_fusacq "/images/cartes/big/monde.png";
  315.                     }
  316.                 } elseif ($id_pays != null) {
  317.                     if (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png")) {
  318.                         $arrayAnnonces[$idSociete]['carte'] = $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png";
  319.                     } else {
  320.                         $arrayAnnonces[$idSociete]['carte'] = $this->cdn_fusacq "/images/cartes/big/monde.png";
  321.                     }
  322.                 }
  323.                 if ($arrayAnnonces[$idSociete]['resume_activite'] == null || $arrayAnnonces[$idSociete]['resume_activite'] == "null") {
  324.                     if ($arrayAnnonces[$idSociete]['id_region'] != null && $arrayAnnonces[$idSociete]['id_region'] != "choisir" && $arrayAnnonces[$idSociete]['id_pays'] == 33) {
  325.                         $localisation_societe $this->localisationsRepository->findOneBy(['id_localisation' => $arrayAnnonces[$idSociete]['id_region']]);
  326.                     } else {
  327.                         $localisation_societe $this->localisationsRepository->findOneBy(['id_localisation' => $arrayAnnonces[$idSociete]['id_pays']]);
  328.                         
  329.                         // Si id_pays non renseigné, on prend France par défaut
  330.                         if (!$localisation_societe) {
  331.                             $localisation_societe $this->localisationsRepository->findOneBy(['id_localisation' => 33]);
  332.                         }
  333.                     }
  334.                     $arrayVarsTrans = [
  335.                         "prefixe" => $localisation_societe->__get('prefixe'),
  336.                         "nom_localisation" => $localisation_societe->__get('nom_localisation')
  337.                     ];
  338.                     $arrayAnnonces[$idSociete]['resume_activite'] = $this->translationExtension->translate('société basée %$prefixe%$ %$nom_localisation%$'$lang"""M"""$arrayVarsTrans);
  339.                 }
  340.                 
  341.                 $arrayAnnonces[$idSociete]['commande'] = $this->userHasOrderedAcquereurHistorique($idSociete);
  342.                 
  343.             } else {
  344.                 $idSociete $annoncesAcquereurHistorique[$i]['id_societe'];
  345.                 if ($annoncesAcquereurHistorique[$i]["date_mise_en_ligne"] > $arrayAnnonces[$idSociete]['date_mise_en_ligne']) {
  346.                     $arrayAnnonces[$idSociete]['id_actualite'] = $annoncesAcquereurHistorique[$i]["id_actualite"];
  347.                     $arrayAnnonces[$idSociete]['titre_actualite'] = $annoncesAcquereurHistorique[$i]["titre_actualite"];
  348.                     $arrayAnnonces[$idSociete]['url_actualite'] = Utils::slugify($annoncesAcquereurHistorique[$i]['titre_actualite']) . '-a' $annoncesAcquereurHistorique[$i]['id_actualite'] . '';
  349.                     $arrayAnnonces[$idSociete]['date_mise_en_ligne'] = $annoncesAcquereurHistorique[$i]["date_mise_en_ligne"];
  350.                     $date_mise_en_ligne = \DateTime::createFromFormat('YmdHis'$annoncesAcquereurHistorique[$i]['date_mise_en_ligne']);
  351.                     $arrayAnnonces[$idSociete]['date_formated'] = $date_mise_en_ligne->format('d/m/Y');
  352.                 }
  353.             }
  354.             $arrayAnnonces[$idSociete]['index'] = $i;
  355.         }
  356.         $annoncesAcquereurHistorique->setItems($arrayAnnonces);
  357.         //dd($annoncesAcquereurHistorique);
  358.         return $annoncesAcquereurHistorique;
  359.     }
  360.     /**
  361.      * @param $filter
  362.      * @param $mode
  363.      * @param $page
  364.      * @param $element_index
  365.      * @return
  366.      */
  367.     public function getIndexNAcquereurHistoriqueList(array $filter = [], $mode ''$page$element_index) {
  368.         $index_in_list = ($page 1) * self::NB_ANNONCE_PAGINATION $element_index;
  369.         if ($page == && $index_in_list == -1) {
  370.             return null;
  371.         }
  372.         $sql $this->em->getRepository(Societes::class)->donne_requete_SQL_pour_tableau_acquereur_historique($filter$mode);
  373.         $params $this->em->getRepository(Societes::class)->prepareParametersAcquereurHistorique($filter);
  374.         $query $this->em->createQuery($sql);
  375.         $query->setParameters($params);
  376.         $query->setFirstResult(max(0, (int) $index_in_list));
  377.         $query->setMaxResults(1);
  378.         $aquereur_historique $query->getOneOrNullResult();
  379.         if ($aquereur_historique && $aquereur_historique['resume_activite'] == null) {
  380.             $aquereur_historique['resume_activite'] = "Activité de la société";
  381.         }
  382.         return $aquereur_historique;
  383.     }
  384.     public function getFondsInvestissementList(Request $requestPaginatorInterface $paginator, array $filter = []) {
  385.         $sql $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_fonds_investissement($filter"");
  386.         $params $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement($filter);
  387.         //dd($sql, $params);
  388.         $query $this->em->createQuery($sql);
  389.         $query->setParameters($params);
  390.         $fondsInvestissement $paginator->paginate(
  391.                 $query// Requête contenant les données à paginer (ici nos annonces)
  392.                max(1$request->query->getInt('page'1)), // Numéro de la page en cours, passé dans l'URL, 1 si aucune page
  393.                 10 // Nombre de résultats par page
  394.         );
  395.         $array_fonds = [];
  396.         foreach ($fondsInvestissement as $fonds) {
  397.             $date_investissement_formated = isset($fonds['date_investissement']) ? $fonds['date_investissement'] : null;
  398.             $id_pays = isset($fonds['id_pays']) ? $fonds['id_pays'] : null;
  399.             $id_region = isset($fonds['id_region']) ? $fonds['id_region'] : null;
  400.             $code_postal = isset($fonds['code_postal']) ? $fonds['code_postal'] : null;
  401.             if ($id_pays != "" && $id_pays == 33 && $id_region != "" && $code_postal != "") {
  402.                 $id_departement $id_region '_' substr($code_postal02);
  403.             } else {
  404.                 $id_departement null;
  405.             }
  406.             if ($id_region != null) {
  407.                 if (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_region ".png")) {
  408.                     $fonds['carte'] = $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_region ".png";
  409.                 } elseif (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png")) {
  410.                     $fonds['carte'] = $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png";
  411.                 } else {
  412.                     $fonds['carte'] = $this->cdn_fusacq "/images/cartes/big/monde.png";
  413.                 }
  414.             } elseif ($id_pays != null) {
  415.                 if (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png")) {
  416.                     $fonds['carte'] = $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png";
  417.                 } else {
  418.                     $fonds['carte'] = $this->cdn_fusacq "/images/cartes/big/monde.png";
  419.                 }
  420.             }
  421.             $nom_localisation "";
  422.             if ($id_departement != null && preg_match('/[A-Za-z]/'$id_departement) == 0) {
  423.                 $localisation $this->lm->getNomLocalisationById($id_departement);
  424.                 if ($localisation) {
  425.                     for ($i count($localisation) - 1$i >= 0$i--) {
  426.                         $nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
  427.                     }
  428.                     $nom_localisation substr($nom_localisation0, -2);
  429.                 }
  430.             } elseif ($id_region != null && preg_match('/[A-Za-z]/'$id_region) == 0) {
  431.                 $localisation $this->lm->getNomLocalisationById($id_region);
  432.                 if ($localisation) {
  433.                     for ($i count($localisation) - 1$i >= 0$i--) {
  434.                         $nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
  435.                     }
  436.                     $nom_localisation substr($nom_localisation0, -2);
  437.                 }
  438.             } elseif ($id_pays != null) {
  439.                 $localisation $this->lm->getNomLocalisationById($id_pays);
  440.                 $nom_localisation $localisation[0]['nom_localisation'];
  441.             }
  442.             $fonds['nom_localisation'] = $nom_localisation;
  443.             $fonds['date_investissement_formated'] =(!empty($date_investissement_formated)) ? substr($date_investissement_formated42) . "/" substr($date_investissement_formated04):"";
  444.             $idFonds $fonds['id_gestionnaire_fonds'];
  445.             if (Utils::url_exists("https://content.fusacq.com/static/raw-fusacq/css/images/fonds/vign_fi_$idFonds.jpg")) {
  446.                 $fonds['vignette'] = "https://content.fusacq.com/static/raw-fusacq/css/images/fonds/vign_fi_$idFonds.jpg";
  447.             } else {
  448.                 $fonds['vignette'] = "https://content.fusacq.com/static/raw-fusacq/css/images/logo_annu_fond_invest.gif";
  449.             }
  450.             
  451.             $fonds['commande'] = $this->userHasOrderedFonds($fonds['id_gestionnaire_fonds']);
  452.             $array_fonds[] = $fonds;
  453.         }
  454.         $fondsInvestissement->setItems($array_fonds);
  455.         return $fondsInvestissement;
  456.     }
  457.     
  458.     /**
  459.      * @param $filter
  460.      * @param $page
  461.      * @param $element_index
  462.      * @return
  463.      */
  464.     public function getIndexNFondsInvestissementList(array $filter = [], $page$element_index) {
  465.         $index_in_list = ($page 1) * self::NB_ANNONCE_PAGINATION $element_index;
  466.         if ($page == && $index_in_list == -1) {
  467.             return null;
  468.         }
  469.         $sql $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_fonds_investissement($filter"");
  470.         $params $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement($filter);
  471.         $query $this->em->createQuery($sql);
  472.         $query->setParameters($params);
  473.         $query->setFirstResult(max(0, (int) $index_in_list));
  474.         $query->setMaxResults(1);
  475.         return $query->getOneOrNullResult();
  476.     }
  477.     public function getAcquereurInvestisseurList(Request $requestPaginatorInterface $paginator, array $filter = []) {
  478.         $sql $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_investisseur_acquereur($filter"");
  479.         $params $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement($filter);
  480.         //dd($sql, $params);
  481.         $query $this->em->createQuery($sql);
  482.         $query->setParameters($params);
  483.         $fondsInvestissement $paginator->paginate(
  484.                 $query// Requête contenant les données à paginer (ici nos annonces)
  485.                 max(1$request->query->getInt('page'1)),// Numéro de la page en cours, passé dans l'URL, 1 si aucune page
  486.                 10 // Nombre de résultats par page
  487.         );
  488.         $array_fonds = [];
  489.         foreach ($fondsInvestissement as $fonds) {
  490.             $date_investissement_formated = isset($fonds['date_investissement']) ? $fonds['date_investissement'] : null;
  491.             $id_pays = isset($fonds['id_pays']) ? $fonds['id_pays'] : null;
  492.             $id_region = isset($fonds['id_region']) ? $fonds['id_region'] : null;
  493.             $code_postal = isset($fonds['code_postal']) ? $fonds['code_postal'] : null;
  494.             if ($id_pays != "" && $id_pays == 33 && $id_region != "" && $code_postal != "") {
  495.                 $id_departement $id_region '_' substr($code_postal02);
  496.             } else {
  497.                 $id_departement null;
  498.             }
  499.             if ($id_region != null) {
  500.                 if (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_region ".png")) {
  501.                     $fonds['carte'] = $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_region ".png";
  502.                 } elseif (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png")) {
  503.                     $fonds['carte'] = $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png";
  504.                 } else {
  505.                     $fonds['carte'] = $this->cdn_fusacq "/images/cartes/big/monde.png";
  506.                 }
  507.             } elseif ($id_pays != null) {
  508.                 if (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png")) {
  509.                     $fonds['carte'] = $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png";
  510.                 } else {
  511.                     $fonds['carte'] = $this->cdn_fusacq "/images/cartes/big/monde.png";
  512.                 }
  513.             }
  514.             $nom_localisation "";
  515.             if ($id_departement != null && preg_match('/[A-Za-z]/'$id_departement) == 0) {
  516.                 $localisation $this->lm->getNomLocalisationById($id_departement);
  517.                 if ($localisation) {
  518.                     for ($i count($localisation) - 1$i >= 0$i--) {
  519.                         $nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
  520.                     }
  521.                     $nom_localisation substr($nom_localisation0, -2);
  522.                 }
  523.             } elseif ($id_region != null && preg_match('/[A-Za-z]/'$id_region) == 0) {
  524.                 $localisation $this->lm->getNomLocalisationById($id_region);
  525.                 if ($localisation) {
  526.                     for ($i count($localisation) - 1$i >= 0$i--) {
  527.                         $nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
  528.                     }
  529.                     $nom_localisation substr($nom_localisation0, -2);
  530.                 }
  531.             } elseif ($id_pays != null) {
  532.                 $localisation $this->lm->getNomLocalisationById($id_pays);
  533.                 $nom_localisation $localisation[0]['nom_localisation'];
  534.             }
  535.             $fonds['nom_localisation'] = $nom_localisation;
  536.             $fonds['date_investissement_formated'] =(!empty($date_investissement_formated))? substr($date_investissement_formated42) . "/" substr($date_investissement_formated04):"";
  537.             $fonds['commande'] = $this->userHasOrderedFonds($fonds['id_gestionnaire_fonds']);
  538.             $array_fonds[] = $fonds;
  539.         }
  540.         $fondsInvestissement->setItems($array_fonds);
  541.         return $fondsInvestissement;
  542.     }
  543.     public function getDerniersInvestisseur($limit 5) {
  544.         $sql $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_investisseur_acquereur(['tri' => 'date_desc'], "");
  545.         $params $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement([]);
  546.         $query $this->em->createQuery($sql);
  547.         $query->setParameters($params)->setMaxResults($limit);
  548.         $result $query->getArrayResult();
  549.         $investisseurs = [];
  550.         foreach ($result as $r) {
  551.             $date_investissement_formated = isset($r['date_investissement']) ? $r['date_investissement'] : null;
  552.             if ($date_investissement_formated) {
  553.                 $r['date_investissement_formated'] = substr($date_investissement_formated42) . "/" substr($date_investissement_formated04);
  554.             } else {
  555.                 $r['date_investissement_formated'] = "";
  556.             }
  557.             if ($r['id_region']) {
  558.                 $localisation $this->localisationsRepository->getNomLocalisationById($r['id_region'])[1];
  559.                 
  560.                 if ($r['id_region'] == "33_21") {
  561.                     $r['localisation'] = "PACA";
  562.                 } else {
  563.                     $r['localisation'] = $localisation['nom_localisation'];
  564.                 }
  565.                 
  566.                 $r['prefixe_localisation'] = $localisation['prefixe'] ? $localisation['prefixe'] : "en";
  567.             } elseif ($r['id_pays']) {
  568.                 $localisation $this->localisationsRepository->getNomLocalisationById($r['id_pays'])[0];
  569.                 $r['localisation'] = $localisation['nom_localisation'];
  570.                 $r['prefixe_localisation'] = $localisation['prefixe'] ? $localisation['prefixe'] : "en";
  571.             } else {
  572.                 $r['localisation'] = "";
  573.                 $r['prefixe_localisation'] = "";
  574.             }
  575.             if ($r['regions_ciblees']) {
  576.                 $regions array_filter(explode(","$r['regions_ciblees']));
  577.                 if (count($regions) == 0) {
  578.                     $r['cible'] = "";
  579.                     $r['prefixe_cible'] = "";
  580.                 } elseif (count($regions) == 1) {
  581.                     if (isset($this->localisationsRepository->getNomLocalisationById($regions[0])[1])) {
  582.                         $localisation $this->localisationsRepository->getNomLocalisationById($regions[0])[1];
  583.                         $r['cible'] = $localisation['nom_localisation'];
  584.                         $r['prefixe_cible'] = $localisation['prefixe'] ? $localisation['prefixe'] : "en";
  585.                     } else {
  586.                         $r['cible'] = 'localisation';
  587.                         $r['prefixe_cible'] = 'en';
  588.                     }
  589.                 } else {
  590.                     $r['nb_cible'] = count($regions);
  591.                     $r['type_cible'] = "regions";
  592.                     $r['cible'] = "";
  593.                     $r['prefixe_cible'] = "";
  594.                 }
  595.             } elseif ($r['pays_ciblees']) {
  596.                 $pays array_filter(explode(","$r['pays_ciblees']));
  597.                 if (count($pays) == 0) {
  598.                     $r['cible'] = "";
  599.                     $r['prefixe_cible'] = "";
  600.                 } elseif (count($pays) == 1) {
  601.                     if (isset($this->localisationsRepository->getNomLocalisationById($pays[0])[0])) {
  602.                         $localisation $this->localisationsRepository->getNomLocalisationById($pays[0])[0];
  603.                         $r['cible'] = $localisation['nom_localisation'];
  604.                         $r['prefixe_cible'] = $localisation['prefixe'] ? $localisation['prefixe'] : "en";
  605.                     } else {
  606.                         $r['cible'] = 'localisation';
  607.                         $r['prefixe_cible'] = 'en';
  608.                     }
  609.                 } else {
  610.                     $r['nb_cible'] = count($pays);
  611.                     $r['type_cible'] = "pays";
  612.                     $r['cible'] = "";
  613.                     $r['prefixe_cible'] = "";
  614.                 }
  615.             } else {
  616.                 $r['cible'] = "";
  617.                 $r['nb_cible'] = "";
  618.                 $r['type_cible'] = "";
  619.                 $r['prefixe_cible'] = "";
  620.             }
  621.             $investisseurs[] = $r;
  622.         }
  623.         //dd($investisseurs);
  624.         return $investisseurs;
  625.     }
  626.     /**
  627.      * @param $filter
  628.      * @param $page
  629.      * @param $element_index
  630.      * @return
  631.      */
  632.     public function getIndexNAcquereurInvestisseurList(array $filter = [], $page$element_index) {
  633.         $index_in_list = ($page 1) * self::NB_ANNONCE_PAGINATION $element_index;
  634.         
  635.         if ($page == && $index_in_list == -1) {
  636.             return null;
  637.         }
  638.         //$sql = $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_acquereur_investisseur($filter, "");
  639.         //$sql = $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_investisseur_acquereur($filter, "");
  640.         $sql $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_fonds_investissement($filter"");
  641.         $params $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement($filter);
  642.         
  643.         $query $this->em->createQuery($sql);
  644.         $query->setParameters($params);
  645.         $query->setFirstResult(max(0, (int) $index_in_list));
  646.         $query->setMaxResults(1);
  647.         
  648.         return $query->getOneOrNullResult();
  649.     }
  650.     public function getParticipationsDunFondsList(Request $requestPaginatorInterface $paginator, array $filter = []) {
  651.         $sql $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_investissement_dun_fonds($filter"");
  652.         $params $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement($filter);
  653.         $query $this->em->createQuery($sql);
  654.         $query->setParameters($params);
  655.         /* $participations = $paginator->paginate(
  656.           $query, // Requête contenant les données à paginer (ici nos annonces)
  657.           $request->query->getInt('page_invest', 1), // Numéro de la page en cours, passé dans l'URL, 1 si aucune page
  658.           10, // Nombre de résultats par page
  659.           ['pageParameterName' => 'page_invest']); */
  660.         
  661.         $page intval($filter['pageInvest'] ?? 1);
  662.         if ($page 1) {
  663.             $page 1;
  664.         }
  665.         $participations $paginator->paginate(
  666.                 $query// Requête contenant les données à paginer (ici nos annonces)
  667.                  $page// Numéro de la page en cours, passé dans l'URL, 1 si aucune page
  668.                 10// Nombre de résultats par page
  669.                 ['pageParameterName' => 'pageInvest']);
  670.         $array_participation = [];
  671.         foreach ($participations as $participation) {
  672.             $date_investissement_formated = isset($participation['date_investissement']) ? $participation['date_investissement'] : null;
  673.             $participation['date_dernier_investissement_formated'] = ($date_investissement_formated)? substr($date_investissement_formated42) . "/" substr($date_investissement_formated04):null;
  674.             $participation['slug'] = Utils::slugify($participation['raison_sociale']);
  675.             $array_participation[] = $participation;
  676.         }
  677.         $participations->setItems($array_participation);
  678.         return $participations;
  679.     }
  680.     
  681.     public function getParticipationsDunFonds($id_fonds$demande_publication null$tri null) {
  682.         $sql $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_investissement_dun_fonds(['id_gestionnaire_fonds' => $id_fonds'demande_publication' => $demande_publication"tri" => $tri], "");
  683.         $params $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement(['id_gestionnaire_fonds' => $id_fonds]);
  684.         $query $this->em->createQuery($sql);
  685.         $query->setParameters($params);
  686.         $participations $query->getResult();
  687.         
  688.         $array_participation = [];
  689.         
  690.         foreach ($participations as $participation) {
  691.             $date_investissement_formated = isset($participation['date_investissement']) ? $participation['date_investissement'] : null;
  692.             $participation['date_dernier_investissement_formated'] =($date_investissement_formated)? substr($date_investissement_formated42) . "/" substr($date_investissement_formated04):null;
  693.             $participation['slug'] = Utils::slugify($participation['raison_sociale']);
  694.             $array_participation[] = $participation;
  695.         }
  696.         
  697.         return $participations;
  698.     }
  699.     
  700.     public function getFondsInvestissement($idFonds) {
  701.         $fonds $this->em->getRepository(FondsInvestissement::class)->findOneBy(['mode' => 'publique''id_gestionnaire_fonds' => $idFonds]);
  702.         if ($fonds) {
  703.             $id_pays $fonds->_get('id_pays') != "" $fonds->_get('id_pays') : null;
  704.             $id_region $fonds->_get('id_region') != "" $fonds->_get('id_region') : null;
  705.             $code_postal $fonds->_get('code_postal_societe') != "" $fonds->_get('code_postal_societe') : null;
  706.             if ($id_pays != "" && $id_pays == 33 && $id_region != "" && $code_postal != "") {
  707.                 $id_departement $id_region '_' substr($code_postal02);
  708.             } else {
  709.                 $id_departement null;
  710.             }
  711.             if ($id_region != null) {
  712.                 if (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_region ".png")) {
  713.                     $fonds->carte $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_region ".png";
  714.                 } elseif (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png")) {
  715.                     $fonds->carte $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png";
  716.                 } else {
  717.                     $fonds->carte $this->cdn_fusacq "/images/cartes/big/monde.png";
  718.                 }
  719.             } elseif ($id_pays != null) {
  720.                 if (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png")) {
  721.                     $fonds->carte $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png";
  722.                 } else {
  723.                     $fonds->carte $this->cdn_fusacq "/images/cartes/big/monde.png";
  724.                 }
  725.             }
  726.             $nom_pays "";
  727.             if ($id_pays) {
  728.                 $localisation $this->lm->getNomLocalisationById($id_pays);
  729.                 $nom_pays $localisation[0]['nom_localisation'];
  730.             }
  731.             $fonds->nom_pays $nom_pays;
  732.             $nom_localisation "";
  733.             if ($id_departement != null && preg_match('/[A-Za-z]/'$id_departement) == 0) {
  734.                 $localisation $this->lm->getNomLocalisationById($id_departement);
  735.                 if ($localisation) {
  736.                     for ($i count($localisation) - 1$i >= 0$i--) {
  737.                         $nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
  738.                     }
  739.                     $nom_localisation substr($nom_localisation0, -2);
  740.                 }
  741.             } elseif ($id_region != null && preg_match('/[A-Za-z]/'$id_region) == 0) {
  742.                 $localisation $this->lm->getNomLocalisationById($id_region);
  743.                 if ($localisation) {
  744.                     for ($i count($localisation) - 1$i >= 0$i--) {
  745.                         $nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
  746.                     }
  747.                     $nom_localisation substr($nom_localisation0, -2);
  748.                 }
  749.             } elseif ($id_pays != null) {
  750.                 $localisation $this->lm->getNomLocalisationById($id_pays);
  751.                 $nom_localisation $localisation[0]['nom_localisation'];
  752.             }
  753.             $fonds->_set('nom_localisation'$nom_localisation);
  754.             if ($fonds->_get('telephone') != "" && $fonds->_get('indicatif') != "") {
  755.                 $telephoneInternational $this->telephoneInternational->getInternationalPhone($fonds->_get('telephone'), $fonds->_get('indicatif'));
  756.                 $fonds->telephoneInternational $telephoneInternational['affichage'];
  757.             } else {
  758.                 $fonds->telephoneInternational "";
  759.             }
  760.             // localisation ciblée 
  761.             $regions_ciblees $fonds->_get('regions_ciblees');
  762.             if ($regions_ciblees != "") {
  763.                 $tab_cible array_filter(explode(","$regions_ciblees));
  764.                 $localisation_cible = [];
  765.                 foreach ($tab_cible as $cible) {
  766.                     $localisation $this->lm->getNomLocalisationById($cible);
  767.                     $nom_localisation = isset($localisation[count($localisation) - 1]['nom_localisation']) ? $localisation[count($localisation) - 1]['nom_localisation'] : "";
  768.                     $localisation_cible[$cible] = $nom_localisation;
  769.                 }
  770.                 $fonds->localisation_cible $localisation_cible;
  771.             } else {
  772.                 $fonds->localisation_cible = [];
  773.             }
  774.             if (Utils::url_exists("https://content.fusacq.com/static/raw-fusacq/css/images/fonds/vign_fi_$idFonds.jpg")) {
  775.                 $fonds->vignette "https://content.fusacq.com/static/raw-fusacq/css/images/fonds/vign_fi_$idFonds.jpg";
  776.             } else {
  777.                 $fonds->vignette "https://content.fusacq.com/static/raw-fusacq/css/images/logo_annu_fond_invest.gif";
  778.             }
  779.             
  780.             if ($fonds->_get('site_internet') != null) {
  781.                 if (strpos($fonds->_get('site_internet'), 'http') === false) {
  782.                     $fonds->href_site_internet "http://" $fonds->_get('site_internet');
  783.                 } else {
  784.                     $fonds->href_site_internet $fonds->_get('site_internet');
  785.                 }
  786.             } else {
  787.                 $fonds->href_site_internet "";
  788.             }
  789.         }
  790.         return $fonds;
  791.     }
  792.     /**
  793.      * @param int $idSociete
  794.      * @return Societes $societe
  795.      */
  796.     public function getSocieteById($idSociete$lang 'fr') {
  797.         $societe $this->em->getRepository(Societes::class)->findOneBy(['id_societe' => $idSociete]);
  798.         if (isset($societe)) {
  799.             if ($societe->_get('date_dernier_investissement') != null) {
  800.                 $date_dernier_investissement = \DateTime::createFromFormat("Ym"$societe->_get('date_dernier_investissement'));
  801.                 if ($date_dernier_investissement) {
  802.                     $societe->date_dernier_investissement_formated $date_dernier_investissement->format('m/Y');
  803.                 } else {
  804.                     $societe->date_dernier_investissement_formated "N.C";
  805.                 }
  806.             } else {
  807.                 $societe->date_dernier_investissement_formated "N.C";
  808.             }
  809.             $id_pays $societe->_get('id_pays');
  810.             $id_region $societe->_get('id_region');
  811.             $code_postal $societe->_get('code_postal');
  812.             if ($id_pays != "" && $id_pays == 33 && $id_region != "" && $code_postal != "") {
  813.                 $id_departement $id_region '_' substr($code_postal02);
  814.             } else {
  815.                 $id_departement null;
  816.             }
  817.             if ($id_region != null) {
  818.                 if (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_region ".png")) {
  819.                     $societe->carte $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_region ".png";
  820.                     /* // Si le département n'est pas confidentiel, on affiche la carte de la région
  821.                       if (substr($id_departement, -3) != "_99") {
  822.                       $societe->_get('carte = $this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_region.".png";
  823.                       } else {
  824.                       // Sinon on regarde si la carte confidentielle existe pour ce pays, si oui on l'affiche
  825.                       if (Utils::url_exists($this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_pays."_99.png")) {
  826.                       $societe->_get('carte = $this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_pays."_99.png";
  827.                       } else {
  828.                       $societe->_get('carte = $this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_pays."_blanc.png";
  829.                       }
  830.                       } */
  831.                 } elseif (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png")) {
  832.                     $societe->carte $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png";
  833.                 } else {
  834.                     $societe->carte $this->cdn_fusacq "/images/cartes/big/monde.png";
  835.                 }
  836.             } elseif ($id_pays != null) {
  837.                 if (Utils::url_exists($this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png")) {
  838.                     $societe->carte $this->cdn_fusacq "/static/help-fusacq/fr/images/cartes/pays/" $id_pays "/" $id_pays ".png";
  839.                 } else {
  840.                     $societe->carte $this->cdn_fusacq "/images/cartes/big/monde.png";
  841.                 }
  842.             }
  843.             if ($id_departement != null) {
  844.                 $localisation $this->lm->getNomLocalisationById($id_departement);
  845.                 $nom_localisation "";
  846.                 for ($i count($localisation) - 1$i >= 0$i--) {
  847.                     $nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
  848.                 }
  849.                 $nom_localisation substr($nom_localisation0, -2);
  850.             } elseif ($id_region != null) {
  851.                 $localisation $this->lm->getNomLocalisationById($id_region);
  852.                 $nom_localisation "";
  853.                 for ($i count($localisation) - 1$i >= 0$i--) {
  854.                     $nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
  855.                 }
  856.                 $nom_localisation substr($nom_localisation0, -2);
  857.             } elseif ($id_pays != null && $id_pays != "null") {
  858.                 $localisation $this->lm->getNomLocalisationById($id_pays);
  859.                 $nom_localisation $localisation[0]['nom_localisation'];
  860.             } else {
  861.                 $nom_localisation "";
  862.             }
  863.             $societe->nom_localisation $nom_localisation;
  864.             foreach ($localisation as $niveau => $loc) {
  865.                 $nom_niveau "nom_localisation_niveau_" $niveau;
  866.                 $id_niveau "id_localisation_niveau_" $niveau;
  867.                 $societe->$nom_niveau $loc['nom_localisation'];
  868.                 $societe->$id_niveau $loc['id_localisation'];
  869.             }
  870.             if (!isset($societe->nom_localisation_niveau_0)) {
  871.                 $societe->nom_localisation_niveau_0 "";
  872.                 $societe->id_localisation_niveau_0 "";
  873.             }
  874.             if (!isset($societe->nom_localisation_niveau_1)) {
  875.                 $societe->nom_localisation_niveau_1 "";
  876.                 $societe->id_localisation_niveau_1 "";
  877.             }
  878.             if (!isset($societe->nom_localisation_niveau_2)) {
  879.                 $societe->nom_localisation_niveau_2 "";
  880.                 $societe->id_localisation_niveau_2 "";
  881.             }
  882.             $ca $societe->_get('ca_n');
  883.             if ($ca != null) {
  884.                 $societe->_set('ca_n'substr($ca0strpos($ca".")));
  885.             }
  886.             if (is_numeric($societe->_get('numero_siren'))) {
  887.                 $societe->lien_societe_com 'http://www.societe.com/societe/' Utils::slugify($societe->_get('raison_sociale')) . '-' $societe->_get('numero_siren') . '.html';
  888.             } else {
  889.                 $societe->lien_societe_com "";
  890.             }
  891.             $infoParticipation $this->getInfoParticipationAssocie($idSociete);
  892.             if ($infoParticipation) {
  893.                 $societe->lienParticipation '/participation-' Utils::slugify($infoParticipation['raison_sociale']) . ',' $infoParticipation['id_societe'];
  894.             } else {
  895.                 $societe->lienParticipation '';
  896.             }
  897.             $slug $societe->_get('resume_activite') ? Utils::slugify($societe->_get('resume_activite')) : "sans-resume";
  898.             $societe->slug $slug;
  899.             if ($societe->_get('resume_activite') == null || $societe->_get('resume_activite') == "null") {
  900.                 if ($societe->_get('id_region') != null && $societe->_get('id_region') != "choisir" && $societe->_get('id_pays') == 33) {
  901.                     $localisation_societe $this->localisationsRepository->findOneBy(['id_localisation' => $societe->_get('id_region')]);
  902.                 } else {
  903.                     $localisation_societe $this->localisationsRepository->findOneBy(['id_localisation' => $societe->_get('id_pays')]);
  904.                 }
  905.                 $arrayVarsTrans = array();
  906.                 if (!empty($localisation_societe)) {
  907.                     $arrayVarsTrans = [
  908.                         "prefixe" => $localisation_societe->__get('prefixe'),
  909.                         "nom_localisation" => $localisation_societe->__get('nom_localisation')
  910.                     ];
  911.                 }
  912.                 $societe->_set('resume_activite'$this->translationExtension->translate('société basée %$prefixe%$ %$nom_localisation%$'$lang"""M"""$arrayVarsTrans));
  913.             }
  914.             
  915.             $societe->arrondi_ca $this->donne_arrondi_CA($societe->_get('ca_n'));
  916.             $this->em->detach($societe);
  917.             return $societe;
  918.         } else {
  919.             return null;
  920.         }
  921.     }
  922.     public function getTableauActionnairesInstitutionnelsParticipation($idParticipation$lang) {
  923.         $tableau $this->em->getRepository(Societes::class)->donne_tableau_actionnaires_institutionnels_participation($idParticipation);
  924.         for ($i 0$i count($tableau); $i++) {
  925.             if (isset($tableau[$i]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/'$tableau[$i]["date_investissement"]) > 0) {
  926.                 if (strlen($tableau[$i]["date_investissement"]) == 6) {
  927.                     $mois DateProvider::donne_nom_mois(substr($tableau[$i]["date_investissement"], 42));
  928.                     if ($lang != "fr") {
  929.                         $mois $this->translationExtension->translate($mois$lang);
  930.                     }
  931.                     $tableau[$i]['mois_investissement'] = $mois;
  932.                 } else {
  933.                     $tableau[$i]['mois_investissement'] = "";
  934.                 }
  935.             } else {
  936.                 $tableau[$i]['mois_investissement'] = "";
  937.             }
  938.         }
  939.         return $tableau;
  940.     }
  941.     public function getTableauActionnairesInstitutionnelsParticipationArchive($idParticipation$lang) {
  942.         $tableau $this->em->getRepository(Societes::class)->donne_tableau_actionnaires_institutionnels_participation_archive($idParticipation);
  943.         for ($i 0$i count($tableau); $i++) {
  944.             if (isset($tableau[$i]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/'$tableau[$i]["date_investissement"]) > 0) {
  945.                 if (strlen($tableau[$i]["date_investissement"]) == 6) {
  946.                     $mois DateProvider::donne_nom_mois(substr($tableau[$i]["date_investissement"], 42));
  947.                     if ($lang != "fr") {
  948.                         $mois $this->translationExtension->translate($mois$lang);
  949.                     }
  950.                     $tableau[$i]['mois_investissement'] = $mois;
  951.                 } else {
  952.                     $tableau[$i]['mois_investissement'] = "";
  953.                 }
  954.             } else {
  955.                 $tableau[$i]['mois_investissement'] = "";
  956.             }
  957.         }
  958.         return $tableau;
  959.     }
  960.     public function calcul_numero_image_cadran($tab_actionnaires) {
  961.         $date date('Ymd');
  962.         //S'il n'y a qu'un actionnaire, on regarde depuis combien d'années il a investit dans la société
  963.         if (count($tab_actionnaires) == 1) {
  964.             if (isset($tab_actionnaires[0]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/'$tab_actionnaires[0]["date_investissement"]) > 0) {
  965.                 if (strlen($tab_actionnaires[0]["date_investissement"]) == 6) {
  966.                     $date_inv $tab_actionnaires[0]["date_investissement"];
  967.                 } else {
  968.                     $date_inv substr($tab_actionnaires[0]["date_investissement"], 04) . "01";
  969.                 }
  970.                 $nb_mois DateProvider::donne_difference_mois(substr($date06), $date_inv);
  971.                 $nb_annees = (int) round($nb_mois 12);
  972.                 if ($nb_annees 9) {
  973.                     $numero_cadran 9;
  974.                 } else {
  975.                     $numero_cadran $nb_annees;
  976.                 }
  977.             } else {
  978.                 $numero_cadran = -1;
  979.             }
  980.         }
  981.         //S'il y en a plusieurs, il y a deux possibilités
  982.         else {
  983.             $bool_aucune_date_definie true;
  984.             $bool_tous_les_montants_definis true;
  985.             $bool_date_unique true;
  986.             if (isset($tab_actionnaires[0]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/'$tab_actionnaires[0]["date_investissement"]) > 0) {
  987.                 if (strlen($tab_actionnaires[0]["date_investissement"]) == 6) {
  988.                     $date_investissement $tab_actionnaires[0]["date_investissement"];
  989.                 } else {
  990.                     $date_investissement substr($tab_actionnaires[0]["date_investissement"], 04) . "01";
  991.                 }
  992.             } else {
  993.                 $date_investissement "000000";
  994.             }
  995.             //On parcourt le tableau pour savoir si tous les montants sont définis
  996.             for ($i 0$i count($tab_actionnaires); $i++) {
  997.                 if ($i != 0) {
  998.                     if (isset($tab_actionnaires[$i]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/'$tab_actionnaires[$i]["date_investissement"]) > 0) {
  999.                         if (strlen($tab_actionnaires[$i]["date_investissement"]) == 6) {
  1000.                             $date_investissement_i $tab_actionnaires[$i]["date_investissement"];
  1001.                         } else {
  1002.                             $date_investissement_i substr($tab_actionnaires[$i]["date_investissement"], 04) . "01";
  1003.                         }
  1004.                     } else {
  1005.                         $date_investissement_i "000000";
  1006.                     }
  1007.                     $diff_annees = (int) round(DateProvider::donne_difference_mois($date_investissement$date_investissement_i) / 12);
  1008.                     if ($diff_annees 0) {
  1009.                         $bool_date_unique false;
  1010.                     }
  1011.                 }
  1012.                 if (isset($tab_actionnaires[$i]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/'$tab_actionnaires[$i]["date_investissement"]) > 0) {
  1013.                     $bool_aucune_date_definie false;
  1014.                 }
  1015.                 if (!isset($tab_actionnaires[$i]["montant_investi"]) || $tab_actionnaires[$i]["montant_investi"] == null) {
  1016.                     $bool_tous_les_montants_definis false;
  1017.                 }
  1018.             }
  1019.             if (!$bool_aucune_date_definie) {
  1020.                 //1ere possibilité : Soit on n'a pas tous les montants des investissements
  1021.                 if (!$bool_tous_les_montants_definis) {
  1022.                     //Les investissements ont la même date, alors le calcul est pareil que pour 1 seul investissemnt
  1023.                     if ($bool_date_unique) {
  1024.                         if (isset($tab_actionnaires[0]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/'$tab_actionnaires[0]["date_investissement"]) > 0) {
  1025.                             if (strlen($tab_actionnaires[0]["date_investissement"]) == 6) {
  1026.                                 $date_inv $tab_actionnaires[0]["date_investissement"];
  1027.                             } else {
  1028.                                 $date_inv substr($tab_actionnaires[0]["date_investissement"], 04) . "01";
  1029.                             }
  1030.                             $diff_annees = (int) round(DateProvider::donne_difference_mois(substr($date06), $date_inv) / 12);
  1031.                             if ($diff_annees 9) {
  1032.                                 $numero_cadran 9;
  1033.                             } else {
  1034.                                 $numero_cadran $diff_annees;
  1035.                             }
  1036.                         } else {
  1037.                             $numero_cadran = -1;
  1038.                         }
  1039.                     } else {
  1040.                         //sinon derniere date + 1
  1041.                         if (isset($tab_actionnaires[0]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/'$tab_actionnaires[0]["date_investissement"]) > 0) {
  1042.                             if (strlen($tab_actionnaires[0]["date_investissement"]) == 6) {
  1043.                                 $date_inv $tab_actionnaires[0]["date_investissement"];
  1044.                             } else {
  1045.                                 $date_inv substr($tab_actionnaires[0]["date_investissement"], 04) . "01";
  1046.                             }
  1047.                             $diff_annees = (int) round(DateProvider::donne_difference_mois(substr($date06), $date_inv) / 12) + 1;
  1048.                             if ($diff_annees 9) {
  1049.                                 $numero_cadran 9;
  1050.                             } else {
  1051.                                 $numero_cadran $diff_annees;
  1052.                             }
  1053.                         } else {
  1054.                             $numero_cadran = -1;
  1055.                         }
  1056.                     }
  1057.                 }
  1058.                 //Soit on a tous les montants des investissements
  1059.                 else {
  1060.                     if ($bool_date_unique) {
  1061.                         if (isset($tab_actionnaires[0]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/'$tab_actionnaires[0]["date_investissement"]) > 0) {
  1062.                             if (strlen($tab_actionnaires[0]["date_investissement"]) == 6) {
  1063.                                 $date_inv $tab_actionnaires[0]["date_investissement"];
  1064.                             } else {
  1065.                                 $date_inv substr($tab_actionnaires[0]["date_investissement"], 04) . "01";
  1066.                             }
  1067.                             $diff_annees = (int) round(DateProvider::donne_difference_mois(substr($date06), $date_inv) / 12);
  1068.                             if ($diff_annees 9) {
  1069.                                 $numero_cadran 9;
  1070.                             } else {
  1071.                                 $numero_cadran $diff_annees;
  1072.                             }
  1073.                         } else {
  1074.                             $numero_cadran = -1;
  1075.                         }
  1076.                     } else {
  1077.                         $cpt_montant 0;
  1078.                         $moyenne 0;
  1079.                         //Calcul du "barycentre" au niveau des date_investissement en fonction des montants investis
  1080.                         for ($i 0$i count($tab_actionnaires); $i++) {
  1081.                             //On n'ajoute les donnees que si la date d'investissement est bien precisee
  1082.                             if (isset($tab_actionnaires[$i]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/'$tab_actionnaires[$i]["date_investissement"]) > 0) {
  1083.                                 $cpt_montant += $tab_actionnaires[$i]["montant_investi"];
  1084.                                 if (strlen($tab_actionnaires[$i]["date_investissement"]) == 6) {
  1085.                                     $date_inv $tab_actionnaires[$i]["date_investissement"];
  1086.                                 } else {
  1087.                                     $date_inv substr($tab_actionnaires[$i]["date_investissement"], 04) . "01";
  1088.                                 }
  1089.                                 $duree_investissement = (int) round(DateProvider::donne_difference_mois(substr($date06), $date_inv) / 12);
  1090.                                 $moyenne += ($tab_actionnaires[$i]["montant_investi"] * $duree_investissement);
  1091.                             }
  1092.                         }
  1093.                         $moyenne_durees = (int) round($moyenne $cpt_montant);
  1094.                         if ($moyenne_durees 9) {
  1095.                             $numero_cadran 9;
  1096.                         } else {
  1097.                             $numero_cadran $moyenne_durees;
  1098.                         }
  1099.                     }
  1100.                 }
  1101.             } else {
  1102.                 $numero_cadran = -1;
  1103.             }
  1104.         }
  1105.         return $numero_cadran;
  1106.     }
  1107.     public function donne_option_select_pays_cible_potentielle($id_pays_connexion 33) {
  1108.         $pays $this->em->getRepository(Societes::class)->donne_option_select_pays_cible_potentielle($id_pays_connexion);
  1109.         $options = ['Tous' => 0];
  1110.         foreach ($pays as $p) {
  1111.             if ($p['nom_localisation'] != null) {
  1112.                 $options array_merge($options, [$p['nom_localisation'] => 'p' $p['id_localisation']]);
  1113.             }
  1114.         }
  1115.         return $options;
  1116.     }
  1117.     public function donne_option_select_pays_acquereur_historique($id_pays_connexion 33) {
  1118.         $pays $this->em->getRepository(Societes::class)->donne_option_select_pays_acquereur_historique($id_pays_connexion);
  1119.         $options = ['Tous' => 0];
  1120.         foreach ($pays as $p) {
  1121.             if ($p['nom_localisation'] != null) {
  1122.                 $options array_merge($options, [$p['nom_localisation'] => 'p' $p['id_localisation']]);
  1123.             }
  1124.         }
  1125.         return $options;
  1126.     }
  1127.     public function donne_option_select_pays_fonds_investissement($id_pays_connexion 33) {
  1128.         $pays $this->em->getRepository(Societes::class)->donne_option_select_pays_fonds_investissement($id_pays_connexion);
  1129.         $options = ['Tous' => 0];
  1130.         foreach ($pays as $p) {
  1131.             if ($p['nom_localisation'] != null) {
  1132.                 $options array_merge($options, [$p['nom_localisation'] => 'p' $p['id_localisation']]);
  1133.             }
  1134.         }
  1135.         return $options;
  1136.     }
  1137.     public function getInfoParticipationAssocie($idSocieteNews) {
  1138.         $queryBuilder $this->em->createQueryBuilder();
  1139.         $query $queryBuilder->select(
  1140.                         array(
  1141.                             "societes.raison_sociale",
  1142.                             "societes.id_societe",
  1143.                             "lienParticipationsFonds.id_gestionnaire_fonds",
  1144.                         ))
  1145.                 ->from('App\Entity\Societes''societes')
  1146.                 ->leftJoin('App\Entity\LienParticipationsFonds''lienParticipationsFonds''WITH''societes.id_societe = lienParticipationsFonds.id_participation')
  1147.                 ->Where('societes.id_societe = :idSocieteNews')
  1148.                 ->andWhere('lienParticipationsFonds.id_gestionnaire_fonds <> :null')
  1149.                 ->setParameter('idSocieteNews'$idSocieteNews)
  1150.                 ->setParameter('null''null')
  1151.                 ->setMaxResults(10000)
  1152.                 ->getQuery();
  1153.         $liste $query->getResult();
  1154.         if ($liste) {
  1155.             $result $liste[0];
  1156.         } else {
  1157.             $result null;
  1158.         }
  1159.         return $result;
  1160.     }
  1161.     public function getActualiteSocieteParIdSociete($idSocieteNews) {
  1162.         $queryBuilder $this->em->createQueryBuilder();
  1163.         $query $queryBuilder->select(
  1164.                         array(
  1165.                             "distinct (buzzRoles.id_operation)",
  1166.                             "buzzActualites.id_actualite",
  1167.                             "buzzActualites.date_mise_en_ligne",
  1168.                             "buzzActualites.titre_actualite",
  1169.                             "buzzActualites.provenance_flux_actualite",
  1170.                             "buzzActualites.autorisation_blog"
  1171.                         ))
  1172.                 ->from('App\Entity\BuzzRoles''buzzRoles')
  1173.                 ->leftJoin('App\Entity\BuzzActualites''buzzActualites''WITH''buzzRoles.id_operation = buzzActualites.id_operation')
  1174.                 ->Where('buzzActualites.mode_actualite = :modePublique')
  1175.                 ->andWhere('buzzActualites.date_mise_en_ligne <= :maDate')
  1176.                 ->andWhere('buzzActualites.autorisation_blog <> :tagConfidentiel')
  1177.                 ->andWhere($queryBuilder->expr()->orX(
  1178.                                 $queryBuilder->expr()->andX(
  1179.                                         $queryBuilder->expr()->eq('buzzRoles.id_acteur'"'" $idSocieteNews "'"),
  1180.                                         $queryBuilder->expr()->eq('buzzRoles.table_sql_acteur'"'societes_news'")
  1181.                                 ),
  1182.                                 $queryBuilder->expr()->andX(
  1183.                                         $queryBuilder->expr()->eq('buzzRoles.id_acteur_passif'"'" $idSocieteNews "'"),
  1184.                                         $queryBuilder->expr()->eq('buzzRoles.table_sql_acteur_passif'"'societes_news'"))
  1185.                         )
  1186.                 )
  1187.                 ->setParameter('maDate'date("Ymd"))
  1188.                 ->setParameter('modePublique''publique')
  1189.                 ->setParameter('tagConfidentiel''non')
  1190.                 ->orderBy('buzzActualites.date_mise_en_ligne''DESC')
  1191.                 ->setMaxResults(10000)
  1192.                 ->getQuery();
  1193.         $result $query->getResult();
  1194.         $actus = [];
  1195.         foreach ($result as $r) {
  1196.             $r['date_formated'] = DateProvider::donne_date_format_affichage($r['date_mise_en_ligne']);
  1197.             $r['url_actualite'] = 'https://www.fusacq.com/buzz/' Utils::slugify($r['titre_actualite']) . '-a' $r['id_actualite'] . '';
  1198.             $actus[] = $r;
  1199.         }
  1200.         return $actus;
  1201.     }
  1202.     public function getActualitePrincipaleSocieteParIdSociete($idSocieteNews) {
  1203.         $queryBuilder $this->em->createQueryBuilder();
  1204.         $query $queryBuilder->select(
  1205.                         array(
  1206.                             "distinct (buzzActualites.id_actualite)",
  1207.                             "buzzActualites.id_actualite",
  1208.                             "buzzActualites.date_mise_en_ligne",
  1209.                             "buzzActualites.titre_actualite",
  1210.                             "buzzActualites.provenance_flux_actualite",
  1211.                             "buzzActualites.autorisation_blog"
  1212.                         ))
  1213.                 ->from('App\Entity\BuzzRoles''buzzRoles')
  1214.                 ->join('App\Entity\BuzzOperations''buzzOperations''WITH''buzzOperations.id_operation = buzzRoles.id_operation')
  1215.                 ->join('App\Entity\BuzzActualites''buzzActualites''WITH''buzzOperations.id_actualite_principale = buzzActualites.id_actualite')
  1216.                 ->Where('buzzActualites.mode_actualite = :modePublique')
  1217.                 ->andWhere('buzzRoles.id_type_role = :id_type_role')
  1218.                 ->andWhere('buzzOperations.type_operation = :type_operation')
  1219.                 ->andWhere('buzzActualites.date_mise_en_ligne <= :maDate')
  1220.                 //->andWhere('buzzActualites.autorisation_blog <> :tagConfidentiel')
  1221.                 ->andWhere($queryBuilder->expr()->orX(
  1222.                                 $queryBuilder->expr()->andX(
  1223.                                         $queryBuilder->expr()->eq('buzzRoles.id_acteur'":idActeur"),
  1224.                                         $queryBuilder->expr()->eq('buzzRoles.table_sql_acteur'"'societes_news'")
  1225.                                 ),
  1226.                                 $queryBuilder->expr()->andX(
  1227.                                         $queryBuilder->expr()->eq('buzzRoles.id_acteur_passif'":idActeurPassif"),
  1228.                                         $queryBuilder->expr()->eq('buzzRoles.table_sql_acteur_passif'"'societes_news'"))
  1229.                         )
  1230.                 )
  1231.                 ->setParameter('id_type_role'1)
  1232.                 ->setParameter('type_operation''fusion_acquisition')
  1233.                 ->setParameter('maDate'date("Ymd"))
  1234.                 ->setParameter('modePublique''publique')
  1235.                 //->setParameter('tagConfidentiel','non')
  1236.                 ->setParameter('idActeur'$idSocieteNews)
  1237.                 ->setParameter('idActeurPassif'$idSocieteNews)
  1238.                 ->orderBy('buzzActualites.date_mise_en_ligne''DESC')
  1239.                 ->setMaxResults(10000)
  1240.                 ->getQuery();
  1241.         $result $query->getResult();
  1242.         $actus = [];
  1243.         foreach ($result as $r) {
  1244.             $r['date_formated'] = DateProvider::donne_date_format_affichage($r['date_mise_en_ligne']);
  1245.             $r['url_actualite'] = 'https://www.fusacq.com/buzz/' Utils::slugify($r['titre_actualite']) . '-a' $r['id_actualite'] . '';
  1246.             $actus[] = $r;
  1247.         }
  1248.         return $actus;
  1249.     }
  1250.     public function getStadesInvestissement($lang "FR") {
  1251.         $tab_stade_invest = array(
  1252.             "",
  1253.             $this->translationExtension->translate("amorçage"$lang"""M"),
  1254.             $this->translationExtension->translate("capital risque"$lang"""M"),
  1255.             $this->translationExtension->translate("capital developpement"$lang"""M"),
  1256.             $this->translationExtension->translate("transmissions - LBO"$lang"""M"),
  1257.             $this->translationExtension->translate("mezzanine"$lang"""M"),
  1258.             $this->translationExtension->translate("retournement"$lang"""M"),
  1259.             $this->translationExtension->translate("fonds de fonds"$lang"""M")
  1260.         );
  1261.         return $tab_stade_invest;
  1262.     }
  1263.     public function getIdParticipationsFondsList(array $filter = [], $type '') {
  1264.         $sql $this->em->getRepository(Societes::class)->donne_requete_SQL_pour_tableau_id_participations_fonds($filter$type);
  1265.         $params $this->em->getRepository(Societes::class)->prepareParameters($filter);
  1266.         $query $this->em->createQuery($sql);
  1267.         $query->setParameters($params);
  1268.         return $query->getResult();
  1269.     }
  1270.     public function getIdAcquereurHistoriqueList(array $filter = []) {
  1271.         $sql $this->em->getRepository(Societes::class)->donne_requete_SQL_pour_tableau_id_acquereur_historique($filter);
  1272.         $params $this->em->getRepository(Societes::class)->prepareParametersAcquereurHistorique($filter);
  1273.         //dd($sql, $params);
  1274.         $query $this->em->createQuery($sql);
  1275.         $query->setParameters($params);
  1276.         return $query->getResult();
  1277.     }
  1278.     public function getIdAcquereurInvestisseurList(array $filter = []) {
  1279.         $sql $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_id_acquereur_investisseur($filter"");
  1280.         $params $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement($filter);
  1281.         $query $this->em->createQuery($sql);
  1282.         $query->setParameters($params);
  1283.         return $query->getResult();
  1284.     }
  1285.     public function getIdFondsInvestissementList(array $filter = []) {
  1286.         $sql $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_id_fonds_investissement($filter"");
  1287.         $params $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement($filter);
  1288.         $query $this->em->createQuery($sql);
  1289.         $query->setParameters($params);
  1290.         return $query->getResult();
  1291.     }
  1292.     public function donne_tableau_nb_cible_potentielle_par_region($id_pays 33) {
  1293.         $nb_cible_potentielle_par_region $this->em->getRepository(Participation::class)->donne_nb_cibles_potentielles_par_region($id_pays);
  1294.         $array_annonce_region = [];
  1295.         foreach ($nb_cible_potentielle_par_region as $id_region => $nb) {
  1296.             $region $this->localisationsRepository->findOneBy(['id_localisation' => $id_region]);
  1297.             
  1298.             if ($region) {
  1299.                 $row = [
  1300.                     'nb' => $nb,
  1301.                     'nom' => $region->__get('nom_localisation'),
  1302.                     'prefixe' => $region->__get('prefixe')
  1303.                 ];
  1304.                 
  1305.                 $array_annonce_region[$id_region] = $row;
  1306.             }
  1307.         }
  1308.         uasort($array_annonce_region, function ($a$b) {
  1309.             return $a['nom'] < $b['nom'] ? -1;
  1310.         });
  1311.         return $array_annonce_region;
  1312.     }
  1313.     public function donne_tableau_acquereur_historique_par_region_dun_pays($id_pays 33) {
  1314.         $regions $this->lm->getRegionsByCountry($id_pays);
  1315.         $array_annonce_region = [];
  1316.         foreach ($regions as $region) {
  1317.             $nb $this->em->getRepository(Participation::class)->donne_nb_acquereurs_historiques_par_localisation($region['id_localisation'])[1];
  1318.             $row = [
  1319.                 'nb' => $nb,
  1320.                 'nom' => $region['nom_localisation'],
  1321.                 'prefixe' => $region['prefixe']
  1322.             ];
  1323.             $array_annonce_region[$region['id_localisation']] = $row;
  1324.         }
  1325.         uasort($array_annonce_region, function ($a$b) {
  1326.             return $a['nom'] < $b['nom'] ? -1;
  1327.         });
  1328.         return $array_annonce_region;
  1329.     }
  1330.     public function donne_tableau_acquereur_historique_par_region($id_pays 33) {
  1331.         $nb_acquereur_historique_par_region $this->em->getRepository(Participation::class)->donne_nb_acquereurs_historiques_par_region($id_pays);
  1332.         $array_annonce_region = [];
  1333.         foreach ($nb_acquereur_historique_par_region as $id_region => $nb) {
  1334.             $region $this->localisationsRepository->findOneBy(['id_localisation' => $id_region]);
  1335.             $row = [
  1336.                 'nb' => $nb,
  1337.                 'nom' => $region->__get('nom_localisation'),
  1338.                 'prefixe' => $region->__get('prefixe')
  1339.             ];
  1340.             $array_annonce_region[$id_region] = $row;
  1341.         }
  1342.         uasort($array_annonce_region, function ($a$b) {
  1343.             return $a['nom'] < $b['nom'] ? -1;
  1344.         });
  1345.         return $array_annonce_region;
  1346.     }
  1347.     public function donne_tableau_participation_fonds_par_region($id_pays 33) {
  1348.         $nb_acquereur_historique_par_region $this->em->getRepository(Participation::class)->donne_nb_participation_fonds_par_region($id_pays);
  1349.         $array_annonce_region = [];
  1350.         foreach ($nb_acquereur_historique_par_region as $id_region => $nb) {
  1351.             $region $this->localisationsRepository->findOneBy(['id_localisation' => $id_region]);
  1352.             
  1353.             if ($region) {
  1354.                 $row = [
  1355.                     'nb' => $nb,
  1356.                     'nom' => $region->__get('nom_localisation'),
  1357.                     'prefixe' => $region->__get('prefixe')
  1358.                 ];
  1359.                 
  1360.                 $array_annonce_region[$id_region] = $row;
  1361.             }
  1362.         }
  1363.         uasort($array_annonce_region, function ($a$b) {
  1364.             return $a['nom'] < $b['nom'] ? -1;
  1365.         });
  1366.         return $array_annonce_region;
  1367.     }
  1368.     /**
  1369.      * 
  1370.      * @param type $siren
  1371.      * @param type $mode
  1372.      * @return type
  1373.      */
  1374.     public function checkSocieteExistBySiren($siren$mode null) {
  1375.         return $this->em->getRepository(Societes::class)->checkSocieteExistBySiren($siren$mode);
  1376.     }
  1377.     /**
  1378.      * 
  1379.      * @param type $siren
  1380.      * @param type $data
  1381.      * @Descrition return societe by SIREN, create if not exist
  1382.      * @return \App\Services\ManagerEntity\societe
  1383.      */
  1384.     public function getSocieteBySiren($siren, ...$data) {
  1385.         $societe $this->em->getRepository(Societes::class)->findOneBy(["numero_siren" => $siren]);
  1386.         if (! $societe ) { // si introuvable , on cree de nouveau
  1387.             $societe = new $societe();
  1388.             $societe->_set("numero_siren",$siren);
  1389.             $societe->_set("mode_societe","temporaire");
  1390.             $societe->_set("src_image_si_artviper_desactive","https://content.fusacq.com/static/dev-fusacq/buzz/images/spacer.gif");
  1391.             if( $data &&  array_key_exists("raison_sociale"$data)){
  1392.                   $societe->_set("raison_sociale",$data["raison_sociale"]);
  1393.             }
  1394.             $this->em->persist($societe);
  1395.             $this->em->flush();
  1396.         }
  1397.         return $societe;
  1398.     }
  1399.     
  1400.     public function donne_tableau_nb_fonds_investissement_par_region($id_pays 33) {
  1401.         $nb_fonds_investissement_par_region $this->em->getRepository(Participation::class)->donne_nb_fonds_investissement_par_region($id_pays);
  1402.         $array_annonce_region = [];
  1403.         
  1404.         foreach ($nb_fonds_investissement_par_region as $id_region => $nb) {
  1405.             $region $this->localisationsRepository->findOneBy(['id_localisation' => $id_region]);
  1406.             
  1407.             if ($region) {
  1408.                 $row = [
  1409.                     'nb' => $nb,
  1410.                     'nom' => $region->__get('nom_localisation'),
  1411.                     'prefixe' => $region->__get('prefixe')
  1412.                 ];
  1413.                 
  1414.                 $array_annonce_region[$id_region] = $row;
  1415.             }
  1416.         }
  1417.         
  1418.         uasort($array_annonce_region, function ($a$b) {
  1419.             return $a['nom'] < $b['nom'] ? -1;
  1420.         });
  1421.             
  1422.         return $array_annonce_region;
  1423.     }
  1424.     
  1425.     public function donne_arrondi_CA ($ca) {
  1426.         $arrondi "";
  1427.         
  1428.         if ($ca 1000) {
  1429.             $arrondi round($ca 10) * 10;
  1430.         } elseif ($ca 10000) {
  1431.             $arrondi round($ca 1000) * 1000;
  1432.         } elseif ($ca 100000) {
  1433.             $arrondi round($ca 5000) * 5000;
  1434.         } elseif ($ca 100000) {
  1435.             $arrondi round($ca 10000) * 10000;
  1436.         }
  1437.         
  1438.         return $arrondi;
  1439.     }
  1440. }
  1441.