src/Controller/AnnuaireParticipationsFondsController.php line 232

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 Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\RedirectResponse;
  11. use Symfony\Component\HttpFoundation\JsonResponse;
  12. use App\Services\ManagerEntity\SocietesManagers;
  13. use App\Twig\TranslationExtension;
  14. use App\Helper\Utils;
  15. use App\Entity\Societes;
  16. use App\Entity\BuzzRoles;
  17. use App\Entity\SocieteGestionnaireFonds;
  18. use App\Helper\DeviseProvider;
  19. use Knp\Component\Pager\PaginatorInterface;
  20. use App\Helper\ParametersProvider;
  21. use App\Services\ManagerEntity\LocalisationsManagers;
  22. use App\Services\ManagerEntity\SecteursActiviteManagers;
  23. use Symfony\Component\Form\Extension\Core\Type\ButtonType;
  24. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  25. use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
  26. use Symfony\Component\Form\Extension\Core\Type\HiddenType;
  27. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  28. use Symfony\Component\Form\Extension\Core\Type\TextType;
  29. use Symfony\Component\Form\Forms;
  30. use App\Services\ManagerEntity\ParametreSiteManagers;
  31. use App\Services\LogMarketingProvider;
  32. use App\Services\ManagerEntity\DroitsAccesManagers;
  33. use App\Services\Mailer;
  34. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  35. use App\Services\Encryptage\AesEncrytageStrategy;
  36. use App\Services\GoogleTag;
  37. use App\Services\CodeAccesService;
  38. use Doctrine\ORM\EntityManagerInterface;
  39. use App\Entity\Participation;
  40. use App\Entity\LienParticipationsFonds;
  41. use App\Helper\DateProvider;
  42. use App\Entity\Panier;
  43. use App\Repository\CommandesRepository;
  44. class AnnuaireParticipationsFondsController extends EntityUsingController
  45. {
  46.     /**
  47.      * @var DroitsAccesManagers $dam;
  48.      */
  49.     private $dam;
  50.     
  51.     /**
  52.      * @var SocietesManagers
  53.      */
  54.     private $sm;
  55.     
  56.     /**
  57.      * @var LogMarketingProvider
  58.      */
  59.     private $lmp;
  60.     /**
  61.      * @var Mailer
  62.      */
  63.     private $mailer;
  64.     /**
  65.      * @var ParameterBagInterface
  66.      */
  67.     private $params;
  68.     /**
  69.      * @var MetaTag
  70.      */
  71.     private $metaTag;
  72.     /**
  73.      * @var EntityManagerInterface
  74.      */
  75.     private $em;
  76.     
  77.     /**
  78.      * @param SocietesManagers $sm
  79.      */
  80.     public function __construct(DroitsAccesManagers $damSocietesManagers $smLogMarketingProvider $lmpMailer $mailerParameterBagInterface $paramsMetaTag $metaTagEntityManagerInterface $em)
  81.     {
  82.         $this->dam $dam;
  83.         $this->sm $sm;
  84.         $this->lmp $lmp;
  85.         $this->mailer $mailer;
  86.         $this->dns_fusacq $params->get('app.DNS')['FUSACQ'];
  87.         $this->metaTag $metaTag;
  88.         $this->em $em;
  89.     }
  90.     
  91.     /**
  92.      * @return Response
  93.      */
  94.     public function index(Request $requestSecteursActiviteManagers $secteursActiviteManagerTranslationExtension $translationExtensionPaginatorInterface $paginatorLocalisationsManagers $localisationManagerParametreSiteManagers $parametreSiteManager$codePays): Response
  95.     {
  96.         $parametres $request->query->all();
  97.         $parametres ParametersProvider::prepareRechercheParticipationsFondsParameters($parametres);
  98.         $parametres_localisations ParametersProvider::prepareLocalisationsParameters($localisationManager$parametres);
  99.         
  100.         $string_params $string_params_without_page $this->serializeParams($parametres);
  101.         
  102.         $repoSociete $this->getDoctrine()->getRepository(Societes::class);
  103.         
  104.         $nb_participations_fonds $repoSociete->donne_nb_participations_fonds($parametres);
  105.         
  106.         $liste_annonces $this->sm->getParticipationsFondsList($request$paginator$parametres"");
  107.         
  108.         $has_service false;
  109.         
  110.         //On verifie si l'utilisateur a le droit de consulter cette page
  111.         $user $this->getUser();
  112.         
  113.         if ($user) {
  114.             $has_service $this->dam->checkIfThisUserHasDroitService($user, [2]); // 2 = annuaire_participations
  115.             $this->lmp->ajouterActionLogsActions($user->_get('id_utilisateur'), intval(31), $user->_get('type_utilisateur'), "----"); // 31 = consulter annuaire des participations des fonds
  116.         } else {
  117.             $has_service false;
  118.         }
  119.         
  120.         $lang $request->getSession()->get('lang');
  121.         $idPays null// A developper pour le select Pays
  122.         
  123.         $actionnaires $repoSociete->donne_liste_societe_gestion_select();
  124.         $pays $this->sm->donne_option_select_pays_cible_potentielle();
  125.         $regions = [];
  126.         
  127.         $secteurs_activite $secteursActiviteManager->donne_option_select_secteurs_activite_fonds();
  128.         
  129.         $societe_cotee = [
  130.             $translationExtension->translate('indifferent'$lang'''M''') => '0',
  131.             $translationExtension->translate('oui'$lang'''M''') => 'oui',
  132.             $translationExtension->translate('non'$lang'''M''') => 'non',
  133.         ];
  134.         
  135.         $formFactory Forms::createFormFactoryBuilder()->getFormFactory();
  136.         $form $formFactory->createNamedBuilder('')
  137.         ->add('id_gestionnaire_fonds'ChoiceType::class, [
  138.             'choices' => $actionnaires,
  139.             'data' => $parametres['id_gestionnaire_fonds']
  140.         ])
  141.         ->add('id_pays'ChoiceType::class, [
  142.             'choices' => $pays,
  143.         ])
  144.         ->add('id_region'ChoiceType::class, [
  145.             'choices' => $regions,
  146.         ])
  147.         ->add('id_localisation'HiddenType::class, [
  148.             'data' => $parametres['id_localisation']
  149.         ])
  150.         ->add('ajouter'ButtonType::class)
  151.         ->add('reference_mots_cles'TextType::class, [
  152.             'required' => false,
  153.             'data' => $parametres['reference_mots_cles']
  154.         ])
  155.         ->add('id_secteur_activite_fonds'ChoiceType::class, [
  156.             'choices' => $secteurs_activite,
  157.             'data' => $parametres['id_secteur_activite_fonds']
  158.         ])
  159.         ->add('ca'TextType::class, ['required' => false])
  160.         ->add('date'TextType::class, ['required' => false])
  161.         ->add('societe_cotee'ChoiceType::class, [
  162.             'choices' => $societe_cotee,
  163.             'data' => $parametres['societe_cotee']
  164.         ])
  165.         ->add('type_recherche'HiddenType::class, [
  166.             'data' => 5,
  167.         ])
  168.         ->add('rechercher'SubmitType::class)
  169.         ->setAction($this->generateUrl('participation_fonds_index', ['codePays' => $codePays]))
  170.         ->setMethod('GET')
  171.         ->getForm();
  172.         
  173.         $tri = isset($parametres['tri']) ? $parametres['tri'] : null;
  174.         
  175.         $page $request->query->get('page');
  176.         
  177.         if ($page != null && $page != 1) {
  178.             $string_params .= "&page=" $page;
  179.         }
  180.         
  181.         $urlList $request->getPathInfo();
  182.         
  183.         $id_participation_exemple $parametreSiteManager->getValueParamSiteByParamCodePays("id_participation_exemple"$codePays);
  184.         $participation_exemple $this->sm->getSocieteById($id_participation_exemple);
  185.         $url_participation_exemple $this->generateUrl('participation_fonds_detail', ['idParticipation' => $id_participation_exemple'slug' => Utils::slugify($participation_exemple->_get('resume_activite')), 'codePays' => $codePays]);
  186.         
  187.         $publicKey $this->getParameter('RECAPTCHA_PUBLIC_KEY');
  188.         
  189.         // On récupère depuis Parametre Site
  190.         $anciennete_minimale_investissement_participation $parametreSiteManager->getValueParamSiteByParamCodePays("anciennete_minimale_investissement_participation""fr");
  191.         $anciennete_maximale_investissement_participation $parametreSiteManager->getValueParamSiteByParamCodePays("anciennete_maximale_investissement_participation""fr");
  192.         
  193.         // annee_minimale vaut l'année en cours, moins l'ancienneté maximale fixée dans Parametres Site (par exemple 2025 - 15 ans => 2010)
  194.         $annee_minimale = (int) date('Y') - $anciennete_maximale_investissement_participation;
  195.         // annee_maximale vaut l'année en cours, moins l'ancienneté minimale fixée dans Parametres Site (par exemple 2025 - 5 ans => 2020)
  196.         //$annee_maximale = (int) date('Y') - $anciennete_minimale_investissement_participation;
  197.         $annee_maximale = (int) date('Y');
  198.         
  199.         return $this->render(
  200.             'annuaires/participations_fonds/index.html.twig',
  201.             [
  202.                 'liste_annonces' => $liste_annonces,
  203.                 'nb_participations_fonds' => $nb_participations_fonds,
  204.                 'has_service' => $has_service,
  205.                 'form' => $form->createView(),
  206.                 'parametres' => $parametres,
  207.                 'parametres_localisations' => $parametres_localisations,
  208.                 'liste_fonds' => $repoSociete->donne_liste_societe_gestion(),
  209.                 'string_params' => $string_params,
  210.                 'string_params_without_page' => $string_params_without_page,
  211.                 'urlList' => $urlList,
  212.                 'tri' => $tri,
  213.                 'url_participation_exemple' => $url_participation_exemple,
  214.                 'publicKey' => $publicKey,
  215.                 'annee_minimale' => $annee_minimale,
  216.                 'annee_maximale' => $annee_maximale
  217.                 
  218.             ]
  219.         );
  220.     }
  221.     
  222.     /**
  223.      * @return Response
  224.      */
  225.     public function participation(Request $requestTranslationExtension $translationExtensionLocalisationsManagers $localisationManagerParametreSiteManagers $parametreSiteManagerGoogleTag $googleTagCommandesRepository $cr$idParticipation$codePays): Response
  226.     {
  227.         $from $request->query->get('from');
  228.         $lang $request->getSession()->get('lang');
  229.         $id_participation_exemple $parametreSiteManager->getValueParamSiteByParamCodePays("id_participation_exemple"$codePays);
  230.         
  231.         $is_example $idParticipation == $id_participation_exemple// exemple de participation visible sans service
  232.         $has_service false;
  233.         
  234.         $hasCommande false;
  235.         $lignePanier false;
  236.         $hasForfait false;
  237.         $isNoLongerAvailable false;
  238.         $forfaitAUtiliser false;
  239.         
  240.         //On verifie si l'utilisateur a le droit de consulter cette page
  241.         $user $this->getUser();
  242.         
  243.         if ($user) {
  244.             $has_service $this->dam->checkIfThisUserHasDroitService($user, [2]); // 2 = annuaire_participations
  245.             $this->lmp->ajouterActionLogsActions($user->_get('id_utilisateur'), intval(31), $user->_get('type_utilisateur'), "----"); // 31 = consulter annuaire des participations des fonds
  246.             
  247.             $lignePanier $this->em->getRepository(Panier::class)->findOneBy(
  248.                 ['login_utilisateur' => $user->_get('login_utilisateur'), "type_object" => 'annonce_PART'"id_object" => $idParticipation]
  249.                 );
  250.             
  251.             $forfaitAUtiliser $this->dam->getFrofaitAnnonceToUse($user);
  252.             if (!empty($forfaitAUtiliser)) {
  253.                 $hasForfait true;
  254.             }
  255.             
  256.             // On regarde si la participation a été commandée dans la table commandes
  257.             $hasCommande $cr->hasAnnonceCommande($user->_get('login_utilisateur'),$idParticipation,"participation");
  258.         } else {
  259.             $has_service false;
  260.         }
  261.         
  262.         $participation $this->sm->getSocieteById($idParticipation);
  263.         
  264.         if ($participation == null) {
  265.             $this->addFlash('error'$translationExtension->translate('participation introuvable'$lang'''M'''));
  266.             
  267.             // On récupère l'URL de la page précédente
  268.             $referer $request->headers->get('referer');
  269.             
  270.             if ($referer) {
  271.                 return new RedirectResponse($referer);
  272.             } else {
  273.                 return $this->redirectToRoute("index");
  274.             }
  275.         }
  276.         
  277.         if ($participation->_get('mode_participation') != "publique") {
  278.             // Si la participation a été commandée, mais qu'elle n'est plus publique
  279.             if ($hasCommande) {
  280.                 $isNoLongerAvailable true;
  281.             }
  282.         }
  283.         
  284.         if ($has_service || $is_example) {
  285.             $titre_ariane $participation->_get('raison_sociale');
  286.         } else {
  287.             $titre_ariane $participation->_get('resume_activite');
  288.         }
  289.         
  290.         // On efface les anciens parametres s'ils existent, puis on insert les nouveaux
  291.         $googleTag->removeParametresPub();
  292.         
  293.         if ($participation->_get('id_pays')) {
  294.             $googleTag->setIdPays($participation->_get('id_pays'));
  295.         }
  296.         
  297.         if ($participation->_get('id_region')) {
  298.             $googleTag->setIdRegion($participation->_get('id_region'));
  299.         }
  300.         if ($participation->_get('id_secteur_activite')) {
  301.             $googleTag->setIdSecteurActivite($participation->_get('id_secteur_activite'));
  302.         }
  303.         
  304.         //$repo = $this->getDoctrine()->getRepository(Societes::class);
  305.         //$tab_actionnaires = $repo->donne_tableau_actionnaires_institutionnels_participation($idParticipation);
  306.         //$tab_actionnaires_archive = $repo->donne_tableau_actionnaires_institutionnels_participation_archive($idParticipation);
  307.         
  308.         $tab_actionnaires $this->sm->getTableauActionnairesInstitutionnelsParticipation($idParticipation$lang);
  309.         $tab_actionnaires_archive $this->sm->getTableauActionnairesInstitutionnelsParticipationArchive($idParticipation$lang);
  310.         
  311.         $numero_cadran $this->sm->calcul_numero_image_cadran($tab_actionnaires);
  312.         
  313.         $devise_societe DeviseProvider::donne_sigle_by_devise($participation->_get('devise'));
  314.         
  315.         $buzzRolesRepo $this->getDoctrine()->getRepository(BuzzRoles::class);
  316.         
  317.         $tab_actualites $buzzRolesRepo->donne_tableau_buzz_actualites_publiques_liees($idParticipation);
  318.         
  319.         $http_host $request->server->get('HTTP_HOST');
  320.         $url substr($request->server->get('REDIRECT_URL'), 0, -4);
  321.         $canonical $http_host $url;
  322.         
  323.         $parametres $request->query->all();
  324.         $parametres ParametersProvider::prepareRechercheAvanceeParameters($parametres);
  325.         $string_params $this->serializeParams($parametres)."&from=".$from;
  326.         
  327.         $index $request->query->get('index');
  328.         $page = (int) $request->query->get('page'1);
  329.         
  330.         if ($page 1) {
  331.             $string_params .= "&page=" $page;
  332.         }
  333.         
  334.         if ($from == "cibles_potentielles") {
  335.             $colorClass "bleu";
  336.             $titreClass "titre_annonce";
  337.             $bgColor "#4B7389";
  338.             $type "vendeur";
  339.             
  340.             if ($has_service || $is_example) {
  341.                 $metaTitle '%$titre_participation%$, Participations des fonds d\'investissement, Fusacq';
  342.                 $metaDescription '%$titre_participation%$, %$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
  343.             } else {
  344.                 $metaTitle '%$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
  345.                 $metaDescription '%$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
  346.             }
  347.         } elseif ($from == "acheteurs_potentiels") {
  348.             $colorClass "vert";
  349.             $titreClass "titre_annonce_vert";
  350.             $bgColor "#5F9779";
  351.             $type "acheteur";
  352.             
  353.             if ($has_service || $is_example) {
  354.                 $metaTitle 'participation de fonds %$titre_participation%$';
  355.                 $metaDescription 'consultez cette participation de fonds %$titre_participation%$';
  356.             } else {
  357.                 $metaTitle '%$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
  358.                 $metaDescription '%$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
  359.             }
  360.         } else {
  361.             $colorClass "bleu";
  362.             $titreClass "titre_annonce";
  363.             $bgColor "#4B7389";
  364.             $type "vendeur";
  365.             
  366.             if ($has_service || $is_example) {
  367.                 $metaTitle '%$titre_participation%$, %$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
  368.                 $metaDescription 'consultez %$titre_participation%$, %$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
  369.             } else {
  370.                 $metaTitle '%$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
  371.                 $metaDescription '%$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
  372.             }
  373.         }
  374.         $parametres['from'] = $from;
  375.         
  376.         $previousAnnonce $this->sm->getIndexNParticipationsFondsList($parametres""$type$page$index 1);
  377.         $nextAnnonce $this->sm->getIndexNParticipationsFondsList($parametres""$type$page$index 1);
  378.         
  379.         $urlList $request->query->get('urlList');
  380.         $urlRetourList $urlList $urlList '?' $string_params null;
  381.         
  382.         $participation_exemple $this->sm->getSocieteById($id_participation_exemple);
  383.         $url_participation_exemple $this->generateUrl('participation_fonds_detail', ['idParticipation' => $id_participation_exemple'slug' => Utils::slugify($participation_exemple->_get('resume_activite')), 'codePays' => $codePays]);
  384.         
  385.         $from_exemple $request->query->get('from_exemple') ? $request->query->get('from_exemple') : 0;
  386.         $from_commande $request->query->get('from_commande') ? $request->query->get('from_commande') : 0;
  387.         $publicKey $this->getParameter('RECAPTCHA_PUBLIC_KEY');
  388.         
  389.         $arrayVarsTrans = [];
  390.         $arrayVarsTrans['titre_participation'] = $participation->_get('raison_sociale');
  391.         $arrayVarsTrans['resume_activite'] = $participation->_get('resume_activite');
  392.         
  393.         $metaTag $this->metaTag
  394.         ->setTitle($translationExtension->translate($metaTitle$lang"""M"""$arrayVarsTrans))
  395.         ->setDescription($translationExtension->translate($metaDescription$lang"""M"""$arrayVarsTrans))
  396.         ->setCanonical($canonical);
  397.         
  398.         return $this->render(
  399.             'annuaires/participations_fonds/participation.html.twig',
  400.             [
  401.                 'metaTag' => $metaTag,
  402.                 'from' => $from,
  403.                 'titre_ariane' => $titre_ariane,
  404.                 'participation' => $participation,
  405.                 'canonical' => $canonical,
  406.                 'tab_actionnaires' => $tab_actionnaires,
  407.                 'tab_actionnaires_archive' => $tab_actionnaires_archive,
  408.                 'devise_societe' => $devise_societe,
  409.                 'numero_cadran' => $numero_cadran,
  410.                 'tab_actualites' => $tab_actualites,
  411.                 'urlList' => $urlList,
  412.                 'urlRetourList' => $urlRetourList,
  413.                 'string_params' => $string_params,
  414.                 'previousAnnonce' => $previousAnnonce,
  415.                 'nextAnnonce' => $nextAnnonce,
  416.                 'index' => $index,
  417.                 'indexPrevious' => $index 1,
  418.                 'indexNext' => $index 1,
  419.                 'colorClass' => $colorClass,
  420.                 'titreClass' => $titreClass,
  421.                 'bgColor' => $bgColor,
  422.                 'has_service' => $has_service,
  423.                 'is_example' => $is_example,
  424.                 'url_participation_exemple' => $url_participation_exemple,
  425.                 'from_exemple' => $from_exemple,
  426.                 'from_commande' => $from_commande,
  427.                 'publicKey' => $publicKey,
  428.                 'googleTag' => $googleTag,
  429.                 'lignePanier' => $lignePanier,
  430.                 'hasForfait' => $hasForfait,
  431.                 'forfaitAUtiliser' => $forfaitAUtiliser,
  432.                 'hasCommande' => $hasCommande,
  433.                 'isNoLongerAvailable' => $isNoLongerAvailable
  434.             ]
  435.         );
  436.     }
  437.     
  438.     public function envoyermailmiseajour(Request $requestTranslationExtension $translationExtensionAesEncrytageStrategy $aesEncrytageStrategy$codePays) : Response
  439.     {
  440.         $currentUri $request->headers->get('referer');
  441.         
  442.         if ($request->isMethod('post')) {
  443.             $lang $request->getSession()->get('lang');
  444.             $error false;
  445.             
  446.             $user $this->getUser();
  447.             $idGestionnaireFonds $request->get('id_gestionnaire_fonds');
  448.             $idParticipation $request->get('id_participation');
  449.             $commentaire trim($request->get('commentaire'));
  450.             $captcha $request->get('g-recaptcha-response');
  451.             
  452.             if (!$user || !$idParticipation || !$commentaire) {
  453.                 $this->addFlash('error'$translationExtension->translate("une erreur s'est produite, veuillez réessayer"$lang'''M'''));
  454.                 $error true;
  455.             }
  456.             
  457.             if (!$captcha) {
  458.                 $this->addFlash('error'$translationExtension->translate("validation captcha obligatoire"$lang'''M'''));
  459.                 $error true;
  460.             } else {
  461.                 $secretKey $this->getParameter('RECAPTCHA_PRIVATE_KEY');
  462.                 $url 'https://www.google.com/recaptcha/api/siteverify?secret=' urlencode($secretKey) .  '&response=' urlencode($captcha);
  463.                 $response file_get_contents($url);
  464.                 $responseKeys json_decode($response,true);
  465.                 
  466.                 if (!$responseKeys["success"]) {
  467.                     $this->addFlash('error'$translationExtension->translate("captcha invalide"$lang'''M'''));
  468.                     $error true;
  469.                 }
  470.             }
  471.             
  472.             if ($error) {
  473.                 return $this->redirect($currentUri);
  474.             }
  475.             
  476.             if ($idGestionnaireFonds) {
  477.                 $fonds $this->sm->getFondsInvestissement($idGestionnaireFonds);
  478.                 $nomFonds $fonds->_get('nom_societe');
  479.             } else {
  480.                 $nomFonds null;
  481.             }
  482.             
  483.             $participation $this->sm->getSocieteById($idParticipation);
  484.             
  485.             $emailExpediteur Mailer::$senderAdress['contact'];
  486.             $emailDestinataire Mailer::$senderAdress['contact'].','.Mailer::$receiverAdress['mail_damien_noel'].','.Mailer::$receiverAdress['mail_hela'];
  487.             
  488.             $subject 'Mise à jour de participation relancée par le client';
  489.             
  490.             $varTemplate = [
  491.                 'idUtilisateur' => $user->_get('id_utilisateur'),
  492.                 'nomPrenom' => $user->_get('nom_utilisateur').' '$user->_get('prenom_utilisateur'),
  493.                 'emailUtilisateur' => $user->_get('email_utilisateur'),
  494.                 'telephoneUtilisateur' => $aesEncrytageStrategy->decryptage($user->_get('telephone_utilisateur')),
  495.                 'idParticipation' => $idParticipation,
  496.                 'nomParticipation' => $participation->_get('raison_sociale'),
  497.                 'idGestionnaireFonds' => $idGestionnaireFonds,
  498.                 'nomFonds' => $nomFonds,
  499.                 'commentaire' => $commentaire,
  500.                 'dns_fusacq' => $this->dns_fusacq
  501.             ];
  502.             
  503.             $this->mailer->sendmail(
  504.                 $emailExpediteur,
  505.                 $emailDestinataire,
  506.                 null,
  507.                 null,
  508.                 $subject,
  509.                 null,
  510.                 null,
  511.                 'mails/templates/annuaire_participations_fonds/mise_a_jour_participation.html.twig',
  512.                 $varTemplate,
  513.                 null
  514.                 );
  515.             
  516.             $this->addFlash('success'$translationExtension->translate("votre proposition de mise à jour a bien été envoyée."$lang'''M'''));
  517.             $this->addFlash('success'$translationExtension->translate("nous vous remercions pour votre participation active."$lang'''M'''));
  518.         } else {
  519.             $this->addFlash('error'$translationExtension->translate("une erreur s'est produite, veuillez réessayer"$lang'''M'''));
  520.         }
  521.         
  522.         return $this->redirect($currentUri);
  523.     }
  524.     
  525.     public function formulaireparticipationsprovenancemail(Request $requestCodeAccesService $codeAccessServiceTranslationExtension $translationExtensionAesEncrytageStrategy $aesLocalisationsManagers $localisationManager$codePays): Response
  526.     {
  527.         $code $request->query->get('ref');
  528.         
  529.         if (!$code) {
  530.             return $this->redirectToRoute('index');
  531.         }
  532.         
  533.         $idFonds $aes->decryptage($code);
  534.         
  535.         if (!is_numeric($idFonds)) {
  536.             return $this->redirectToRoute('index');
  537.         }
  538.         
  539.         $fonds $this->em->getRepository(SocieteGestionnaireFonds::class)->findOneBy(['id_gestionnaire_fonds' => $idFonds]);
  540.         
  541.         if (!$fonds) {
  542.             return $this->redirectToRoute('index');
  543.         }
  544.         
  545.         // ======================== COMMENTAIRES SUR CETTE PARTIE ========================
  546.         //
  547.         // On peut arriver sur cette méthode par 2 façons:
  548.         // - soit par redirection à la suite du premier formulaire de MaJ du Fonds (1)
  549.         // - soit directement via un lien reçu par mail (2)
  550.         //
  551.         // (1) Si on arrive par redirection du premier formulaire, c'est que l'adresse mail du responsable du fonds (mail_respon_maj) a été utilisé 
  552.         // (2) Si on arrive par lien direct, ça peut être soit l'adresse mail du responsable des maj des participations (mail_maj_participation) s'il est renseigné, soit celui du responsable du fonds (mail_respon_maj)
  553.         
  554.         // On vérifie tout d'abord si l'email du responsable des maj des participations est renseigné, 
  555.         if ($fonds->__get('mail_maj_participation') && trim($fonds->__get('mail_maj_participation')) != "") {
  556.             // Si oui, on vérifie s'il a le service
  557.             if ($codeAccessService->checkService($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds')) {
  558.                 $authorizedAccess true;
  559.                 $email_service $fonds->__get('mail_maj_participation');
  560.             // Sinon on vérifie si le responsable des maj du fonds a le service
  561.             } elseif ($codeAccessService->checkService($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds')) {
  562.                 $authorizedAccess true;
  563.                 $email_service $fonds->__get('mail_respon_maj');
  564.             // Sinon on génère le code pour le responsable des maj des participations
  565.             } else {
  566.                 $authorizedAccess $codeAccessService->check($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds');
  567.                 $email_service $fonds->__get('mail_maj_participation');
  568.             }
  569.         // Sinon on vérifie l'adresse mail du responsable du fonds (mail_respon_maj)
  570.         } else {
  571.             $authorizedAccess $codeAccessService->check($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds');
  572.             $email_service $fonds->__get('mail_respon_maj');
  573.         }
  574.         
  575.         $demande_publication true;
  576.         $tri $request->query->get('tri''nom_asc');
  577.         
  578.         $participations $this->sm->getParticipationsDunFonds($idFonds$demande_publication$tri);
  579.         
  580.         if ($request->isMethod('POST')) {
  581.             if ($request->request->get('confirmationMAJ') == 1) {
  582.                 $lang $request->getSession()->get('lang');
  583.                 $this->addFlash('success'$translationExtension->translate("vos participations ont bien été mises à jour !"$lang'''M'''));
  584.                 $fonds->__set('date_maj_responsable_participation'date('Ymd'));
  585.                 $this->em->persist($fonds);
  586.                 $this->em->flush();
  587.             }
  588.         }
  589.         
  590.         $annee_actuelle date('Y');
  591.         
  592.         return $this->render('annuaires/participations_fonds/formulaire_participations_provenance_mail.html.twig', [
  593.             //'form' => $form->createView(),
  594.             'email_service' => $email_service,
  595.             'fonds' => $fonds,
  596.             'participations' => $participations,
  597.             'authorizedAccess' => $authorizedAccess,
  598.             'annee_actuelle' => $annee_actuelle,
  599.             'tri' => $tri,
  600.             'code' => $code
  601.         ]);
  602.     }
  603.     
  604.     public function ajaxmodifierparticipation(Request $requestCodeAccesService $codeAccessService) {
  605.         $id_gestionnaire_fonds $request->request->get('id_gestionnaire_fonds');
  606.         $fonds $this->em->getRepository(SocieteGestionnaireFonds::class)->findOneBy(['id_gestionnaire_fonds' => $id_gestionnaire_fonds]);
  607.         
  608.         if (!$fonds) {
  609.             return false;
  610.         }
  611.         
  612.         // Voir explications dans la methode formulaireparticipationsprovenancemail
  613.         // On vérifie tout d'abord si l'email du responsable des maj des participations est renseigné,
  614.         if ($fonds->__get('mail_maj_participation') && trim($fonds->__get('mail_maj_participation')) != "") {
  615.             // Si oui, on vérifie s'il a le service
  616.             if ($codeAccessService->checkService($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds')) {
  617.                 $authorizedAccess true;
  618.                 // Sinon on vérifie si le responsable des maj du fonds a le service
  619.             } elseif ($codeAccessService->checkService($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds')) {
  620.                 $authorizedAccess true;
  621.                 // Sinon on génère le code pour le responsable des maj des participations
  622.             } else {
  623.                 $authorizedAccess $codeAccessService->check($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds');
  624.             }
  625.             // Sinon on vérifie l'adresse mail du responsable du fonds (mail_respon_maj)
  626.         } else {
  627.             $authorizedAccess $codeAccessService->check($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds');
  628.         }
  629.         
  630.         if (!$authorizedAccess) {
  631.             return false;
  632.         }
  633.         
  634.         $id_participation $request->request->get('id_participation');
  635.         $raison_sociale $request->request->get('raison_sociale');
  636.         $numero_siren $request->request->get('numero_siren');
  637.         $site_internet $request->request->get('site_internet');
  638.         $description_activite $request->request->get('description_activite');
  639.         $date $request->request->get('date');
  640.         $ca_n $request->request->get('ca_n');
  641.         $annee_n $request->request->get('annee_n');
  642.         
  643.         $participation $this->em->getRepository(Participation::class)->findOneBy(['id_societe' => $id_participation]);
  644.         $lien_participations_fonds $this->em->getRepository(LienParticipationsFonds::class)->findOneBy(['id_participation' => $id_participation"id_gestionnaire_fonds" => $id_gestionnaire_fonds]);
  645.         
  646.         if ($raison_sociale) {
  647.             $participation->_set('raison_sociale'$raison_sociale);
  648.         }
  649.         if ($numero_siren) {
  650.             $participation->_set('numero_siren'$numero_siren);
  651.         }
  652.         if ($site_internet) {
  653.             $participation->_set('site_internet'$site_internet);
  654.         }
  655.         if ($description_activite) {
  656.             $participation->_set('description_activite'$description_activite);
  657.         }
  658.         if ($date) {
  659.             $lien_participations_fonds->_set('date_investissement'$date);
  660.         }
  661.         if ($ca_n) {
  662.             $participation->_set('ca_n'$ca_n);
  663.         }
  664.         if ($annee_n) {
  665.             $participation->_set('annee_n'$annee_n);
  666.         }
  667.         
  668.         $this->em->persist($participation);
  669.         $this->em->persist($lien_participations_fonds);
  670.         $this->em->flush();
  671.         
  672.         $sortie=array();
  673.         
  674.         $sortie['raison_sociale']=$participation->_get('raison_sociale');
  675.         $sortie['numero_siren']=$participation->_get('numero_siren');
  676.         $sortie['site_internet']=$participation->_get('site_internet');
  677.         $sortie['description_activite']=$participation->_get('description_activite');
  678.         
  679.         return new JsonResponse($sortie);
  680.     }
  681.     
  682.     public function ajaxsortirparticipation(Request $requestCodeAccesService $codeAccessService) {
  683.         $id_gestionnaire_fonds $request->request->get('id_gestionnaire_fonds');
  684.         $fonds $this->em->getRepository(SocieteGestionnaireFonds::class)->findOneBy(['id_gestionnaire_fonds' => $id_gestionnaire_fonds]);
  685.         
  686.         if (!$fonds) {
  687.             return false;
  688.         }
  689.         
  690.         // Voir explications dans la methode formulaireparticipationsprovenancemail
  691.         // On vérifie tout d'abord si l'email du responsable des maj des participations est renseigné,
  692.         if ($fonds->__get('mail_maj_participation') && trim($fonds->__get('mail_maj_participation')) != "") {
  693.             // Si oui, on vérifie s'il a le service
  694.             if ($codeAccessService->checkService($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds')) {
  695.                 $authorizedAccess true;
  696.                 // Sinon on vérifie si le responsable des maj du fonds a le service
  697.             } elseif ($codeAccessService->checkService($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds')) {
  698.                 $authorizedAccess true;
  699.                 // Sinon on génère le code pour le responsable des maj des participations
  700.             } else {
  701.                 $authorizedAccess $codeAccessService->check($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds');
  702.             }
  703.             // Sinon on vérifie l'adresse mail du responsable du fonds (mail_respon_maj)
  704.         } else {
  705.             $authorizedAccess $codeAccessService->check($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds');
  706.         }
  707.         
  708.         if (!$authorizedAccess) {
  709.             return false;
  710.         }
  711.         
  712.         $id_participation $request->request->get('id_participation');
  713.         $id_gestionnaire_fonds $request->request->get('id_gestionnaire_fonds');
  714.         $mode_date $request->request->get('date_sortie');
  715.         $annee_sortie $request->request->get('annee_sortie');
  716.         $mois_sortie $request->request->get('mois_sortie');
  717.         
  718.         $lien_participations_fonds $this->em->getRepository(LienParticipationsFonds::class)->findBy(['id_participation' => $id_participation"id_gestionnaire_fonds" => $id_gestionnaire_fonds]);
  719.         
  720.         $date_sortie "";
  721.         
  722.         if ($mode_date == '1') {
  723.             $date_sortie $annee_sortie.$mois_sortie;
  724.         } elseif ($mode_date == '2') {
  725.             foreach ($lien_participations_fonds as $lien){
  726.                 $this->em->remove($lien);
  727.                 $this->em->flush();
  728.             }
  729.             
  730.             return new JsonResponse(['mois' => '']);
  731.         } else {
  732.             
  733.         }
  734.         
  735.         foreach ($lien_participations_fonds as $lien){
  736.             $lien->_set("mode""sortie");
  737.             $lien->_set("date_sortie"$date_sortie);
  738.             $this->em->persist($lien);
  739.             $this->em->flush();
  740.         }
  741.         
  742.         $mois_sortie DateProvider::donne_nom_mois($mois_sortie);
  743.         
  744.         return new JsonResponse(['mois' => $mois_sortie]);
  745.     }
  746.     
  747.     public function ajaxajouterparticipationtemporaire(Request $requestCodeAccesService $codeAccessService) {
  748.         $id_gestionnaire_fonds $request->request->get('id_gestionnaire_fonds');
  749.         $fonds $this->em->getRepository(SocieteGestionnaireFonds::class)->findOneBy(['id_gestionnaire_fonds' => $id_gestionnaire_fonds]);
  750.         
  751.         if (!$fonds) {
  752.             return false;
  753.         }
  754.         
  755.         // Voir explications dans la methode formulaireparticipationsprovenancemail
  756.         // On vérifie tout d'abord si l'email du responsable des maj des participations est renseigné,
  757.         if ($fonds->__get('mail_maj_participation') && trim($fonds->__get('mail_maj_participation')) != "") {
  758.             // Si oui, on vérifie s'il a le service
  759.             if ($codeAccessService->checkService($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds')) {
  760.                 $authorizedAccess true;
  761.                 // Sinon on vérifie si le responsable des maj du fonds a le service
  762.             } elseif ($codeAccessService->checkService($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds')) {
  763.                 $authorizedAccess true;
  764.                 // Sinon on génère le code pour le responsable des maj des participations
  765.             } else {
  766.                 $authorizedAccess $codeAccessService->check($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds');
  767.             }
  768.             // Sinon on vérifie l'adresse mail du responsable du fonds (mail_respon_maj)
  769.         } else {
  770.             $authorizedAccess $codeAccessService->check($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds');
  771.         }
  772.         
  773.         if (!$authorizedAccess) {
  774.             return false;
  775.         }
  776.         
  777.         $id_gestionnaire_fonds $request->request->get('id_gestionnaire_fonds');
  778.         $nom_participation $request->request->get('nom_participation');
  779.         $date_participation $request->request->get('date_participation');
  780.         // On insert la société temporaire
  781.         $nouvelle_societe = new Societes();
  782.         $nouvelle_societe->_set("raison_sociale"$nom_participation);
  783.         $nouvelle_societe->_set("mode_societe"'temporaire');
  784.         $nouvelle_societe->_set("mode_participation"'demande_publication');
  785.         $this->em->persist($nouvelle_societe);
  786.         $this->em->flush();
  787.         $id_societe $nouvelle_societe->_get('id_societe');
  788.         
  789.         $lien_participations_fonds = new LienParticipationsFonds();
  790.         $lien_participations_fonds->_set('id_gestionnaire_fonds'$id_gestionnaire_fonds);
  791.         $lien_participations_fonds->_set('id_participation'$id_societe);
  792.         $lien_participations_fonds->_set('date_investissement'$date_participation);
  793.         $lien_participations_fonds->_set('date_demande_publication'date("Ymd"));
  794.         $lien_participations_fonds->_set('mode''demande_publication');
  795.         $this->em->persist($lien_participations_fonds);
  796.         $this->em->flush();
  797.         $id_participation $lien_participations_fonds->_get("id_participation");
  798.         
  799.         return new JsonResponse(array(
  800.             'id_societe' => $id_societe
  801.             /*'idFonds'=>$idFonds,
  802.             'nomNouvelleParticipation'=>$nomNouvelleParticipation,
  803.             'dateNouvelleParticipation'=>$dateNouvelleParticipation,
  804.             "idSociete"=>$idSociete,
  805.             "idParticipation"=>$idParticipation,
  806.             'resultat'=>true*/
  807.         ));
  808.     }
  809.     
  810.     public function ajaxupdateparticipation(Request $requestCodeAccesService $codeAccessService) {
  811.         $id_gestionnaire_fonds $request->request->get('id_gestionnaire_fonds');
  812.         $fonds $this->em->getRepository(SocieteGestionnaireFonds::class)->findOneBy(['id_gestionnaire_fonds' => $id_gestionnaire_fonds]);
  813.         
  814.         if (!$fonds) {
  815.             return false;
  816.         }
  817.         
  818.         // Voir explications dans la methode formulaireparticipationsprovenancemail
  819.         // On vérifie tout d'abord si l'email du responsable des maj des participations est renseigné,
  820.         if ($fonds->__get('mail_maj_participation') && trim($fonds->__get('mail_maj_participation')) != "") {
  821.             // Si oui, on vérifie s'il a le service
  822.             if ($codeAccessService->checkService($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds')) {
  823.                 $authorizedAccess true;
  824.                 // Sinon on vérifie si le responsable des maj du fonds a le service
  825.             } elseif ($codeAccessService->checkService($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds')) {
  826.                 $authorizedAccess true;
  827.                 // Sinon on génère le code pour le responsable des maj des participations
  828.             } else {
  829.                 $authorizedAccess $codeAccessService->check($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds');
  830.             }
  831.             // Sinon on vérifie l'adresse mail du responsable du fonds (mail_respon_maj)
  832.         } else {
  833.             $authorizedAccess $codeAccessService->check($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds');
  834.         }
  835.         
  836.         if (!$authorizedAccess) {
  837.             return false;
  838.         }
  839.         
  840.         $id_societe $request->request->get('id_participation');
  841.         $siren $request->request->get('siren');
  842.         $site_internet $request->request->get('site_internet');
  843.         $description_activite $request->request->get('description_activite');
  844.         $ca_n $request->request->get('ca_n');
  845.         $annee_n $request->request->get('annee_n');
  846.         
  847.         if ($id_societe) {
  848.             $societe $this->em->getRepository(Societes::class)->findOneBy(['id_societe' => $id_societe]);
  849.             if ($siren) {
  850.                 $societe->_set('numero_siren'$siren);
  851.             }
  852.             if ($site_internet) {
  853.                 $societe->_set('site_internet'$site_internet);
  854.             }
  855.             if ($description_activite) {
  856.                 $societe->_set('description_activite'$description_activite);
  857.             }
  858.             if ($ca_n) {
  859.                 $societe->_set('ca_n'$ca_n);
  860.             }
  861.             if ($annee_n) {
  862.                 $societe->_set('annee_n'$annee_n);
  863.             }
  864.             $this->em->persist($societe);
  865.             $this->em->flush();
  866.         }
  867.         return new JsonResponse(array(
  868.             'id_societe' => $id_societe
  869.         ));
  870.     }
  871.     
  872.     private function serializeParams($parametres)
  873.     {
  874.         $string_params "";
  875.         
  876.         foreach ($parametres as $name => $value) {
  877.             if ($name != "rechercher" && $name != "type" && $name != "array_localisation") {
  878.                 if ($string_params == "") {
  879.                     $string_params .= $name."=".$value;
  880.                 } else {
  881.                     $string_params .= "&".$name."=".$value;
  882.                 }
  883.             }
  884.         }
  885.         
  886.         return $string_params;
  887.     }
  888. }