<?php
declare(strict_types=1);
/**
* @author Raymond
*/
namespace App\Controller;
use App\Services\MetaTag;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\JsonResponse;
use App\Services\ManagerEntity\SocietesManagers;
use App\Twig\TranslationExtension;
use App\Helper\Utils;
use App\Entity\Societes;
use App\Entity\BuzzRoles;
use App\Entity\SocieteGestionnaireFonds;
use App\Helper\DeviseProvider;
use Knp\Component\Pager\PaginatorInterface;
use App\Helper\ParametersProvider;
use App\Services\ManagerEntity\LocalisationsManagers;
use App\Services\ManagerEntity\SecteursActiviteManagers;
use Symfony\Component\Form\Extension\Core\Type\ButtonType;
use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Form\Extension\Core\Type\HiddenType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Forms;
use App\Services\ManagerEntity\ParametreSiteManagers;
use App\Services\LogMarketingProvider;
use App\Services\ManagerEntity\DroitsAccesManagers;
use App\Services\Mailer;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use App\Services\Encryptage\AesEncrytageStrategy;
use App\Services\GoogleTag;
use App\Services\CodeAccesService;
use Doctrine\ORM\EntityManagerInterface;
use App\Entity\Participation;
use App\Entity\LienParticipationsFonds;
use App\Helper\DateProvider;
use App\Entity\Panier;
use App\Repository\CommandesRepository;
class AnnuaireParticipationsFondsController extends EntityUsingController
{
/**
* @var DroitsAccesManagers $dam;
*/
private $dam;
/**
* @var SocietesManagers
*/
private $sm;
/**
* @var LogMarketingProvider
*/
private $lmp;
/**
* @var Mailer
*/
private $mailer;
/**
* @var ParameterBagInterface
*/
private $params;
/**
* @var MetaTag
*/
private $metaTag;
/**
* @var EntityManagerInterface
*/
private $em;
/**
* @param SocietesManagers $sm
*/
public function __construct(DroitsAccesManagers $dam, SocietesManagers $sm, LogMarketingProvider $lmp, Mailer $mailer, ParameterBagInterface $params, MetaTag $metaTag, EntityManagerInterface $em)
{
$this->dam = $dam;
$this->sm = $sm;
$this->lmp = $lmp;
$this->mailer = $mailer;
$this->dns_fusacq = $params->get('app.DNS')['FUSACQ'];
$this->metaTag = $metaTag;
$this->em = $em;
}
/**
* @return Response
*/
public function index(Request $request, SecteursActiviteManagers $secteursActiviteManager, TranslationExtension $translationExtension, PaginatorInterface $paginator, LocalisationsManagers $localisationManager, ParametreSiteManagers $parametreSiteManager, $codePays): Response
{
$parametres = $request->query->all();
$parametres = ParametersProvider::prepareRechercheParticipationsFondsParameters($parametres);
$parametres_localisations = ParametersProvider::prepareLocalisationsParameters($localisationManager, $parametres);
$string_params = $string_params_without_page = $this->serializeParams($parametres);
$repoSociete = $this->getDoctrine()->getRepository(Societes::class);
$nb_participations_fonds = $repoSociete->donne_nb_participations_fonds($parametres);
$liste_annonces = $this->sm->getParticipationsFondsList($request, $paginator, $parametres, "");
$has_service = false;
//On verifie si l'utilisateur a le droit de consulter cette page
$user = $this->getUser();
if ($user) {
$has_service = $this->dam->checkIfThisUserHasDroitService($user, [2]); // 2 = annuaire_participations
$this->lmp->ajouterActionLogsActions($user->_get('id_utilisateur'), intval(31), $user->_get('type_utilisateur'), "----"); // 31 = consulter annuaire des participations des fonds
} else {
$has_service = false;
}
$lang = $request->getSession()->get('lang');
$idPays = null; // A developper pour le select Pays
$actionnaires = $repoSociete->donne_liste_societe_gestion_select();
$pays = $this->sm->donne_option_select_pays_cible_potentielle();
$regions = [];
$secteurs_activite = $secteursActiviteManager->donne_option_select_secteurs_activite_fonds();
$societe_cotee = [
$translationExtension->translate('indifferent', $lang, '', 'M', '') => '0',
$translationExtension->translate('oui', $lang, '', 'M', '') => 'oui',
$translationExtension->translate('non', $lang, '', 'M', '') => 'non',
];
$formFactory = Forms::createFormFactoryBuilder()->getFormFactory();
$form = $formFactory->createNamedBuilder('')
->add('id_gestionnaire_fonds', ChoiceType::class, [
'choices' => $actionnaires,
'data' => $parametres['id_gestionnaire_fonds']
])
->add('id_pays', ChoiceType::class, [
'choices' => $pays,
])
->add('id_region', ChoiceType::class, [
'choices' => $regions,
])
->add('id_localisation', HiddenType::class, [
'data' => $parametres['id_localisation']
])
->add('ajouter', ButtonType::class)
->add('reference_mots_cles', TextType::class, [
'required' => false,
'data' => $parametres['reference_mots_cles']
])
->add('id_secteur_activite_fonds', ChoiceType::class, [
'choices' => $secteurs_activite,
'data' => $parametres['id_secteur_activite_fonds']
])
->add('ca', TextType::class, ['required' => false])
->add('date', TextType::class, ['required' => false])
->add('societe_cotee', ChoiceType::class, [
'choices' => $societe_cotee,
'data' => $parametres['societe_cotee']
])
->add('type_recherche', HiddenType::class, [
'data' => 5,
])
->add('rechercher', SubmitType::class)
->setAction($this->generateUrl('participation_fonds_index', ['codePays' => $codePays]))
->setMethod('GET')
->getForm();
$tri = isset($parametres['tri']) ? $parametres['tri'] : null;
$page = $request->query->get('page');
if ($page != null && $page != 1) {
$string_params .= "&page=" . $page;
}
$urlList = $request->getPathInfo();
$id_participation_exemple = $parametreSiteManager->getValueParamSiteByParamCodePays("id_participation_exemple", $codePays);
$participation_exemple = $this->sm->getSocieteById($id_participation_exemple);
$url_participation_exemple = $this->generateUrl('participation_fonds_detail', ['idParticipation' => $id_participation_exemple, 'slug' => Utils::slugify($participation_exemple->_get('resume_activite')), 'codePays' => $codePays]);
$publicKey = $this->getParameter('RECAPTCHA_PUBLIC_KEY');
// On récupère depuis Parametre Site
$anciennete_minimale_investissement_participation = $parametreSiteManager->getValueParamSiteByParamCodePays("anciennete_minimale_investissement_participation", "fr");
$anciennete_maximale_investissement_participation = $parametreSiteManager->getValueParamSiteByParamCodePays("anciennete_maximale_investissement_participation", "fr");
// annee_minimale vaut l'année en cours, moins l'ancienneté maximale fixée dans Parametres Site (par exemple 2025 - 15 ans => 2010)
$annee_minimale = (int) date('Y') - $anciennete_maximale_investissement_participation;
// annee_maximale vaut l'année en cours, moins l'ancienneté minimale fixée dans Parametres Site (par exemple 2025 - 5 ans => 2020)
//$annee_maximale = (int) date('Y') - $anciennete_minimale_investissement_participation;
$annee_maximale = (int) date('Y');
return $this->render(
'annuaires/participations_fonds/index.html.twig',
[
'liste_annonces' => $liste_annonces,
'nb_participations_fonds' => $nb_participations_fonds,
'has_service' => $has_service,
'form' => $form->createView(),
'parametres' => $parametres,
'parametres_localisations' => $parametres_localisations,
'liste_fonds' => $repoSociete->donne_liste_societe_gestion(),
'string_params' => $string_params,
'string_params_without_page' => $string_params_without_page,
'urlList' => $urlList,
'tri' => $tri,
'url_participation_exemple' => $url_participation_exemple,
'publicKey' => $publicKey,
'annee_minimale' => $annee_minimale,
'annee_maximale' => $annee_maximale
]
);
}
/**
* @return Response
*/
public function participation(Request $request, TranslationExtension $translationExtension, LocalisationsManagers $localisationManager, ParametreSiteManagers $parametreSiteManager, GoogleTag $googleTag, CommandesRepository $cr, $idParticipation, $codePays): Response
{
$from = $request->query->get('from');
$lang = $request->getSession()->get('lang');
$id_participation_exemple = $parametreSiteManager->getValueParamSiteByParamCodePays("id_participation_exemple", $codePays);
$is_example = $idParticipation == $id_participation_exemple; // exemple de participation visible sans service
$has_service = false;
$hasCommande = false;
$lignePanier = false;
$hasForfait = false;
$isNoLongerAvailable = false;
$forfaitAUtiliser = false;
//On verifie si l'utilisateur a le droit de consulter cette page
$user = $this->getUser();
if ($user) {
$has_service = $this->dam->checkIfThisUserHasDroitService($user, [2]); // 2 = annuaire_participations
$this->lmp->ajouterActionLogsActions($user->_get('id_utilisateur'), intval(31), $user->_get('type_utilisateur'), "----"); // 31 = consulter annuaire des participations des fonds
$lignePanier = $this->em->getRepository(Panier::class)->findOneBy(
['login_utilisateur' => $user->_get('login_utilisateur'), "type_object" => 'annonce_PART', "id_object" => $idParticipation]
);
$forfaitAUtiliser = $this->dam->getFrofaitAnnonceToUse($user);
if (!empty($forfaitAUtiliser)) {
$hasForfait = true;
}
// On regarde si la participation a été commandée dans la table commandes
$hasCommande = $cr->hasAnnonceCommande($user->_get('login_utilisateur'),$idParticipation,"participation");
} else {
$has_service = false;
}
$participation = $this->sm->getSocieteById($idParticipation);
if ($participation == null) {
$this->addFlash('error', $translationExtension->translate('participation introuvable', $lang, '', 'M', ''));
// On récupère l'URL de la page précédente
$referer = $request->headers->get('referer');
if ($referer) {
return new RedirectResponse($referer);
} else {
return $this->redirectToRoute("index");
}
}
if ($participation->_get('mode_participation') != "publique") {
// Si la participation a été commandée, mais qu'elle n'est plus publique
if ($hasCommande) {
$isNoLongerAvailable = true;
}
}
if ($has_service || $is_example) {
$titre_ariane = $participation->_get('raison_sociale');
} else {
$titre_ariane = $participation->_get('resume_activite');
}
// On efface les anciens parametres s'ils existent, puis on insert les nouveaux
$googleTag->removeParametresPub();
if ($participation->_get('id_pays')) {
$googleTag->setIdPays($participation->_get('id_pays'));
}
if ($participation->_get('id_region')) {
$googleTag->setIdRegion($participation->_get('id_region'));
}
if ($participation->_get('id_secteur_activite')) {
$googleTag->setIdSecteurActivite($participation->_get('id_secteur_activite'));
}
//$repo = $this->getDoctrine()->getRepository(Societes::class);
//$tab_actionnaires = $repo->donne_tableau_actionnaires_institutionnels_participation($idParticipation);
//$tab_actionnaires_archive = $repo->donne_tableau_actionnaires_institutionnels_participation_archive($idParticipation);
$tab_actionnaires = $this->sm->getTableauActionnairesInstitutionnelsParticipation($idParticipation, $lang);
$tab_actionnaires_archive = $this->sm->getTableauActionnairesInstitutionnelsParticipationArchive($idParticipation, $lang);
$numero_cadran = $this->sm->calcul_numero_image_cadran($tab_actionnaires);
$devise_societe = DeviseProvider::donne_sigle_by_devise($participation->_get('devise'));
$buzzRolesRepo = $this->getDoctrine()->getRepository(BuzzRoles::class);
$tab_actualites = $buzzRolesRepo->donne_tableau_buzz_actualites_publiques_liees($idParticipation);
$http_host = $request->server->get('HTTP_HOST');
$url = substr($request->server->get('REDIRECT_URL'), 0, -4);
$canonical = $http_host . $url;
$parametres = $request->query->all();
$parametres = ParametersProvider::prepareRechercheAvanceeParameters($parametres);
$string_params = $this->serializeParams($parametres)."&from=".$from;
$index = $request->query->get('index');
$page = (int) $request->query->get('page', 1);
if ($page > 1) {
$string_params .= "&page=" . $page;
}
if ($from == "cibles_potentielles") {
$colorClass = "bleu";
$titreClass = "titre_annonce";
$bgColor = "#4B7389";
$type = "vendeur";
if ($has_service || $is_example) {
$metaTitle = '%$titre_participation%$, Participations des fonds d\'investissement, Fusacq';
$metaDescription = '%$titre_participation%$, %$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
} else {
$metaTitle = '%$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
$metaDescription = '%$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
}
} elseif ($from == "acheteurs_potentiels") {
$colorClass = "vert";
$titreClass = "titre_annonce_vert";
$bgColor = "#5F9779";
$type = "acheteur";
if ($has_service || $is_example) {
$metaTitle = 'participation de fonds %$titre_participation%$';
$metaDescription = 'consultez cette participation de fonds %$titre_participation%$';
} else {
$metaTitle = '%$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
$metaDescription = '%$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
}
} else {
$colorClass = "bleu";
$titreClass = "titre_annonce";
$bgColor = "#4B7389";
$type = "vendeur";
if ($has_service || $is_example) {
$metaTitle = '%$titre_participation%$, %$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
$metaDescription = 'consultez %$titre_participation%$, %$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
} else {
$metaTitle = '%$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
$metaDescription = '%$resume_activite%$, Participations des fonds d\'investissement, Fusacq';
}
}
$parametres['from'] = $from;
$previousAnnonce = $this->sm->getIndexNParticipationsFondsList($parametres, "", $type, $page, $index - 1);
$nextAnnonce = $this->sm->getIndexNParticipationsFondsList($parametres, "", $type, $page, $index + 1);
$urlList = $request->query->get('urlList');
$urlRetourList = $urlList ? $urlList . '?' . $string_params : null;
$participation_exemple = $this->sm->getSocieteById($id_participation_exemple);
$url_participation_exemple = $this->generateUrl('participation_fonds_detail', ['idParticipation' => $id_participation_exemple, 'slug' => Utils::slugify($participation_exemple->_get('resume_activite')), 'codePays' => $codePays]);
$from_exemple = $request->query->get('from_exemple') ? $request->query->get('from_exemple') : 0;
$from_commande = $request->query->get('from_commande') ? $request->query->get('from_commande') : 0;
$publicKey = $this->getParameter('RECAPTCHA_PUBLIC_KEY');
$arrayVarsTrans = [];
$arrayVarsTrans['titre_participation'] = $participation->_get('raison_sociale');
$arrayVarsTrans['resume_activite'] = $participation->_get('resume_activite');
$metaTag = $this->metaTag
->setTitle($translationExtension->translate($metaTitle, $lang, "", "M", "", $arrayVarsTrans))
->setDescription($translationExtension->translate($metaDescription, $lang, "", "M", "", $arrayVarsTrans))
->setCanonical($canonical);
return $this->render(
'annuaires/participations_fonds/participation.html.twig',
[
'metaTag' => $metaTag,
'from' => $from,
'titre_ariane' => $titre_ariane,
'participation' => $participation,
'canonical' => $canonical,
'tab_actionnaires' => $tab_actionnaires,
'tab_actionnaires_archive' => $tab_actionnaires_archive,
'devise_societe' => $devise_societe,
'numero_cadran' => $numero_cadran,
'tab_actualites' => $tab_actualites,
'urlList' => $urlList,
'urlRetourList' => $urlRetourList,
'string_params' => $string_params,
'previousAnnonce' => $previousAnnonce,
'nextAnnonce' => $nextAnnonce,
'index' => $index,
'indexPrevious' => $index - 1,
'indexNext' => $index + 1,
'colorClass' => $colorClass,
'titreClass' => $titreClass,
'bgColor' => $bgColor,
'has_service' => $has_service,
'is_example' => $is_example,
'url_participation_exemple' => $url_participation_exemple,
'from_exemple' => $from_exemple,
'from_commande' => $from_commande,
'publicKey' => $publicKey,
'googleTag' => $googleTag,
'lignePanier' => $lignePanier,
'hasForfait' => $hasForfait,
'forfaitAUtiliser' => $forfaitAUtiliser,
'hasCommande' => $hasCommande,
'isNoLongerAvailable' => $isNoLongerAvailable
]
);
}
public function envoyermailmiseajour(Request $request, TranslationExtension $translationExtension, AesEncrytageStrategy $aesEncrytageStrategy, $codePays) : Response
{
$currentUri = $request->headers->get('referer');
if ($request->isMethod('post')) {
$lang = $request->getSession()->get('lang');
$error = false;
$user = $this->getUser();
$idGestionnaireFonds = $request->get('id_gestionnaire_fonds');
$idParticipation = $request->get('id_participation');
$commentaire = trim($request->get('commentaire'));
$captcha = $request->get('g-recaptcha-response');
if (!$user || !$idParticipation || !$commentaire) {
$this->addFlash('error', $translationExtension->translate("une erreur s'est produite, veuillez réessayer", $lang, '', 'M', ''));
$error = true;
}
if (!$captcha) {
$this->addFlash('error', $translationExtension->translate("validation captcha obligatoire", $lang, '', 'M', ''));
$error = true;
} else {
$secretKey = $this->getParameter('RECAPTCHA_PRIVATE_KEY');
$url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($secretKey) . '&response=' . urlencode($captcha);
$response = file_get_contents($url);
$responseKeys = json_decode($response,true);
if (!$responseKeys["success"]) {
$this->addFlash('error', $translationExtension->translate("captcha invalide", $lang, '', 'M', ''));
$error = true;
}
}
if ($error) {
return $this->redirect($currentUri);
}
if ($idGestionnaireFonds) {
$fonds = $this->sm->getFondsInvestissement($idGestionnaireFonds);
$nomFonds = $fonds->_get('nom_societe');
} else {
$nomFonds = null;
}
$participation = $this->sm->getSocieteById($idParticipation);
$emailExpediteur = Mailer::$senderAdress['contact'];
$emailDestinataire = Mailer::$senderAdress['contact'].','.Mailer::$receiverAdress['mail_damien_noel'].','.Mailer::$receiverAdress['mail_hela'];
$subject = 'Mise à jour de participation relancée par le client';
$varTemplate = [
'idUtilisateur' => $user->_get('id_utilisateur'),
'nomPrenom' => $user->_get('nom_utilisateur').' '. $user->_get('prenom_utilisateur'),
'emailUtilisateur' => $user->_get('email_utilisateur'),
'telephoneUtilisateur' => $aesEncrytageStrategy->decryptage($user->_get('telephone_utilisateur')),
'idParticipation' => $idParticipation,
'nomParticipation' => $participation->_get('raison_sociale'),
'idGestionnaireFonds' => $idGestionnaireFonds,
'nomFonds' => $nomFonds,
'commentaire' => $commentaire,
'dns_fusacq' => $this->dns_fusacq
];
$this->mailer->sendmail(
$emailExpediteur,
$emailDestinataire,
null,
null,
$subject,
null,
null,
'mails/templates/annuaire_participations_fonds/mise_a_jour_participation.html.twig',
$varTemplate,
null
);
$this->addFlash('success', $translationExtension->translate("votre proposition de mise à jour a bien été envoyée.", $lang, '', 'M', ''));
$this->addFlash('success', $translationExtension->translate("nous vous remercions pour votre participation active.", $lang, '', 'M', ''));
} else {
$this->addFlash('error', $translationExtension->translate("une erreur s'est produite, veuillez réessayer", $lang, '', 'M', ''));
}
return $this->redirect($currentUri);
}
public function formulaireparticipationsprovenancemail(Request $request, CodeAccesService $codeAccessService, TranslationExtension $translationExtension, AesEncrytageStrategy $aes, LocalisationsManagers $localisationManager, $codePays): Response
{
$code = $request->query->get('ref');
if (!$code) {
return $this->redirectToRoute('index');
}
$idFonds = $aes->decryptage($code);
if (!is_numeric($idFonds)) {
return $this->redirectToRoute('index');
}
$fonds = $this->em->getRepository(SocieteGestionnaireFonds::class)->findOneBy(['id_gestionnaire_fonds' => $idFonds]);
if (!$fonds) {
return $this->redirectToRoute('index');
}
// ======================== COMMENTAIRES SUR CETTE PARTIE ========================
//
// On peut arriver sur cette méthode par 2 façons:
// - soit par redirection à la suite du premier formulaire de MaJ du Fonds (1)
// - soit directement via un lien reçu par mail (2)
//
// (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é
// (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)
// On vérifie tout d'abord si l'email du responsable des maj des participations est renseigné,
if ($fonds->__get('mail_maj_participation') && trim($fonds->__get('mail_maj_participation')) != "") {
// Si oui, on vérifie s'il a le service
if ($codeAccessService->checkService($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds')) {
$authorizedAccess = true;
$email_service = $fonds->__get('mail_maj_participation');
// Sinon on vérifie si le responsable des maj du fonds a le service
} elseif ($codeAccessService->checkService($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds')) {
$authorizedAccess = true;
$email_service = $fonds->__get('mail_respon_maj');
// Sinon on génère le code pour le responsable des maj des participations
} else {
$authorizedAccess = $codeAccessService->check($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds');
$email_service = $fonds->__get('mail_maj_participation');
}
// Sinon on vérifie l'adresse mail du responsable du fonds (mail_respon_maj)
} else {
$authorizedAccess = $codeAccessService->check($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds');
$email_service = $fonds->__get('mail_respon_maj');
}
$demande_publication = true;
$tri = $request->query->get('tri', 'nom_asc');
$participations = $this->sm->getParticipationsDunFonds($idFonds, $demande_publication, $tri);
if ($request->isMethod('POST')) {
if ($request->request->get('confirmationMAJ') == 1) {
$lang = $request->getSession()->get('lang');
$this->addFlash('success', $translationExtension->translate("vos participations ont bien été mises à jour !", $lang, '', 'M', ''));
$fonds->__set('date_maj_responsable_participation', date('Ymd'));
$this->em->persist($fonds);
$this->em->flush();
}
}
$annee_actuelle = date('Y');
return $this->render('annuaires/participations_fonds/formulaire_participations_provenance_mail.html.twig', [
//'form' => $form->createView(),
'email_service' => $email_service,
'fonds' => $fonds,
'participations' => $participations,
'authorizedAccess' => $authorizedAccess,
'annee_actuelle' => $annee_actuelle,
'tri' => $tri,
'code' => $code
]);
}
public function ajaxmodifierparticipation(Request $request, CodeAccesService $codeAccessService) {
$id_gestionnaire_fonds = $request->request->get('id_gestionnaire_fonds');
$fonds = $this->em->getRepository(SocieteGestionnaireFonds::class)->findOneBy(['id_gestionnaire_fonds' => $id_gestionnaire_fonds]);
if (!$fonds) {
return false;
}
// Voir explications dans la methode formulaireparticipationsprovenancemail
// On vérifie tout d'abord si l'email du responsable des maj des participations est renseigné,
if ($fonds->__get('mail_maj_participation') && trim($fonds->__get('mail_maj_participation')) != "") {
// Si oui, on vérifie s'il a le service
if ($codeAccessService->checkService($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds')) {
$authorizedAccess = true;
// Sinon on vérifie si le responsable des maj du fonds a le service
} elseif ($codeAccessService->checkService($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds')) {
$authorizedAccess = true;
// Sinon on génère le code pour le responsable des maj des participations
} else {
$authorizedAccess = $codeAccessService->check($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds');
}
// Sinon on vérifie l'adresse mail du responsable du fonds (mail_respon_maj)
} else {
$authorizedAccess = $codeAccessService->check($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds');
}
if (!$authorizedAccess) {
return false;
}
$id_participation = $request->request->get('id_participation');
$raison_sociale = $request->request->get('raison_sociale');
$numero_siren = $request->request->get('numero_siren');
$site_internet = $request->request->get('site_internet');
$description_activite = $request->request->get('description_activite');
$date = $request->request->get('date');
$ca_n = $request->request->get('ca_n');
$annee_n = $request->request->get('annee_n');
$participation = $this->em->getRepository(Participation::class)->findOneBy(['id_societe' => $id_participation]);
$lien_participations_fonds = $this->em->getRepository(LienParticipationsFonds::class)->findOneBy(['id_participation' => $id_participation, "id_gestionnaire_fonds" => $id_gestionnaire_fonds]);
if ($raison_sociale) {
$participation->_set('raison_sociale', $raison_sociale);
}
if ($numero_siren) {
$participation->_set('numero_siren', $numero_siren);
}
if ($site_internet) {
$participation->_set('site_internet', $site_internet);
}
if ($description_activite) {
$participation->_set('description_activite', $description_activite);
}
if ($date) {
$lien_participations_fonds->_set('date_investissement', $date);
}
if ($ca_n) {
$participation->_set('ca_n', $ca_n);
}
if ($annee_n) {
$participation->_set('annee_n', $annee_n);
}
$this->em->persist($participation);
$this->em->persist($lien_participations_fonds);
$this->em->flush();
$sortie=array();
$sortie['raison_sociale']=$participation->_get('raison_sociale');
$sortie['numero_siren']=$participation->_get('numero_siren');
$sortie['site_internet']=$participation->_get('site_internet');
$sortie['description_activite']=$participation->_get('description_activite');
return new JsonResponse($sortie);
}
public function ajaxsortirparticipation(Request $request, CodeAccesService $codeAccessService) {
$id_gestionnaire_fonds = $request->request->get('id_gestionnaire_fonds');
$fonds = $this->em->getRepository(SocieteGestionnaireFonds::class)->findOneBy(['id_gestionnaire_fonds' => $id_gestionnaire_fonds]);
if (!$fonds) {
return false;
}
// Voir explications dans la methode formulaireparticipationsprovenancemail
// On vérifie tout d'abord si l'email du responsable des maj des participations est renseigné,
if ($fonds->__get('mail_maj_participation') && trim($fonds->__get('mail_maj_participation')) != "") {
// Si oui, on vérifie s'il a le service
if ($codeAccessService->checkService($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds')) {
$authorizedAccess = true;
// Sinon on vérifie si le responsable des maj du fonds a le service
} elseif ($codeAccessService->checkService($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds')) {
$authorizedAccess = true;
// Sinon on génère le code pour le responsable des maj des participations
} else {
$authorizedAccess = $codeAccessService->check($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds');
}
// Sinon on vérifie l'adresse mail du responsable du fonds (mail_respon_maj)
} else {
$authorizedAccess = $codeAccessService->check($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds');
}
if (!$authorizedAccess) {
return false;
}
$id_participation = $request->request->get('id_participation');
$id_gestionnaire_fonds = $request->request->get('id_gestionnaire_fonds');
$mode_date = $request->request->get('date_sortie');
$annee_sortie = $request->request->get('annee_sortie');
$mois_sortie = $request->request->get('mois_sortie');
$lien_participations_fonds = $this->em->getRepository(LienParticipationsFonds::class)->findBy(['id_participation' => $id_participation, "id_gestionnaire_fonds" => $id_gestionnaire_fonds]);
$date_sortie = "";
if ($mode_date == '1') {
$date_sortie = $annee_sortie.$mois_sortie;
} elseif ($mode_date == '2') {
foreach ($lien_participations_fonds as $lien){
$this->em->remove($lien);
$this->em->flush();
}
return new JsonResponse(['mois' => '']);
} else {
}
foreach ($lien_participations_fonds as $lien){
$lien->_set("mode", "sortie");
$lien->_set("date_sortie", $date_sortie);
$this->em->persist($lien);
$this->em->flush();
}
$mois_sortie = DateProvider::donne_nom_mois($mois_sortie);
return new JsonResponse(['mois' => $mois_sortie]);
}
public function ajaxajouterparticipationtemporaire(Request $request, CodeAccesService $codeAccessService) {
$id_gestionnaire_fonds = $request->request->get('id_gestionnaire_fonds');
$fonds = $this->em->getRepository(SocieteGestionnaireFonds::class)->findOneBy(['id_gestionnaire_fonds' => $id_gestionnaire_fonds]);
if (!$fonds) {
return false;
}
// Voir explications dans la methode formulaireparticipationsprovenancemail
// On vérifie tout d'abord si l'email du responsable des maj des participations est renseigné,
if ($fonds->__get('mail_maj_participation') && trim($fonds->__get('mail_maj_participation')) != "") {
// Si oui, on vérifie s'il a le service
if ($codeAccessService->checkService($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds')) {
$authorizedAccess = true;
// Sinon on vérifie si le responsable des maj du fonds a le service
} elseif ($codeAccessService->checkService($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds')) {
$authorizedAccess = true;
// Sinon on génère le code pour le responsable des maj des participations
} else {
$authorizedAccess = $codeAccessService->check($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds');
}
// Sinon on vérifie l'adresse mail du responsable du fonds (mail_respon_maj)
} else {
$authorizedAccess = $codeAccessService->check($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds');
}
if (!$authorizedAccess) {
return false;
}
$id_gestionnaire_fonds = $request->request->get('id_gestionnaire_fonds');
$nom_participation = $request->request->get('nom_participation');
$date_participation = $request->request->get('date_participation');
// On insert la société temporaire
$nouvelle_societe = new Societes();
$nouvelle_societe->_set("raison_sociale", $nom_participation);
$nouvelle_societe->_set("mode_societe", 'temporaire');
$nouvelle_societe->_set("mode_participation", 'demande_publication');
$this->em->persist($nouvelle_societe);
$this->em->flush();
$id_societe = $nouvelle_societe->_get('id_societe');
$lien_participations_fonds = new LienParticipationsFonds();
$lien_participations_fonds->_set('id_gestionnaire_fonds', $id_gestionnaire_fonds);
$lien_participations_fonds->_set('id_participation', $id_societe);
$lien_participations_fonds->_set('date_investissement', $date_participation);
$lien_participations_fonds->_set('date_demande_publication', date("Ymd"));
$lien_participations_fonds->_set('mode', 'demande_publication');
$this->em->persist($lien_participations_fonds);
$this->em->flush();
$id_participation = $lien_participations_fonds->_get("id_participation");
return new JsonResponse(array(
'id_societe' => $id_societe
/*'idFonds'=>$idFonds,
'nomNouvelleParticipation'=>$nomNouvelleParticipation,
'dateNouvelleParticipation'=>$dateNouvelleParticipation,
"idSociete"=>$idSociete,
"idParticipation"=>$idParticipation,
'resultat'=>true*/
));
}
public function ajaxupdateparticipation(Request $request, CodeAccesService $codeAccessService) {
$id_gestionnaire_fonds = $request->request->get('id_gestionnaire_fonds');
$fonds = $this->em->getRepository(SocieteGestionnaireFonds::class)->findOneBy(['id_gestionnaire_fonds' => $id_gestionnaire_fonds]);
if (!$fonds) {
return false;
}
// Voir explications dans la methode formulaireparticipationsprovenancemail
// On vérifie tout d'abord si l'email du responsable des maj des participations est renseigné,
if ($fonds->__get('mail_maj_participation') && trim($fonds->__get('mail_maj_participation')) != "") {
// Si oui, on vérifie s'il a le service
if ($codeAccessService->checkService($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds')) {
$authorizedAccess = true;
// Sinon on vérifie si le responsable des maj du fonds a le service
} elseif ($codeAccessService->checkService($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds')) {
$authorizedAccess = true;
// Sinon on génère le code pour le responsable des maj des participations
} else {
$authorizedAccess = $codeAccessService->check($fonds->__get('mail_maj_participation'), 'fusacq_form_maj_participations_fonds');
}
// Sinon on vérifie l'adresse mail du responsable du fonds (mail_respon_maj)
} else {
$authorizedAccess = $codeAccessService->check($fonds->__get('mail_respon_maj'), 'fusacq_form_maj_participations_fonds');
}
if (!$authorizedAccess) {
return false;
}
$id_societe = $request->request->get('id_participation');
$siren = $request->request->get('siren');
$site_internet = $request->request->get('site_internet');
$description_activite = $request->request->get('description_activite');
$ca_n = $request->request->get('ca_n');
$annee_n = $request->request->get('annee_n');
if ($id_societe) {
$societe = $this->em->getRepository(Societes::class)->findOneBy(['id_societe' => $id_societe]);
if ($siren) {
$societe->_set('numero_siren', $siren);
}
if ($site_internet) {
$societe->_set('site_internet', $site_internet);
}
if ($description_activite) {
$societe->_set('description_activite', $description_activite);
}
if ($ca_n) {
$societe->_set('ca_n', $ca_n);
}
if ($annee_n) {
$societe->_set('annee_n', $annee_n);
}
$this->em->persist($societe);
$this->em->flush();
}
return new JsonResponse(array(
'id_societe' => $id_societe
));
}
private function serializeParams($parametres)
{
$string_params = "";
foreach ($parametres as $name => $value) {
if ($name != "rechercher" && $name != "type" && $name != "array_localisation") {
if ($string_params == "") {
$string_params .= $name."=".$value;
} else {
$string_params .= "&".$name."=".$value;
}
}
}
return $string_params;
}
}