src/Controller/AnnuaireFondsInvestissementController.php line 588

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * @author Raymond
  5.  */
  6. namespace App\Controller;
  7. use App\Services\MetaTag;
  8. use App\Services\LogMarketingProvider;
  9. use App\Services\Encryptage\AesEncrytageStrategy;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Knp\Component\Pager\PaginatorInterface;
  13. use App\Twig\TranslationExtension;
  14. use App\Helper\Utils;
  15. use App\Helper\ParametersProvider;
  16. use App\Services\ManagerEntity\SocietesManagers;
  17. use App\Services\ManagerEntity\LocalisationsManagers;
  18. use App\Repository\SocietesRepository;
  19. use App\Services\ManagerEntity\BuzzManagers;
  20. use App\Services\ManagerEntity\DroitsAccesManagers;
  21. use App\Form\Models\ContactezDirectementFondsInvestissement;
  22. use App\Form\Type\ContactezDirectementFondsInvestissementType;
  23. use App\Entity\Societes;
  24. use App\Services\ManagerEntity\SecteursActiviteManagers;
  25. use App\Services\ManagerEntity\ParametreSiteManagers;
  26. use App\Services\ManagerEntity\ContactGenerauxManagers;
  27. use Symfony\Component\Form\Extension\Core\Type\ButtonType;
  28. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  29. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  30. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  31. use Symfony\Component\Form\Extension\Core\Type\TextType;
  32. use Symfony\Component\Form\Forms;
  33. use App\Entity\SocieteGestionnaireFonds;
  34. use Doctrine\ORM\EntityManagerInterface;
  35. use App\Form\SocieteGestionnaireFondsFormType;
  36. use App\Helper\ConversionProvider;
  37. use App\Services\CodeAccesService;
  38. use App\Services\GoogleTag;
  39. use App\Entity\Panier;
  40. use App\Repository\CommandesRepository;
  41. class AnnuaireFondsInvestissementController extends EntityUsingController
  42. {
  43.     /**
  44.      * @var SocietesManagers
  45.      */
  46.     private $sm;
  47.     /**
  48.      * @var DroitsAccesManagers
  49.      */
  50.     private  $dam;
  51.     /**
  52.      * @var MetaTag
  53.      */
  54.     private $metaTag;
  55.     /**
  56.      * @var LogMarketingProvider
  57.      */
  58.     private $lmp;
  59.     /**
  60.      * @var ContactGenerauxManagers
  61.      */
  62.     private $cgm;
  63.     /**
  64.      * @var EntityManagerInterface
  65.      */
  66.     private $em;
  67.     
  68.     public function __construct(SocietesManagers $smDroitsAccesManagers $damMetaTag $metaTagLogMarketingProvider $lmpContactGenerauxManagers $cgmEntityManagerInterface $em)
  69.     {
  70.         $this->sm $sm;
  71.         $this->dam $dam;
  72.         $this->metaTag $metaTag;
  73.         $this->lmp $lmp;
  74.         $this->cgm $cgm;
  75.         $this->em $em;
  76.     }
  77.     
  78.     /**
  79.      * @return Response
  80.      */
  81.     public function listealphabetique(Request $requestTranslationExtension $translationExtensionPaginatorInterface $paginatorSocietesRepository $societeRepoParametreSiteManagers $pm$start$codePays): Response
  82.     {
  83.         $lang $request->getSession()->get('lang');
  84.         $parametres['start'] = $start;
  85.         $liste_fonds $this->sm->getFondsInvestissementList($request$paginator$parametres);
  86.         
  87.         $premiers_caracteres $societeRepo->donne_premier_caractere_fonds_investissement();
  88.         
  89.         $user $this->getUser();
  90.         
  91.         if ($user) {
  92.             $this->lmp->ajouterActionLogsActions($user->_get('id_utilisateur'), intval(30), $user->_get('type_utilisateur'), "----"); // 30 = Consultation annuaire des fonds d'investissement
  93.         }
  94.         
  95.         $nb_fonds $pm->getValueParamSiteByParamCodePays('nb_fonds_investissement_dans_annuaire_participations'$codePaystrue);
  96.         $arrayVarsTrans['nb_fonds'] = $nb_fonds;
  97.         
  98.         $metaTitle 'l\'annuaire des fonds d\'investissement, %$nb_fonds%$ investisseurs référencés';
  99.         $metaDescription 'Trouver un fonds d\'investissement en France ou à l\'international parmi %$nb_fonds%$ investisseurs référencés';
  100.         
  101.         $metaTag $this->metaTag
  102.         ->setTitle($translationExtension->translate($metaTitle$lang"""M"""$arrayVarsTrans))
  103.         ->setDescription($translationExtension->translate($metaDescription$lang"""M"""$arrayVarsTrans));
  104.         
  105.         return $this->render(
  106.             'annuaires/fonds_investissement/liste alphabetique.html.twig',
  107.             [
  108.                 'metaTag' => $metaTag,
  109.                 'liste_fonds' => $liste_fonds,
  110.                 'premiers_caracteres' => $premiers_caracteres,
  111.                 'start' => $start
  112.             ]
  113.             );
  114.     }
  115.     
  116.     /**
  117.      * @return Response
  118.      */
  119.     public function listecriteresinvestissement(Request $requestSecteursActiviteManagers $secteursActiviteManagerLocalisationsManagers $localisationManagerTranslationExtension $translationExtensionPaginatorInterface $paginatorSocietesRepository $societeRepoParametreSiteManagers $pm$codePays): Response
  120.     {
  121.         $parametres $request->query->all();
  122.         $isRecherche $this->serializeParams($parametres) != "";
  123.         $parametres['from'] = "liste_criteres_investissement";
  124.         $parametres ParametersProvider::prepareRechercheFondsInvestissementParameters($parametres);
  125.         unset($parametres['from']);
  126.         $parametres_localisations ParametersProvider::prepareLocalisationsParameters($localisationManager$parametres);
  127.         $string_params $this->serializeParams($parametres);
  128.         $urlList $request->getPathInfo();
  129.         
  130.         $lang $request->getSession()->get('lang');
  131.         $user $this->getUser();
  132.         
  133.         if ($user) {
  134.             $this->lmp->ajouterActionLogsActions($user->_get('id_utilisateur'), intval(30), $user->_get('type_utilisateur'), "----"); // 30 = Consultation annuaire des fonds d'investissement
  135.             $hasService $this->dam->checkIfThisUserHasDroitService($user, [47]); // 47 = annuaire_fonds_investissement
  136.         } else {
  137.             $hasService false;
  138.         }
  139.         
  140.         if ($hasService && $isRecherche) {
  141.             $liste_fonds $this->sm->getFondsInvestissementList($request$paginator$parametres);
  142.             $repoSociete $this->getDoctrine()->getRepository(Societes::class);
  143.             $nb_fonds_investissement $repoSociete->donne_nb_fonds_investissement($parametres);
  144.         } else {
  145.             $liste_fonds = [];
  146.             $nb_fonds_investissement $pm->getValueParamSiteByParamCodePays('nb_fonds_investissement_dans_annuaire_participations'$codePaystrue);
  147.         }
  148.         
  149.         $stade_investissement = [
  150.             $translationExtension->translate('indifferent'$lang'''M''') => '',
  151.             $translationExtension->translate('amorçage'$lang'''M''') => '1',
  152.             $translationExtension->translate('capital risque'$lang'''M''') => '2',
  153.             $translationExtension->translate('capital développement'$lang'''M''') => '3',
  154.             $translationExtension->translate('transmissions - LBO'$lang'''M''') => '4',
  155.             $translationExtension->translate('mezzanine'$lang'''M''') => '5',
  156.             $translationExtension->translate('retournement'$lang'''M''') => '6',
  157.             $translationExtension->translate('fonds de fonds'$lang'''M''') => '7'
  158.         ];
  159.         
  160.         $type_investissement = [
  161.             $translationExtension->translate('indifferent'$lang'''M''') => '',
  162.             $translationExtension->translate('majoritaire'$lang'''M''') => 'majoritaire',
  163.             $translationExtension->translate('minoritaire'$lang'''M''') => 'minoritaire',
  164.         ];
  165.         
  166.         $pays $this->sm->donne_option_select_pays_fonds_investissement();
  167.         $regions = [];
  168.         
  169.         $secteurs_activite_fonds $secteursActiviteManager->donne_option_select_secteurs_activite_fonds();
  170.         
  171.         $formFactory Forms::createFormFactoryBuilder()->getFormFactory();
  172.         $form $formFactory->createNamedBuilder('')
  173.         ->add('montant_recherche'TextType::class, [
  174.             'required' => false,
  175.             'data' => $parametres['montant_recherche']
  176.         ])
  177.         ->add('stade_investissement'ChoiceType::class, [
  178.             'choices' => $stade_investissement,
  179.             'required' => false,
  180.             'data' => $parametres['stade_investissement']
  181.         ])
  182.         ->add('type_reprise_bis'ChoiceType::class, [
  183.             'choices' => $type_investissement,
  184.             'required' => false,
  185.             'data' => $parametres['type_reprise_bis']
  186.         ])
  187.         ->add('id_secteur_activite_fonds'ChoiceType::class, [
  188.             'choices' => $secteurs_activite_fonds,
  189.             'data' => $parametres['id_secteur_activite_fonds']
  190.         ])
  191.         ->add('id_pays'ChoiceType::class, [
  192.             'choices' => $pays,
  193.         ])
  194.         ->add('id_region'ChoiceType::class, [
  195.             'choices' => $regions,
  196.         ])
  197.         ->add('id_localisation'HiddenType::class, [
  198.             'data' => $parametres['id_localisation']
  199.         ])
  200.         ->add('ajouter'ButtonType::class)
  201.         ->add('rechercher'SubmitType::class)
  202.         ->setAction($this->generateUrl('fonds_investissement_liste_criteres_investissement', ['codePays' => $codePays]))
  203.         ->setMethod('GET')
  204.         ->getForm();
  205.         
  206.         $page $request->query->get('page');
  207.         
  208.         if ($page != null && $page != 1) {
  209.             $string_params .= "&page=" $page;
  210.         }
  211.         
  212.         $nb_fonds_statique $pm->getValueParamSiteByParamCodePays('nb_fonds_investissement_dans_annuaire_participations'$codePaystrue);
  213.         $arrayVarsTrans['nb_fonds_statique'] = $nb_fonds_statique;
  214.         
  215.         $metaTitle 'l\'annuaire des fonds d\'investissement, %$nb_fonds_statique%$ investisseurs référencés';
  216.         $metaDescription 'Trouver un fonds d\'investissement en France ou à l\'international parmi %$nb_fonds_statique%$ investisseurs référencés';
  217.         
  218.         $metaTag $this->metaTag
  219.         ->setTitle($translationExtension->translate($metaTitle$lang"""M"""$arrayVarsTrans))
  220.         ->setDescription($translationExtension->translate($metaDescription$lang"""M"""$arrayVarsTrans));
  221.         //dd($string_params,$urlList);
  222.         return $this->render(
  223.             'annuaires/fonds_investissement/liste criteres_investissement.html.twig',
  224.             [
  225.                 'metaTag' => $metaTag,
  226.                 'form' => $form->createView(),
  227.                 'parametres' => $parametres,
  228.                 'parametres_localisations' => $parametres_localisations,
  229.                 'liste_fonds' => $liste_fonds,
  230.                 'hasService' => $hasService,
  231.                 'isRecherche' => $isRecherche,
  232.                 'nb_fonds_statique' => $nb_fonds_statique,
  233.                 'nb_fonds_investissement' => $nb_fonds_investissement,
  234.                 'string_params' => $string_params,
  235.                 'urlList' => $urlList
  236.             ]
  237.             );
  238.     }
  239.     
  240.     /**
  241.      * @return Response
  242.      */
  243.     public function listehistoriqueinvestissement(Request $requestSecteursActiviteManagers $secteursActiviteManagerLocalisationsManagers $localisationManagerTranslationExtension $translationExtensionPaginatorInterface $paginatorSocietesRepository $societeRepoParametreSiteManagers $pm$codePays): Response
  244.     {
  245.         $parametres $request->query->all();
  246.         $isRecherche $this->serializeParams($parametres) != "";
  247.         $parametres ParametersProvider::prepareRechercheFondsInvestissementParameters($parametres);
  248.         $parametres_localisations ParametersProvider::prepareLocalisationsParameters($localisationManager$parametres);
  249.         $string_params $this->serializeParams($parametres);
  250.         $urlList $request->getPathInfo();
  251.         
  252.         $lang $request->getSession()->get('lang');
  253.         $user $this->getUser();
  254.         
  255.         if ($user) {
  256.             $this->lmp->ajouterActionLogsActions($user->_get('id_utilisateur'), intval(30), $user->_get('type_utilisateur'), "----"); // 30 = Consultation annuaire des fonds d'investissement
  257.             $hasService $this->dam->checkIfThisUserHasDroitService($user, [47]); // 47 = annuaire_fonds_investissement
  258.         } else {
  259.             $hasService false;
  260.         }
  261.         
  262.         if ($hasService && $isRecherche) {
  263.             $liste_fonds $this->sm->getFondsInvestissementList($request$paginator$parametres);
  264.             $repoSociete $this->getDoctrine()->getRepository(Societes::class);
  265.             $nb_fonds_investissement $repoSociete->donne_nb_fonds_investissement($parametres);
  266.         } else {
  267.             $liste_fonds = [];
  268.             $nb_fonds_investissement $pm->getValueParamSiteByParamCodePays('nb_fonds_investissement_dans_annuaire_participations'$codePaystrue);
  269.         }
  270.         
  271.         $secteurs_activite1 $secteursActiviteManager->donne_option_select_secteurs_activite_niveau_1();
  272.         
  273.         if (isset($parametres['id_secteur_activite'])) {
  274.             $secteurs_activite2 $secteursActiviteManager->donne_option_select_secteurs_activite_enfant_by_secteur_activite_parent($parametres['id_secteur_activite']);
  275.             $show_secteur_niveau_2 true;
  276.         } else {
  277.             $secteurs_activite2 = [];
  278.             $show_secteur_niveau_2 false;
  279.         }
  280.         
  281.         if (isset($parametres['id_secteur_activite2'])) {
  282.             $secteurs_activite3 $secteursActiviteManager->donne_option_select_secteurs_activite_enfant_by_secteur_activite_parent($parametres['id_secteur_activite2']);
  283.             $show_secteur_niveau_3 true;
  284.         } else {
  285.             $secteurs_activite3 = [];
  286.             $show_secteur_niveau_3 false;
  287.         }
  288.         
  289.         $secteurs_activite_fonds $secteursActiviteManager->donne_option_select_secteurs_activite_fonds();
  290.         
  291.         $clerecherche = [
  292.             $translationExtension->translate("mots-cles du secteur"$lang'''M''') => 'motscles',
  293.             $translationExtension->translate("secteur d'activité Fusacq"$lang'''M''') => 'secteurs',
  294.             $translationExtension->translate("secteur d'activité simplifié"$lang'''M''') => 'secteurs_fonds',
  295.             $translationExtension->translate("code NAF"$lang'''M''') => 'code_naf'
  296.         ];
  297.         
  298.         $formFactory Forms::createFormFactoryBuilder()->getFormFactory();
  299.         $form $formFactory->createNamedBuilder('')
  300.         ->add('reference_mots_cles'TextType::class, [
  301.             'required' => false,
  302.             'data' => $parametres['reference_mots_cles'],
  303.             'attr' => [
  304.                 'placeholder' => $translationExtension->translate("ex : hôtel"$lang'''M''')
  305.             ]
  306.         ])
  307.         ->add('id_secteur_activite'ChoiceType::class, [
  308.             'choices' => $secteurs_activite1,
  309.             'data' => $parametres['id_secteur_activite']
  310.         ])
  311.         ->add('id_secteur_activite2'ChoiceType::class, [
  312.             'choices' => $secteurs_activite2,
  313.             'data' => $parametres['id_secteur_activite2']
  314.         ])
  315.         ->add('id_secteur_activite3'ChoiceType::class, [
  316.             'choices' => $secteurs_activite3,
  317.             'data' => $parametres['id_secteur_activite3']
  318.         ])
  319.         ->add('id_secteur_activite_fonds'ChoiceType::class, [
  320.             'choices' => $secteurs_activite_fonds,
  321.             'data' => $parametres['id_secteur_activite_fonds']
  322.         ])
  323.         ->add('code_naf'TextType::class, [
  324.             'required' => false,
  325.             'data' => $parametres['code_naf'],
  326.             'attr' => [
  327.                 'placeholder' => $translationExtension->translate("ex : 58.36Z"$lang'''M''')
  328.             ]
  329.         ])
  330.         ->add('recherche_par'ChoiceType::class, [
  331.             'required' => false,
  332.             'choices' => $clerecherche,
  333.             'expanded' => true,
  334.             'multiple' => false,
  335.             'data' => $parametres['recherche_par'] ?? 'motscles',
  336.             'placeholder' => false,
  337.             'choice_value' => function ($choice) {
  338.             return $choice// Utilisez la valeur du choix comme clé
  339.             }
  340.             ])
  341.             ->add('rechercher'SubmitType::class)
  342.             ->setAction($this->generateUrl('fonds_investissement_liste_historique_investissement', ['codePays' => $codePays]))
  343.             ->setMethod('GET')
  344.             ->getForm();
  345.             
  346.             $page $request->query->get('page');
  347.             
  348.             if ($page != null && $page != 1) {
  349.                 $string_params .= "&page=" $page;
  350.             }
  351.             
  352.             $nb_fonds_statique $pm->getValueParamSiteByParamCodePays('nb_fonds_investissement_dans_annuaire_participations'$codePaystrue);
  353.             $arrayVarsTrans['nb_fonds_statique'] = $nb_fonds_statique;
  354.             
  355.             $metaTitle 'l\'annuaire des fonds d\'investissement, %$nb_fonds_statique%$ investisseurs référencés';
  356.             $metaDescription 'Trouver un fonds d\'investissement en France ou à l\'international parmi %$nb_fonds_statique%$ investisseurs référencés';
  357.             
  358.             $metaTag $this->metaTag
  359.             ->setTitle($translationExtension->translate($metaTitle$lang"""M"""$arrayVarsTrans))
  360.             ->setDescription($translationExtension->translate($metaDescription$lang"""M"""$arrayVarsTrans));
  361.             //dd($string_params,$urlList);
  362.             return $this->render(
  363.                 'annuaires/fonds_investissement/liste historique_investissement.html.twig',
  364.                 [
  365.                     'metaTag' => $metaTag,
  366.                     'form' => $form->createView(),
  367.                     'parametres' => $parametres,
  368.                     'parametres_localisations' => $parametres_localisations,
  369.                     'show_secteur_niveau_2' => $show_secteur_niveau_2,
  370.                     'show_secteur_niveau_3' => $show_secteur_niveau_3,
  371.                     'liste_fonds' => $liste_fonds,
  372.                     'hasService' => $hasService,
  373.                     'isRecherche' => $isRecherche,
  374.                     'nb_fonds_statique' => $nb_fonds_statique,
  375.                     'nb_fonds_investissement' => $nb_fonds_investissement,
  376.                     'string_params' => $string_params,
  377.                     'urlList' => $urlList
  378.                 ]
  379.                 );
  380.     }
  381.     
  382.     public function strategieinvestissement(Request $requestTranslationExtension $translationExtensionLocalisationsManagers $localisationManagerBuzzManagers $bmGoogleTag $googleTagAesEncrytageStrategy $aesCommandesRepository $cr$idFonds$codePays): Response
  383.     {
  384.         // Flag pour savoir si $idFonds est crypté
  385.         // Si oui, on masque par défaut les coordonnées du fonds, sauf si commande ou abonnement
  386.         $isEncrypted false;
  387.         
  388.         // Si $idFonds est crypté, on le décrypte
  389.         if (!is_numeric($idFonds)) {
  390.             $idFonds $aes->decryptage($idFonds);
  391.             $isEncrypted true;
  392.         }
  393.         
  394.         $fonds $this->sm->getFondsInvestissement($idFonds);
  395.         
  396.         if (isset($fonds) && $fonds->_get('mode') == "publique") {
  397.             // On efface les anciens parametres s'ils existent, puis on insert les nouveaux
  398.             $googleTag->removeParametresPub();
  399.             
  400.             if ($fonds->_get('id_pays')) {
  401.                 $googleTag->setIdPays($fonds->_get('id_pays'));
  402.             }
  403.             
  404.             if ($fonds->_get('id_region')) {
  405.                 $googleTag->setIdRegion($fonds->_get('id_region'));
  406.             }
  407.             
  408.             if ($fonds->_get('id_secteur_activite')) {
  409.                 $id_secteur_activite_recherche trim($fonds->_get('id_secteur_activite'), ",");
  410.                 $array_secteur_activite_recherche explode(","$id_secteur_activite_recherche);
  411.                 
  412.                 // On prend le premier id_secteur_activite
  413.                 if ($array_secteur_activite_recherche[0]) {
  414.                     $googleTag->setIdSecteurActivite($array_secteur_activite_recherche[0]);
  415.                 }
  416.             }
  417.             $lang $request->getSession()->get('lang');
  418.             $parametres $request->query->all();
  419.             $from = isset($request->from) ? $request->from null;
  420.             
  421.             if ($from == "ouvrir-capital") {
  422.                 $colorClass "orange-new";
  423.                 $ongletClass "onglet8";
  424.                 $titreClass "titre_annonce_orange";
  425.                 $btnClass "btn-orange-new";
  426.                 $bgColor "#5F9779";
  427.                 
  428.                 $parametres ParametersProvider::prepareRechercheAvanceeOuvrirCapitalParameters($parametres);
  429.             } elseif ($from && $from == "investisseur-acquereur") {
  430.                 $colorClass "vert";
  431.                 $ongletClass "onglet5";
  432.                 $titreClass "titre_annonce_vert";
  433.                 $btnClass "btn-vert";
  434.                 $bgColor "#5F9779";
  435.                 
  436.                 $parametres ParametersProvider::prepareRechercheAvanceeAnnonceAcheteurParameters($parametres);
  437.             } else {
  438.                 $colorClass "orange-new";
  439.                 $ongletClass "onglet8";
  440.                 $titreClass "titre_annonce_orange";
  441.                 $btnClass "btn-orange-new";
  442.                 $bgColor "#5F9779";
  443.                 
  444.                 $parametres ParametersProvider::prepareRechercheFondsInvestissementParameters($parametres);
  445.             }
  446.             
  447.             $string_params $this->serializeParams($parametres);
  448.             
  449.             $index = (int)$request->query->get('index');
  450.             $page = (int) $request->query->get('page'1);
  451.             
  452.             if ($page 1) {
  453.                 $string_params .= "&page=" $page;
  454.             }
  455.             
  456.             $urlList $request->query->get('urlList');
  457.             
  458.             $model = new ContactezDirectementFondsInvestissement();
  459.             $model->_set('id_gestionnaire_fonds'$idFonds);
  460.             
  461.             $form $this->createForm(ContactezDirectementFondsInvestissementType::class, $model, [
  462.                 'method' => 'POST',
  463.             ]);
  464.             $form->handleRequest($request);
  465.             if ($form->isSubmitted()) {
  466.                 if ($form->isValid()) {
  467.                     $data $form->getData();
  468.                     $id_formulaire $this->cgm->contacter((array) $data);
  469.                     if ($id_formulaire) {
  470.                         $this->addFlash('success'$translationExtension->translate("votre message a bien été envoyé."$lang"""M"""));
  471.                     }
  472.                 } else {
  473.                     $this->addFlash('error'$translationExtension->translate("une erreur s'est produite, votre message n'a pas pu être envoyé."$lang"""M"""));
  474.                 }
  475.             }
  476.             
  477.             $http_host $request->server->get('HTTP_HOST');
  478.             $url substr($request->server->get('REDIRECT_URL'), 0, -4);
  479.             $canonical $http_host.$url;
  480.             $next $canonical.'?onglet=2';
  481.             
  482.             $urlRetourList $urlList $urlList '?' $string_params null;
  483.             
  484.             $previousAnnonce $this->sm->getIndexNAcquereurInvestisseurList($parametres$page$index 1);
  485.             $nextAnnonce $this->sm->getIndexNAcquereurInvestisseurList($parametres$page$index 1);
  486.             
  487.             $nb_actualites $bm->getNbActualitesByFonds($idFonds);
  488.             
  489.             $parametres['id_gestionnaire_fonds'] = $idFonds;
  490.             $repoSociete $this->getDoctrine()->getRepository(Societes::class);
  491.             $nb_investissement $repoSociete->donne_nb_participations_dun_fonds($parametres"acheteur");
  492.             
  493.             $hasCommande false;
  494.             $lignePanier false;
  495.             $hasForfait false;
  496.             $isNoLongerAvailable false;
  497.             $forfaitAUtiliser false;
  498.             
  499.             $user $this->getUser();
  500.             
  501.             if ($user) {
  502.                 $hasService $this->dam->checkIfThisUserHasDroitService($user, [47]); // 47 = annuaire_fonds_investissement
  503.                 
  504.                 $lignePanier $this->em->getRepository(Panier::class)->findOneBy(
  505.                     ['login_utilisateur' => $user->_get('login_utilisateur'), "type_object" => 'annonce_FONDS'"id_object" => $idFonds]
  506.                     );
  507.                 
  508.                 $forfaitAUtiliser $this->dam->getFrofaitAnnonceToUse($user);
  509.                 if (!empty($forfaitAUtiliser)) {
  510.                     $hasForfait true;
  511.                 }
  512.                 // On regarde si le fonds a été commandé dans la table commandes
  513.                 $hasCommande $cr->hasAnnonceCommande($user->_get('login_utilisateur'),$idFonds,"fonds");
  514.             } else {
  515.                 $hasService false;
  516.             }
  517.             
  518.             $metaTitle 'Fonds d\'investissement %$titre%$';
  519.             $metaDescription 'Consultez le fonds d\'investissement %$titre%$';
  520.             
  521.             if (($hasCommande || $hasService) || !$isEncrypted) {
  522.                 $nom_societe $fonds->_get('nom_societe');
  523.                 
  524.                 // Lien vers l'annuaire des Fonds d'investissement
  525.                 $realCanonical $http_host.$this->generateUrl('fonds_investissement_actualites_publiees', ['slug' => Utils::slugify($fonds->_get('nom_societe')), 'idFonds' => $idFonds'pageActu' => 1'codePays' => $codePays]);
  526.             } else {
  527.                 $nom_societe substr($fonds->_get('nom_societe'), 01) . "*****";
  528.                 $realCanonical $canonical;
  529.             }
  530.             
  531.             $arrayVarsTrans['titre'] = $nom_societe;
  532.             
  533.             $dernieresAnnonces $request->query->get('dernieresAnnonces');
  534.             
  535.             $metaTag $this->metaTag
  536.             ->setTitle($translationExtension->translate($metaTitle$lang"""M"""$arrayVarsTrans))
  537.             ->setDescription($translationExtension->translate($metaDescription$lang"""M"""$arrayVarsTrans))
  538.             ->setCanonical($realCanonical)
  539.             ->setNext($next)
  540.             ->setRobots('noindex');
  541.             
  542.             $from_commande $request->query->get('from_commande') ? $request->query->get('from_commande') : 0;
  543.             
  544.             return $this->render('annuaires/fonds_investissement/strategie_investissement.html.twig', [
  545.                 'metaTag' => $metaTag,
  546.                 'fonds' => $fonds,
  547.                 'isEncrypted' => $isEncrypted,
  548.                 'hasService' => $hasService,
  549.                 'nom_societe' => $nom_societe,
  550.                 'form' => $form->createView(),
  551.                 'url' => $url,
  552.                 'nb_investissement' => $nb_investissement,
  553.                 'nb_actualites' => $nb_actualites,
  554.                 'string_params' => $string_params,
  555.                 'urlList' => $urlList,
  556.                 'urlRetourList' => $urlRetourList,
  557.                 'previousAnnonce' => $previousAnnonce,
  558.                 'nextAnnonce' => $nextAnnonce,
  559.                 'index' => $index,
  560.                 'indexPrevious' => $index 1,
  561.                 'indexNext' => $index 1,
  562.                 'colorClass' => $colorClass,
  563.                 'ongletClass' => $ongletClass,
  564.                 'titreClass' => $titreClass,
  565.                 'btnClass' => $btnClass,
  566.                 'bgColor' => $bgColor,
  567.                 'from' => $from,
  568.                 'dernieresAnnonces' => $dernieresAnnonces,
  569.                 'googleTag' => $googleTag,
  570.                 'lignePanier' => $lignePanier,
  571.                 'hasForfait' => $hasForfait,
  572.                 'forfaitAUtiliser' => $forfaitAUtiliser,
  573.                 'hasCommande' => $hasCommande,
  574.                 'isNoLongerAvailable' => $isNoLongerAvailable,
  575.                 'from_commande' => $from_commande,
  576.             ]);
  577.         } else {
  578.             return $this->redirectToRoute('index', ['codePays' => substr($codePays12)]);
  579.         }
  580.     }
  581.     
  582.     public function criteresinvestissement(Request $requestTranslationExtension $translationExtensionLocalisationsManagers $localisationManagerSecteursActiviteManagers $samBuzzManagers $bmAesEncrytageStrategy $aesCommandesRepository $cr$idFonds$codePays): Response
  583.     {
  584.         // Flag pour savoir si $idFonds est crypté
  585.         // Si oui, on masque par défaut les coordonnées du fonds, sauf si commande ou abonnement
  586.         $isEncrypted false;
  587.         
  588.         // Si $idFonds est crypté, on le décrypte
  589.         if (!is_numeric($idFonds)) {
  590.             $idFonds $aes->decryptage($idFonds);
  591.             $isEncrypted true;
  592.         }
  593.         
  594.         $fonds $this->sm->getFondsInvestissement($idFonds);
  595.         
  596.         if (isset($fonds) && $fonds->_get('mode') == "publique") {
  597.             $lang $request->getSession()->get('lang');
  598.             $parametres $request->query->all();
  599.             $from = isset($request->from) ? $request->from null;
  600.             
  601.             if ($from == "ouvrir-capital") {
  602.                 $colorClass "orange-new";
  603.                 $ongletClass "onglet8";
  604.                 $titreClass "titre_annonce_orange";
  605.                 $btnClass "btn-orange-new";
  606.                 $bgColor "#5F9779";
  607.                 
  608.                 $parametres ParametersProvider::prepareRechercheAvanceeAnnonceAcheteurParameters($parametres);
  609.             } elseif ($from && $from == "investisseur-acquereur") {
  610.                 $colorClass "vert";
  611.                 $ongletClass "onglet5";
  612.                 $titreClass "titre_annonce_vert";
  613.                 $btnClass "btn-vert";
  614.                 $bgColor "#5F9779";
  615.                 
  616.                 $parametres ParametersProvider::prepareRechercheAvanceeAnnonceAcheteurParameters($parametres);
  617.             } else {
  618.                 $colorClass "orange-new";
  619.                 $ongletClass "onglet8";
  620.                 $titreClass "titre_annonce_orange";
  621.                 $btnClass "btn-orange-new";
  622.                 $bgColor "#5F9779";
  623.                 
  624.                 $parametres ParametersProvider::prepareRechercheFondsInvestissementParameters($parametres);
  625.             }
  626.             
  627.             $string_params $this->serializeParams($parametres);
  628.             
  629.             $index = (int)$request->query->get('index');
  630.             $page = (int) $request->query->get('page'1);
  631.             
  632.             if ($page 1) {
  633.                 $string_params .= "&page=" $page;
  634.             }
  635.             
  636.             $urlList $request->query->get('urlList');
  637.             
  638.             $model = new ContactezDirectementFondsInvestissement();
  639.             $model->_set('id_gestionnaire_fonds'$idFonds);
  640.             
  641.             $form $this->createForm(ContactezDirectementFondsInvestissementType::class, $model, [
  642.                 'method' => 'POST',
  643.             ]);
  644.             $form->handleRequest($request);
  645.             if ($form->isSubmitted()) {
  646.                 if ($form->isValid()) {
  647.                     $data $form->getData();
  648.                     $id_formulaire $this->cgm->contacter((array) $data);
  649.                     if ($id_formulaire) {
  650.                         $this->addFlash('success'$translationExtension->translate("votre message a bien été envoyé."$lang"""M"""));
  651.                     }
  652.                 } else {
  653.                     $this->addFlash('error'$translationExtension->translate("une erreur s'est produite, votre message n'a pas pu être envoyé."$lang"""M"""));
  654.                 }
  655.             }
  656.             
  657.             $hasCommande false;
  658.             $lignePanier false;
  659.             $hasForfait false;
  660.             $isNoLongerAvailable false;
  661.             $forfaitAUtiliser false;
  662.             
  663.             $user $this->getUser();
  664.             
  665.             if ($user) {
  666.                 $hasService $this->dam->checkIfThisUserHasDroitService($user, [47]); // 47 = annuaire_fonds_investissement
  667.                 
  668.                 $lignePanier $this->em->getRepository(Panier::class)->findOneBy(
  669.                     ['login_utilisateur' => $user->_get('login_utilisateur'), "type_object" => 'annonce_FONDS'"id_object" => $idFonds]
  670.                     );
  671.                 
  672.                 $forfaitAUtiliser $this->dam->getFrofaitAnnonceToUse($user);
  673.                 if (!empty($forfaitAUtiliser)) {
  674.                     $hasForfait true;
  675.                 }
  676.                 // On regarde si le fonds a été commandé dans la table commandes
  677.                 $hasCommande $cr->hasAnnonceCommande($user->_get('login_utilisateur'),$idFonds,"fonds");
  678.                 $isAuth true;
  679.             } else {
  680.                 $hasService false;
  681.                 $isAuth false;
  682.             }
  683.             
  684.             $nb_actualites $bm->getNbActualitesByFonds($idFonds);
  685.             
  686.             $lang $request->getSession()->get('lang');
  687.             $tab_stade_invest $this->sm->getStadesInvestissement($lang);
  688.             
  689.             $idSecteurActivite explode(","$fonds->_get("id_secteur_activite"));
  690.             $idSecteurActivite array_filter($idSecteurActivite);
  691.             
  692.             $secteurActiviteFonds $sam->donne_tableau_associatif_secteurs_activite_fonds();
  693.             
  694.             $http_host $request->server->get('HTTP_HOST');
  695.             $url substr($request->server->get('REDIRECT_URL'), 0, -4);
  696.             $canonical $http_host.$url;
  697.             $next $canonical.'?onglet=3';
  698.             $prev $canonical.'?onglet=1';
  699.             
  700.             $urlRetourList $urlList $urlList '?' $string_params null;
  701.             
  702.             $previousAnnonce $this->sm->getIndexNAcquereurInvestisseurList($parametres$page$index 1);
  703.             $nextAnnonce $this->sm->getIndexNAcquereurInvestisseurList($parametres$page$index 1);
  704.             
  705.             $parametres['id_gestionnaire_fonds'] = $idFonds;
  706.             $repoSociete $this->getDoctrine()->getRepository(Societes::class);
  707.             $nb_investissement $repoSociete->donne_nb_participations_dun_fonds($parametres"acheteur");
  708.             
  709.             $metaTitle 'Critères d\'investissement de %$titre%$';
  710.             $metaDescription 'Consultez les critères d\'investissement de %$titre%$';
  711.             
  712.             if (($hasCommande || $hasService) || !$isEncrypted) {
  713.                 $nom_societe $fonds->_get('nom_societe');
  714.                 
  715.                 // Lien vers l'annuaire des Fonds d'investissement
  716.                 $realCanonical $http_host.$this->generateUrl('fonds_investissement_actualites_publiees', ['slug' => Utils::slugify($fonds->_get('nom_societe')), 'idFonds' => $idFonds'pageActu' => 1'codePays' => $codePays]);
  717.             } else {
  718.                 $nom_societe substr($fonds->_get('nom_societe'), 01) . "*****";
  719.                 $realCanonical $canonical;
  720.             }
  721.             
  722.             $arrayVarsTrans['titre'] = $nom_societe;
  723.             
  724.             $dernieresAnnonces $request->query->get('dernieresAnnonces');
  725.             
  726.             $metaTag $this->metaTag
  727.             ->setTitle($translationExtension->translate($metaTitle$lang"""M"""$arrayVarsTrans))
  728.             ->setDescription($translationExtension->translate($metaDescription$lang"""M"""$arrayVarsTrans))
  729.             ->setCanonical($realCanonical)
  730.             ->setPrev($prev)
  731.             ->setNext($next);
  732.             
  733.             $from_commande $request->query->get('from_commande') ? $request->query->get('from_commande') : 0;
  734.             
  735.             return $this->render('annuaires/fonds_investissement/criteres_investissement.html.twig', [
  736.                 'metaTag' => $metaTag,
  737.                 'fonds' => $fonds,
  738.                 'isEncrypted' => $isEncrypted,
  739.                 'hasService' => $hasService,
  740.                 'nom_societe' => $nom_societe,
  741.                 'form' => $form->createView(),
  742.                 'url' => $url,
  743.                 'isAuth' => $isAuth,
  744.                 'nb_actualites' => $nb_actualites,
  745.                 'tab_stade_invest' => $tab_stade_invest,
  746.                 'idSecteurActivite' => $idSecteurActivite,
  747.                 'secteurActiviteFonds' => $secteurActiviteFonds,
  748.                 'nb_investissement' => $nb_investissement,
  749.                 'string_params' => $string_params,
  750.                 'urlList' => $urlList,
  751.                 'urlRetourList' => $urlRetourList,
  752.                 'previousAnnonce' => $previousAnnonce,
  753.                 'nextAnnonce' => $nextAnnonce,
  754.                 'index' => $index,
  755.                 'indexPrevious' => $index 1,
  756.                 'indexNext' => $index 1,
  757.                 'colorClass' => $colorClass,
  758.                 'ongletClass' => $ongletClass,
  759.                 'titreClass' => $titreClass,
  760.                 'btnClass' => $btnClass,
  761.                 'bgColor' => $bgColor,
  762.                 'from' => $from,
  763.                 'dernieresAnnonces' => $dernieresAnnonces,
  764.                 'lignePanier' => $lignePanier,
  765.                 'hasForfait' => $hasForfait,
  766.                 'forfaitAUtiliser' => $forfaitAUtiliser,
  767.                 'hasCommande' => $hasCommande,
  768.                 'isNoLongerAvailable' => $isNoLongerAvailable,
  769.                 'from_commande' => $from_commande,
  770.             ]);
  771.         } else {
  772.             return $this->redirectToRoute('index', ['codePays' => substr($codePays12)]);
  773.         }
  774.     }
  775.     
  776.     public function investissementreference(Request $requestPaginatorInterface $paginatorTranslationExtension $translationExtensionLocalisationsManagers $localisationManagerBuzzManagers $bmSecteursActiviteManagers $samAesEncrytageStrategy $aesCommandesRepository $cr$idFonds$pageInvest null$codePays): Response
  777.     {
  778.         // Flag pour savoir si $idFonds est crypté
  779.         // Si oui, on masque par défaut les coordonnées du fonds, sauf si commande ou abonnement
  780.         $isEncrypted false;
  781.         
  782.         // Si $idFonds est crypté, on le décrypte
  783.         if (!is_numeric($idFonds)) {
  784.             $idFonds $aes->decryptage($idFonds);
  785.             $isEncrypted true;
  786.         }
  787.         
  788.         $fonds $this->sm->getFondsInvestissement($idFonds);
  789.         
  790.         if (isset($fonds) && $fonds->_get('mode') == "publique") {
  791.             $lang $request->getSession()->get('lang');
  792.             $parametres $request->query->all();
  793.             $from = isset($request->from) ? $request->from null;
  794.             
  795.             if ($from == "ouvrir-capital") {
  796.                 $colorClass "orange-new";
  797.                 $ongletClass "onglet8";
  798.                 $titreClass "titre_annonce_orange";
  799.                 $btnClass "btn-orange-new";
  800.                 $bgColor "#5F9779";
  801.                 $paginationClass "pagination-orange";
  802.                 
  803.                 $parametres ParametersProvider::prepareRechercheAvanceeAnnonceAcheteurParameters($parametres);
  804.             } elseif ($from && $from == "investisseur-acquereur") {
  805.                 $colorClass "vert";
  806.                 $ongletClass "onglet5";
  807.                 $titreClass "titre_annonce_vert";
  808.                 $btnClass "btn-vert";
  809.                 $bgColor "#5F9779";
  810.                 $paginationClass "pagination-vert";
  811.                 
  812.                 $parametres ParametersProvider::prepareRechercheAvanceeAnnonceAcheteurParameters($parametres);
  813.             } else {
  814.                 $colorClass "orange-new";
  815.                 $ongletClass "onglet8";
  816.                 $titreClass "titre_annonce_orange";
  817.                 $btnClass "btn-orange-new";
  818.                 $bgColor "#5F9779";
  819.                 $paginationClass "pagination-orange";
  820.                 
  821.                 $parametres ParametersProvider::prepareRechercheFondsInvestissementParameters($parametres);
  822.             }
  823.             
  824.             $string_params $this->serializeParams($parametres);
  825.             
  826.             $index = (int)$request->query->get('index');
  827.             $page = (int) $request->query->get('page'1);
  828.             
  829.             if ($page 1) {
  830.                 $string_params .= "&page=" $page;
  831.             }
  832.             
  833.             $urlList $request->query->get('urlList');
  834.             
  835.             $model = new ContactezDirectementFondsInvestissement();
  836.             $model->_set('id_gestionnaire_fonds'$idFonds);
  837.             
  838.             $form $this->createForm(ContactezDirectementFondsInvestissementType::class, $model, [
  839.                 'method' => 'POST',
  840.             ]);
  841.             $form->handleRequest($request);
  842.             if ($form->isSubmitted()) {
  843.                 if ($form->isValid()) {
  844.                     $data $form->getData();
  845.                     $id_formulaire $this->cgm->contacter((array) $data);
  846.                     if ($id_formulaire) {
  847.                         $this->addFlash('success'$translationExtension->translate("votre message a bien été envoyé."$lang"""M"""));
  848.                     }
  849.                 } else {
  850.                     $this->addFlash('error'$translationExtension->translate("une erreur s'est produite, votre message n'a pas pu être envoyé."$lang"""M"""));
  851.                 }
  852.             }
  853.             
  854.             $hasCommande false;
  855.             $lignePanier false;
  856.             $hasForfait false;
  857.             $isNoLongerAvailable false;
  858.             $forfaitAUtiliser false;
  859.             
  860.             $user $this->getUser();
  861.             
  862.             if ($user) {
  863.                 $hasService $this->dam->checkIfThisUserHasDroitService($user, [47]); // 47 = annuaire_fonds_investissement
  864.                 
  865.                 $lignePanier $this->em->getRepository(Panier::class)->findOneBy(
  866.                     ['login_utilisateur' => $user->_get('login_utilisateur'), "type_object" => 'annonce_FONDS'"id_object" => $idFonds]
  867.                     );
  868.                 
  869.                 $forfaitAUtiliser $this->dam->getFrofaitAnnonceToUse($user);
  870.                 if (!empty($forfaitAUtiliser)) {
  871.                     $hasForfait true;
  872.                 }
  873.                 // On regarde si le fonds a été commandé dans la table commandes
  874.                 $hasCommande $cr->hasAnnonceCommande($user->_get('login_utilisateur'),$idFonds,"fonds");
  875.                 $isAuth true;
  876.             } else {
  877.                 $hasService false;
  878.                 $isAuth false;
  879.             }
  880.             
  881.             $nb_actualites $bm->getNbActualitesByFonds($idFonds);
  882.             
  883.             $http_host $request->server->get('HTTP_HOST');
  884.             $url substr($request->server->get('REDIRECT_URL'), 0, -4);
  885.             $canonical $http_host.$url;
  886.             $next $canonical.'?onglet=4';
  887.             $prev $canonical.'?onglet=2';
  888.             
  889.             $urlRetourList $urlList $urlList '?' $string_params null;
  890.             
  891.             $previousAnnonce $this->sm->getIndexNAcquereurInvestisseurList($parametres$page$index 1);
  892.             $nextAnnonce $this->sm->getIndexNAcquereurInvestisseurList($parametres$page$index 1);
  893.             
  894.             $parametres['id_gestionnaire_fonds'] = $idFonds;
  895.             $parametres['pageInvest'] = $pageInvest;
  896.             $participations $this->sm->getParticipationsDunFondsList($request$paginator$parametres"""acheteur");
  897.             
  898.             $repoSociete $this->getDoctrine()->getRepository(Societes::class);
  899.             $nb_investissement $repoSociete->donne_nb_participations_dun_fonds($parametres"acheteur");
  900.             
  901.             $metaTitle 'Les investissements référencés de %$titre%$';
  902.             $metaDescription 'Consultez les investissements référencés de %$titre%$';
  903.             
  904.             if (($hasCommande || $hasService) || !$isEncrypted) {
  905.                 $nom_societe $fonds->_get('nom_societe');
  906.                 
  907.                 // Lien vers l'annuaire des Fonds d'investissement
  908.                 $realCanonical $http_host.$this->generateUrl('fonds_investissement_actualites_publiees', ['slug' => Utils::slugify($fonds->_get('nom_societe')), 'idFonds' => $idFonds'pageActu' => 1'codePays' => $codePays]);
  909.             } else {
  910.                 $nom_societe substr($fonds->_get('nom_societe'), 01) . "*****";
  911.                 $realCanonical $canonical;
  912.             }
  913.             
  914.             $arrayVarsTrans['titre'] = $nom_societe;
  915.             
  916.             $dernieresAnnonces $request->query->get('dernieresAnnonces');
  917.             
  918.             $metaTag $this->metaTag
  919.             ->setTitle($translationExtension->translate($metaTitle$lang"""M"""$arrayVarsTrans))
  920.             ->setDescription($translationExtension->translate($metaDescription$lang"""M"""$arrayVarsTrans))
  921.             ->setCanonical($realCanonical)
  922.             ->setPrev($prev)
  923.             ->setNext($next);
  924.             
  925.             $from_commande $request->query->get('from_commande') ? $request->query->get('from_commande') : 0;
  926.             
  927.             return $this->render('annuaires/fonds_investissement/investissement_reference.html.twig', [
  928.                 'metaTag' => $metaTag,
  929.                 'fonds' => $fonds,
  930.                 'isEncrypted' => $isEncrypted,
  931.                 'hasService' => $hasService,
  932.                 'nom_societe' => $nom_societe,
  933.                 'form' => $form->createView(),
  934.                 'url' => $url,
  935.                 'isAuth' => $isAuth,
  936.                 'nb_actualites' => $nb_actualites,
  937.                 'participations' => $participations,
  938.                 'nb_investissement' => $nb_investissement,
  939.                 'string_params' => $string_params,
  940.                 'urlList' => $urlList,
  941.                 'urlRetourList' => $urlRetourList,
  942.                 'previousAnnonce' => $previousAnnonce,
  943.                 'nextAnnonce' => $nextAnnonce,
  944.                 'index' => $index,
  945.                 'indexPrevious' => $index 1,
  946.                 'indexNext' => $index 1,
  947.                 'colorClass' => $colorClass,
  948.                 'ongletClass' => $ongletClass,
  949.                 'titreClass' => $titreClass,
  950.                 'btnClass' => $btnClass,
  951.                 'bgColor' => $bgColor,
  952.                 'paginationClass' => $paginationClass,
  953.                 'from' => $from,
  954.                 'dernieresAnnonces' => $dernieresAnnonces,
  955.                 'lignePanier' => $lignePanier,
  956.                 'hasForfait' => $hasForfait,
  957.                 'forfaitAUtiliser' => $forfaitAUtiliser,
  958.                 'hasCommande' => $hasCommande,
  959.                 'isNoLongerAvailable' => $isNoLongerAvailable,
  960.                 'from_commande' => $from_commande,
  961.             ]);
  962.         } else {
  963.             return $this->redirectToRoute('index', ['codePays' => substr($codePays12)]);
  964.         }
  965.     }
  966.     
  967.     public function actualitepubliee(Request $requestPaginatorInterface $paginatorTranslationExtension $translationExtensionLocalisationsManagers $localisationManagerBuzzManagers $bmAesEncrytageStrategy $aesCommandesRepository $cr$idFonds$pageActu null$codePays): Response
  968.     {
  969.         // Flag pour savoir si $idFonds est crypté
  970.         // Si oui, on masque par défaut les coordonnées du fonds, sauf si commande ou abonnement
  971.         $isEncrypted false;
  972.         
  973.         // Si $idFonds est crypté, on le décrypte
  974.         if (!is_numeric($idFonds)) {
  975.             $idFonds $aes->decryptage($idFonds);
  976.             $isEncrypted true;
  977.         }
  978.         
  979.         $fonds $this->sm->getFondsInvestissement($idFonds);
  980.         
  981.         if (isset($fonds) && $fonds->_get('mode') == "publique") {
  982.             $lang $request->getSession()->get('lang');
  983.             $parametres $request->query->all();
  984.             $from = isset($request->from) ? $request->from null;
  985.             
  986.             if ($from == "ouvrir-capital") {
  987.                 $colorClass "orange-new";
  988.                 $ongletClass "onglet8";
  989.                 $titreClass "titre_annonce_orange";
  990.                 $btnClass "btn-orange-new";
  991.                 $bgColor "#5F9779";
  992.                 $paginationClass "pagination-orange";
  993.                 
  994.                 $parametres ParametersProvider::prepareRechercheAvanceeAnnonceAcheteurParameters($parametres);
  995.             } elseif ($from && $from == "investisseur-acquereur") {
  996.                 $colorClass "vert";
  997.                 $ongletClass "onglet5";
  998.                 $titreClass "titre_annonce_vert";
  999.                 $btnClass "btn-vert";
  1000.                 $bgColor "#5F9779";
  1001.                 $paginationClass "pagination-vert";
  1002.                 
  1003.                 $parametres ParametersProvider::prepareRechercheAvanceeAnnonceAcheteurParameters($parametres);
  1004.             } else {
  1005.                 $colorClass "orange-new";
  1006.                 $ongletClass "onglet8";
  1007.                 $titreClass "titre_annonce_orange";
  1008.                 $btnClass "btn-orange-new";
  1009.                 $bgColor "#5F9779";
  1010.                 $paginationClass "pagination-orange";
  1011.                 
  1012.                 $parametres ParametersProvider::prepareRechercheFondsInvestissementParameters($parametres);
  1013.             }
  1014.             
  1015.             $string_params $this->serializeParams($parametres);
  1016.             
  1017.             $index = (int)$request->query->get('index');
  1018.             $page = (int) $request->query->get('page'1);
  1019.             
  1020.             if ($page 1) {
  1021.                 $string_params .= "&page=" $page;
  1022.             }
  1023.             
  1024.             $urlList $request->query->get('urlList');
  1025.             
  1026.             $model = new ContactezDirectementFondsInvestissement();
  1027.             $model->_set('id_gestionnaire_fonds'$idFonds);
  1028.             
  1029.             $form $this->createForm(ContactezDirectementFondsInvestissementType::class, $model, [
  1030.                 'method' => 'POST',
  1031.             ]);
  1032.             $form->handleRequest($request);
  1033.             if ($form->isSubmitted()) {
  1034.                 if ($form->isValid()) {
  1035.                     $data $form->getData();
  1036.                     $id_formulaire $this->cgm->contacter((array) $data);
  1037.                     if ($id_formulaire) {
  1038.                         $this->addFlash('success'$translationExtension->translate("votre message a bien été envoyé."$lang"""M"""));
  1039.                     }
  1040.                 } else {
  1041.                     $this->addFlash('error'$translationExtension->translate("une erreur s'est produite, votre message n'a pas pu être envoyé."$lang"""M"""));
  1042.                 }
  1043.             }
  1044.             
  1045.             $hasCommande false;
  1046.             $lignePanier false;
  1047.             $hasForfait false;
  1048.             $isNoLongerAvailable false;
  1049.             $forfaitAUtiliser false;
  1050.             
  1051.             $user $this->getUser();
  1052.             
  1053.             if ($user) {
  1054.                 $hasService $this->dam->checkIfThisUserHasDroitService($user, [47]); // 47 = annuaire_fonds_investissement
  1055.                 
  1056.                 $lignePanier $this->em->getRepository(Panier::class)->findOneBy(
  1057.                     ['login_utilisateur' => $user->_get('login_utilisateur'), "type_object" => 'annonce_FONDS'"id_object" => $idFonds]
  1058.                     );
  1059.                 
  1060.                 $forfaitAUtiliser $this->dam->getFrofaitAnnonceToUse($user);
  1061.                 if (!empty($forfaitAUtiliser)) {
  1062.                     $hasForfait true;
  1063.                 }
  1064.                 // On regarde si le fonds a été commandé dans la table commandes
  1065.                 $hasCommande $cr->hasAnnonceCommande($user->_get('login_utilisateur'),$idFonds,"fonds");
  1066.             } else {
  1067.                 $hasService false;
  1068.             }
  1069.             
  1070.             $parametres['pageActu'] = $pageActu;
  1071.             $actualites $bm->getAllActualitesByFonds($request$paginator$idFonds$parametres);
  1072.             $nb_actualites $bm->getNbActualitesByFonds($idFonds);
  1073.             
  1074.             $http_host $request->server->get('HTTP_HOST');
  1075.             $url substr($request->server->get('REDIRECT_URL'), 0, -4);
  1076.             $canonical $http_host.$url;
  1077.             $prev $canonical.'?onglet=3';
  1078.             
  1079.             $urlRetourList $urlList $urlList '?' $string_params null;
  1080.             
  1081.             $previousAnnonce $this->sm->getIndexNAcquereurInvestisseurList($parametres$page$index 1);
  1082.             $nextAnnonce $this->sm->getIndexNAcquereurInvestisseurList($parametres$page$index 1);
  1083.             
  1084.             $parametres['id_gestionnaire_fonds'] = $idFonds;
  1085.             $repoSociete $this->getDoctrine()->getRepository(Societes::class);
  1086.             $nb_investissement $repoSociete->donne_nb_participations_dun_fonds($parametres"acheteur");
  1087.             
  1088.             $metaTitle 'Les actualités publiées de %$titre%$';
  1089.             $metaDescription 'Consultez les actualités publiées de %$titre%$';
  1090.             
  1091.             if (($hasCommande || $hasService) || !$isEncrypted) {
  1092.                 $nom_societe $fonds->_get('nom_societe');
  1093.                 
  1094.                 // Lien vers l'annuaire des Fonds d'investissement
  1095.                 $realCanonical $http_host.$this->generateUrl('fonds_investissement_actualites_publiees', ['slug' => Utils::slugify($fonds->_get('nom_societe')), 'idFonds' => $idFonds'pageActu' => 1'codePays' => $codePays]);
  1096.             } else {
  1097.                 $nom_societe substr($fonds->_get('nom_societe'), 01) . "*****";
  1098.                 $realCanonical $canonical;
  1099.             }
  1100.             
  1101.             $arrayVarsTrans['titre'] = $nom_societe;
  1102.             
  1103.             $dernieresAnnonces $request->query->get('dernieresAnnonces');
  1104.             
  1105.             $metaTag $this->metaTag
  1106.             ->setTitle($translationExtension->translate($metaTitle$lang"""M"""$arrayVarsTrans))
  1107.             ->setDescription($translationExtension->translate($metaDescription$lang"""M"""$arrayVarsTrans))
  1108.             ->setCanonical($realCanonical)
  1109.             ->setPrev($prev);
  1110.             
  1111.             $from_commande $request->query->get('from_commande') ? $request->query->get('from_commande') : 0;
  1112.             
  1113.             return $this->render('annuaires/fonds_investissement/actualite_publiee.html.twig', [
  1114.                 'metaTag' => $metaTag,
  1115.                 'fonds' => $fonds,
  1116.                 'isEncrypted' => $isEncrypted,
  1117.                 'hasService' => $hasService,
  1118.                 'nom_societe' => $nom_societe,
  1119.                 'form' => $form->createView(),
  1120.                 'url' => $url,
  1121.                 'nb_actualites' => $nb_actualites,
  1122.                 'nb_investissement' => $nb_investissement,
  1123.                 'actualites' => $actualites,
  1124.                 'string_params' => $string_params,
  1125.                 'urlList' => $urlList,
  1126.                 'urlRetourList' => $urlRetourList,
  1127.                 'previousAnnonce' => $previousAnnonce,
  1128.                 'nextAnnonce' => $nextAnnonce,
  1129.                 'index' => $index,
  1130.                 'indexPrevious' => $index 1,
  1131.                 'indexNext' => $index 1,
  1132.                 'colorClass' => $colorClass,
  1133.                 'ongletClass' => $ongletClass,
  1134.                 'titreClass' => $titreClass,
  1135.                 'btnClass' => $btnClass,
  1136.                 'bgColor' => $bgColor,
  1137.                 'paginationClass' => $paginationClass,
  1138.                 'from' => $from,
  1139.                 'dernieresAnnonces' => $dernieresAnnonces,
  1140.                 'lignePanier' => $lignePanier,
  1141.                 'hasForfait' => $hasForfait,
  1142.                 'forfaitAUtiliser' => $forfaitAUtiliser,
  1143.                 'hasCommande' => $hasCommande,
  1144.                 'isNoLongerAvailable' => $isNoLongerAvailable,
  1145.                 'from_commande' => $from_commande,
  1146.             ]);
  1147.         } else {
  1148.             return $this->redirectToRoute('index', ['codePays' => substr($codePays12)]);
  1149.         }
  1150.     }
  1151.     
  1152.     public function formulairefondsprovenancemail(Request $requestCodeAccesService $codeAccessServiceTranslationExtension $translationExtensionAesEncrytageStrategy $aesLocalisationsManagers $localisationManagerConversionProvider $cp$codePays): Response
  1153.     {
  1154.         $code $request->query->get('ref');
  1155.         
  1156.         if (!$code) {
  1157.             return $this->redirectToRoute('index');
  1158.         }
  1159.         
  1160.         $idFonds $aes->decryptage($code);
  1161.         
  1162.         if (!is_numeric($idFonds)) {
  1163.             return $this->redirectToRoute('index');
  1164.         }
  1165.         
  1166.         $fonds $this->em->getRepository(SocieteGestionnaireFonds::class)->findOneBy(['id_gestionnaire_fonds' => $idFonds]);
  1167.         
  1168.         if (!$fonds) {
  1169.             return $this->redirectToRoute('index');
  1170.         }
  1171.         
  1172.         // On vérifie la présence du cookie du service, sinon on envoie un code par mail
  1173.         $authorizedAccess $codeAccessService->check($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds');
  1174.         
  1175.         // On combine les localisations
  1176.         $localisations /*$fonds->__get('pays_ciblees') . ',' .*/ $fonds->__get('regions_ciblees');
  1177.         
  1178.         if ($localisations) {
  1179.             $localisations array_values(array_unique(array_filter(explode(","$localisations))));
  1180.         }
  1181.         
  1182.         $array_localisation = [];
  1183.         
  1184.         // On rajoute le nom des localisations
  1185.         if ($localisations) {
  1186.             for ($i 0$i count($localisations); $i++) {
  1187.                 $id_localisation $localisations[$i];
  1188.                 $nom_localisation $localisationManager->getStringNomLocalisationById($id_localisation);
  1189.                 
  1190.                 $row = [];
  1191.                 $row['id_localisation'] = $id_localisation;
  1192.                 $row['nom_localisation'] = $nom_localisation;
  1193.                 
  1194.                 // Si c'est une région, on rajoute le nom du pays avec
  1195.                 if (strpos($id_localisation"_") !== false) {
  1196.                     $id_pays substr($id_localisation0strpos($id_localisation"_"));
  1197.                     $row['nom_localisation'] .= ", " $localisationManager->getStringNomLocalisationById($id_pays);
  1198.                 }
  1199.                 
  1200.                 $array_localisation[] = $row;
  1201.             }
  1202.         }
  1203.         
  1204.         $lang $request->getSession()->get('lang');
  1205.         
  1206.         $form $this->createForm(SocieteGestionnaireFondsFormType::class, $fonds);
  1207.         
  1208.         $form->handleRequest($request);
  1209.         
  1210.         if ($form->isSubmitted()) {
  1211.             if ($form->isValid()) {
  1212.                 $fonds->__set("nom_societe"$form->get('nom_societe')->getData());
  1213.                 $fonds->__set("adresse_societe"$form->get('adresse_societe')->getData());
  1214.                 $fonds->__set("code_postal_societe"$form->get('code_postal_societe')->getData());
  1215.                 $fonds->__set("ville_societe"$form->get('ville_societe')->getData());
  1216.                 $fonds->__set("id_pays"$form->get('id_pays')->getData());
  1217.                 $fonds->__set("id_region"$form->get('id_region')->getData());
  1218.                 $fonds->__set("site_internet"$form->get('site_internet')->getData());
  1219.                 $fonds->__set("nom_contact"$form->get('nom_contact')->getData());
  1220.                 $fonds->__set("mail_contact"$form->get('mail_contact')->getData());
  1221.                 $fonds->__set("mail_respon_maj"$form->get('mail_respon_maj')->getData());
  1222.                 $fonds->__set("telephone"$form->get('telephone')->getData());
  1223.                 $fonds->__set("indicatif"$form->get('indicatif')->getData());
  1224.                 
  1225.                 $id_localisation_select trim($form->get('id_localisation_select')->getData());
  1226.                 
  1227.                 // On traite le string pour remplir array_pays et array_regions
  1228.                 if ($id_localisation_select) {
  1229.                     $array_pays = [];
  1230.                     $array_regions = [];
  1231.                     
  1232.                     $array_loc array_filter(explode(","$id_localisation_select));
  1233.                     
  1234.                     foreach ($array_loc as $loc) {
  1235.                         // Dans tous les cas on ajoute dans array_regions
  1236.                         $array_regions[] = $loc;
  1237.                         
  1238.                         // On rajoute uniquement les pays dans array_pays (si pas déjà fait)
  1239.                         if (strpos($loc"_") === false && !in_array($loc$array_pays)) {
  1240.                             $array_pays[] = $loc;
  1241.                         } elseif (!in_array(substr($loc0strpos($loc"_")), $array_pays)) {
  1242.                             $array_pays[] = substr($loc0strpos($loc"_"));
  1243.                         }
  1244.                     }
  1245.                     $pays implode(","$array_pays);
  1246.                     $regions implode(","$array_regions);
  1247.                     
  1248.                     $fonds->__set("pays_ciblees"$pays);
  1249.                     $fonds->__set("regions_ciblees"$regions);
  1250.                 }
  1251.                 
  1252.                 $fonds->__set("stade_investissement"$form->get('stade_investissement')->getData());
  1253.                 $fonds->__set("id_secteur_activite"$form->get('id_secteur_activite')->getData());
  1254.                 $fonds->__set("devise"$form->get('devise')->getData());
  1255.                 $fonds->__set("montant_investissement_min_devise"str_replace(" """$form->get('montant_investissement_min_devise')->getData()));
  1256.                 $fonds->__set("montant_investissement_max_devise"str_replace(" """$form->get('montant_investissement_max_devise')->getData()));
  1257.                 
  1258.                 if ($fonds->__get('devise') == "EUR") {
  1259.                     $montant_investissement_min_converti_to_euro $fonds->__get('montant_investissement_min_devise');
  1260.                     $montant_investissement_max_converti_to_euro $fonds->__get('montant_investissement_max_devise');
  1261.                 } else {
  1262.                     $montant_investissement_min_converti_to_euro $cp->deviseToEur($fonds->__get('devise'), $fonds->__get('montant_investissement_min_devise'));
  1263.                     $montant_investissement_max_converti_to_euro $cp->deviseToEur($fonds->__get('devise'), $fonds->__get('montant_investissement_max_devise'));
  1264.                 }
  1265.                 
  1266.                 $fonds->__set("montant_investissement_min"str_replace(" """$montant_investissement_min_converti_to_euro));
  1267.                 $fonds->__set("montant_investissement_max"str_replace(" """$montant_investissement_max_converti_to_euro));
  1268.                 
  1269.                 $fonds->__set("type_investissement"$form->get('type_investissement')->getData());
  1270.                 $fonds->__set("strategie_globale_investissement"$form->get('strategie_globale_investissement')->getData());
  1271.                 
  1272.                 if ($fonds->__get('mode') == 'publique') {
  1273.                 } else {
  1274.                     $fonds->__set("mode"'demande_publication');
  1275.                 }
  1276.                 $fonds->__set("date_valide_respo"date('Ymd'));
  1277.                 
  1278.                 $this->em->persist($fonds);
  1279.                 $this->em->flush();
  1280.                 
  1281.                 $this->addFlash("success"$translationExtension->translate("le fonds a bien été mis à jour."$lang"""M"""));
  1282.                 return $this->redirectToRoute("participation_fonds_maj_participations_fonds_mail", ["ref" => $code"codePays" => $codePays]);
  1283.             } else {
  1284.                 $this->addFlash("error"$translationExtension->translate("une erreur est survenue, veuillez réessayer."$lang"""M"""));
  1285.             }
  1286.             
  1287.         }
  1288.         
  1289.         return $this->render('annuaires/fonds_investissement/formulaire_fonds_provenance_mail.html.twig', [
  1290.             'form' => $form->createView(),
  1291.             'fonds' => $fonds,
  1292.             'array_localisation' => $array_localisation,
  1293.             'authorizedAccess' => $authorizedAccess
  1294.         ]);
  1295.     }
  1296.     
  1297.     private function serializeParams($parametres)
  1298.     {
  1299.         $string_params "";
  1300.         
  1301.         foreach ($parametres as $name => $value) {
  1302.             if ($name != "rechercher" && $name != "type" && $name != "array_localisation") {
  1303.                 if ($string_params == "") {
  1304.                     $string_params .= $name."=".$value;
  1305.                 } else {
  1306.                     $string_params .= "&".$name."=".$value;
  1307.                 }
  1308.             }
  1309.         }
  1310.         
  1311.         return $string_params;
  1312.     }
  1313. }