<?php
declare(strict_types=1);
/**
* @author Raymond
*/
namespace App\Services\ManagerEntity;
use Doctrine\ORM\EntityManagerInterface;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Component\HttpFoundation\Request;
use App\Helper\Utils;
use App\Helper\PagesRedirection;
use App\Services\ManagerEntity\LocalisationsManagers;
use Symfony\Component\DependencyInjection\ParameterBag\ContainerBagInterface;
use App\Repository\SecteursActiviteRepository;
use App\Repository\LocalisationsRepository;
use App\Entity\Societes;
use App\Entity\Participation;
use App\Helper\DateProvider;
use App\Twig\TranslationExtension;
use App\Entity\FondsInvestissement;
use App\Services\TelephoneInternational;
use App\Entity\SocieteGestionnaireFonds;
use Symfony\Component\Security\Core\Security;
use App\Repository\CommandesRepository;
class SocietesManagers {
/**
* @var EntityManagerInterface
*/
private $em;
/**
* @var LocalisationsManagers
*/
private $lm;
/**
* @var string
*/
private $dns_pdc;
/**
* @var string
*/
private $cdn_fusacq;
/**
* @var SecteursActiviteRepository
*/
private $secteursActiviteRepo;
/**
* @var LocalisationsRepository
*/
private $localisationsRepository;
/**
* @var TranslationExtension
*/
private $translationExtension;
/**
* @var TelephoneInternational
*/
private $telephoneInternational;
/**
* @var CommandesRepository
*/
private $cr;
/**
* @var Security
*/
private $security;
public const NB_ANNONCE_PAGINATION = 10;
public $lang;
/**
* @param EntityManagerInterface $em
*/
public function __construct(EntityManagerInterface $em, LocalisationsManagers $lm, ContainerBagInterface $params, SecteursActiviteRepository $secteursActiviteRepo, LocalisationsRepository $localisationsRepository, TranslationExtension $translationExtension, TelephoneInternational $telephoneInternational, CommandesRepository $cr, Security $security) {
$this->em = $em;
$this->lm = $lm;
$this->dns_pdc = $params->get('app.DNS')['PDC_ROOT'];
$this->cdn_fusacq = $params->get('app.CDN')['CDN_FUSACQ'];
$this->secteursActiviteRepo = $secteursActiviteRepo;
$this->localisationsRepository = $localisationsRepository;
$this->translationExtension = $translationExtension;
$this->telephoneInternational = $telephoneInternational;
$this->lang = isset($_SESSION['_sf2_attributes']['lang']) ? $_SESSION['_sf2_attributes']['lang'] : "fr";
$this->security = $security;
$this->cr = $cr;
}
public function getParticipationsFondsList(Request $request, PaginatorInterface $paginator, array $filter = [], $mode = "", $type = null, $lang = "fr") {
$sql = $this->em->getRepository(Societes::class)->donne_requete_SQL_pour_tableau_participations_fonds($filter, $mode, $type);
$params = $this->em->getRepository(Societes::class)->prepareParameters($filter, $type);
$query = $this->em->createQuery($sql);
$query->setParameters($params);
$annoncesCiblePotentielle = $paginator->paginate(
$query, // Requête contenant les données à paginer (ici nos annonces)
max(1, $request->query->getInt('page', 1)), // Numéro de la page en cours, passé dans l'URL, 1 si aucune page
10 // Nombre de résultats par page
);
foreach ($annoncesCiblePotentielle as $annonce) {
if ($annonce->_get('date_dernier_investissement') != null && strlen($annonce->_get('date_dernier_investissement')) == 6) {
$date_dernier_investissement = \DateTime::createFromFormat("Ym", $annonce->_get('date_dernier_investissement'));
$annonce->date_dernier_investissement_formated = $date_dernier_investissement->format('m/Y');
} else {
$annonce->date_dernier_investissement_formated = "N.C";
}
$id_pays = $annonce->_get('id_pays');
$id_region = $annonce->_get('id_region');
$code_postal = $annonce->_get('code_postal');
if ($id_pays != "" && $id_pays == 33 && $id_region != "" && $code_postal != "") {
$id_departement = $id_region . '_' . substr($code_postal, 0, 2);
} else {
$id_departement = null;
}
$annonce->carte = "";
if ($id_region != null) {
if (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_region . ".png")) {
$annonce->carte = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_region . ".png";
/* // Si le département n'est pas confidentiel, on affiche la carte de la région
if (substr($id_departement, -3) != "_99") {
$annonce->_get('carte = $this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_region.".png";
} else {
// Sinon on regarde si la carte confidentielle existe pour ce pays, si oui on l'affiche
if (Utils::url_exists($this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_pays."_99.png")) {
$annonce->_get('carte = $this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_pays."_99.png";
} else {
$annonce->_get('carte = $this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_pays."_blanc.png";
}
} */
} elseif (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png")) {
$annonce->carte = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png";
} else {
$annonce->carte = $this->cdn_fusacq . "/images/cartes/big/monde.png";
}
} elseif ($id_pays != null) {
if (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png")) {
$annonce->carte = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png";
} else {
$annonce->carte = $this->cdn_fusacq . "/images/cartes/big/monde.png";
}
}
if ($id_departement != null && preg_match('/[A-Za-z]/', $id_departement) == 0) {
$localisation = $this->lm->getNomLocalisationById($id_departement);
$nom_localisation = "";
for ($i = count($localisation) - 1; $i >= 0; $i--) {
$nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
}
$nom_localisation = substr($nom_localisation, 0, -2);
} elseif ($id_region != null && preg_match('/[A-Za-z]/', $id_region) == 0) {
$localisation = $this->lm->getNomLocalisationById($id_region);
$nom_localisation = "";
for ($i = count($localisation) - 1; $i >= 0; $i--) {
$nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
}
$nom_localisation = substr($nom_localisation, 0, -2);
} elseif ($id_pays != null) {
$localisation = $this->lm->getNomLocalisationById($id_pays);
if ($localisation) {
$nom_localisation = $localisation[0]['nom_localisation'];
} else {
$nom_localisation = "";
}
}
$annonce->nom_localisation = isset($nom_localisation) ? $nom_localisation : "";
if (isset($localisation)) {
foreach ($localisation as $niveau => $loc) {
$nom_niveau = "nom_localisation_niveau_" . $niveau;
$id_niveau = "id_localisation_niveau_" . $niveau;
;
$annonce->$nom_niveau = $loc['nom_localisation'];
$annonce->$id_niveau = $loc['id_localisation'];
}
}
if (!isset($annonce->nom_localisation_niveau_0)) {
$annonce->nom_localisation_niveau_0 = "";
$annonce->id_localisation_niveau_0 = "";
}
if (!isset($annonce->nom_localisation_niveau_1)) {
$annonce->nom_localisation_niveau_1 = "";
$annonce->id_localisation_niveau_1 = "";
}
if (!isset($annonce->nom_localisation_niveau_2)) {
$annonce->nom_localisation_niveau_2 = "";
$annonce->id_localisation_niveau_2 = "";
}
if ($annonce->_get('resume_activite') == null || $annonce->_get('resume_activite') == "null") {
if ($annonce->_get('id_region') != null && $annonce->_get('id_pays') == 33) {
$localisation_societe = $this->localisationsRepository->findOneBy(['id_localisation' => $annonce->_get('id_region')]);
} else {
$localisation_societe = $this->localisationsRepository->findOneBy(['id_localisation' => $annonce->_get('id_pays')]);
}
$arrayVarsTrans = [
"prefixe" => $localisation_societe->__get('prefixe'),
"nom_localisation" => $localisation_societe->__get('nom_localisation')
];
$annonce->_set('resume_activite', $this->translationExtension->translate('société basée %$prefixe%$ %$nom_localisation%$', $lang, "", "M", "", $arrayVarsTrans));
}
$tab_actionnaires = $this->getTableauActionnairesInstitutionnelsParticipation($annonce->_get('id_societe'), $lang);
$annonce->numero_cadran = $this->calcul_numero_image_cadran($tab_actionnaires);
$slug = $annonce->_get('resume_activite') ? Utils::slugify($annonce->_get('resume_activite')) : "sans-resume";
$annonce->slug = $slug;
$annonce->commande = $this->userHasOrderedParticipation($annonce->_get('id_societe'));
$annonce->arrondi_ca = $this->donne_arrondi_CA($annonce->_get('ca_n'));
$this->em->detach($annonce);
}
return $annoncesCiblePotentielle;
}
public function userHasOrderedParticipation($idParticipation) {
$user = $this->security->getUser();
if ($user) {
// On regarde si elle a été commandée dans la table commandes
$commande = $this->cr->hasAnnonceCommande($user->_get('login_utilisateur'),$idParticipation,"participation");
return $commande;
} else {
return false;
}
}
public function userHasOrderedAcquereurHistorique($idSociete) {
$user = $this->security->getUser();
if ($user) {
// On regarde si elle a été commandée dans la table commandes
$commande = $this->cr->hasAnnonceCommande($user->_get('login_utilisateur'),$idSociete,"acquereur_historique");
return $commande;
} else {
return false;
}
}
public function userHasOrderedFonds($idFonds) {
$user = $this->security->getUser();
if ($user) {
// On regarde si elle a été commandée dans la table commandes
$commande = $this->cr->hasAnnonceCommande($user->_get('login_utilisateur'),$idFonds,"fonds");
return $commande;
} else {
return false;
}
}
/**
* @param $filter
* @param $mode
* @param $page
* @param $element_index
* @return
*/
public function getIndexNParticipationsFondsList(array $filter = [], $mode = '', $type = null, $page, $element_index) {
$index_in_list = ($page - 1) * self::NB_ANNONCE_PAGINATION + $element_index;
if ($page == 1 && $index_in_list == -1) {
return null;
}
$sql = $this->em->getRepository(Societes::class)->donne_requete_SQL_pour_tableau_participations_fonds($filter, $mode, $type);
$params = $this->em->getRepository(Societes::class)->prepareParameters($filter, $type);
$query = $this->em->createQuery($sql);
$query->setParameters($params);
$query->setFirstResult(max(0, (int) $index_in_list));
$query->setMaxResults(1);
return $query->getOneOrNullResult();
}
public function getAcquereurHistoriqueList(Request $request, PaginatorInterface $paginator, array $filter = [], $mode = "", $lang = 'fr') {
$sql = $this->em->getRepository(Societes::class)->donne_requete_SQL_pour_tableau_acquereur_historique($filter, $mode);
$params = $this->em->getRepository(Societes::class)->prepareParametersAcquereurHistorique($filter);
$query = $this->em->createQuery($sql);
$query->setParameters($params);
$annoncesAcquereurHistorique = $paginator->paginate(
$query, // Requête contenant les données à paginer (ici nos annonces)
max(1, $request->query->getInt('page', 1)), // Numéro de la page en cours, passé dans l'URL, 1 si aucune page
10 // Nombre de résultats par page
);
$listeIdSociete = array();
$arrayAnnonces = array();
for ($i = 0; $i < count($annoncesAcquereurHistorique); $i++) {
if (!in_array($annoncesAcquereurHistorique[$i]['id_societe'], $listeIdSociete)) {
$listeIdSociete[] = $annoncesAcquereurHistorique[$i]['id_societe'];
$idSociete = $annoncesAcquereurHistorique[$i]['id_societe'];
$arrayAnnonces[$idSociete] = $annoncesAcquereurHistorique[$i];
if (isset($annoncesAcquereurHistorique[$i]['ca_n']) && $annoncesAcquereurHistorique[$i]['ca_n'] != "") {
$arrayAnnonces[$idSociete]['ca_n'] = substr($annoncesAcquereurHistorique[$i]['ca_n'], 0, strpos($annoncesAcquereurHistorique[$i]['ca_n'], '.'));
}
$nom_localisation = "";
if ($annoncesAcquereurHistorique[$i]['id_region'] != null && $annoncesAcquereurHistorique[$i]['id_region'] != '00' && preg_match('/[A-Za-z]/', $annoncesAcquereurHistorique[$i]['id_region']) == 0) {
$localisation = $this->lm->getNomLocalisationById($annoncesAcquereurHistorique[$i]['id_region']);
for ($j = count($localisation) - 1; $j >= 0; $j--) {
$nom_localisation .= $localisation[$j]['nom_localisation'] . ", ";
}
$nom_localisation = substr($nom_localisation, 0, -2);
} elseif ($annoncesAcquereurHistorique[$i]['id_pays'] != null) {
$localisation = $this->lm->getNomLocalisationById($annoncesAcquereurHistorique[$i]['id_pays']);
if ($localisation) {
$nom_localisation = $localisation[0]['nom_localisation'];
} else {
$nom_localisation = "";
}
}
$arrayAnnonces[$idSociete]['siege'] = $nom_localisation;
$arrayAnnonces[$idSociete]['url_actualite'] = Utils::slugify($annoncesAcquereurHistorique[$i]['titre_actualite']) . '-a' . $annoncesAcquereurHistorique[$i]['id_actualite'] . '';
$id_region = $annoncesAcquereurHistorique[$i]['id_region'];
$id_pays = $annoncesAcquereurHistorique[$i]['id_pays'];
$date_mise_en_ligne = \DateTime::createFromFormat('YmdHis', $arrayAnnonces[$idSociete]['date_mise_en_ligne']);
$arrayAnnonces[$idSociete]['date_formated'] = $date_mise_en_ligne->format('d/m/Y');
if ($id_region != null) {
if (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_region . ".png")) {
$arrayAnnonces[$idSociete]['carte'] = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_region . ".png";
} elseif (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png")) {
$arrayAnnonces[$idSociete]['carte'] = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png";
} else {
$arrayAnnonces[$idSociete]['carte'] = $this->cdn_fusacq . "/images/cartes/big/monde.png";
}
} elseif ($id_pays != null) {
if (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png")) {
$arrayAnnonces[$idSociete]['carte'] = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png";
} else {
$arrayAnnonces[$idSociete]['carte'] = $this->cdn_fusacq . "/images/cartes/big/monde.png";
}
}
if ($arrayAnnonces[$idSociete]['resume_activite'] == null || $arrayAnnonces[$idSociete]['resume_activite'] == "null") {
if ($arrayAnnonces[$idSociete]['id_region'] != null && $arrayAnnonces[$idSociete]['id_region'] != "choisir" && $arrayAnnonces[$idSociete]['id_pays'] == 33) {
$localisation_societe = $this->localisationsRepository->findOneBy(['id_localisation' => $arrayAnnonces[$idSociete]['id_region']]);
} else {
$localisation_societe = $this->localisationsRepository->findOneBy(['id_localisation' => $arrayAnnonces[$idSociete]['id_pays']]);
// Si id_pays non renseigné, on prend France par défaut
if (!$localisation_societe) {
$localisation_societe = $this->localisationsRepository->findOneBy(['id_localisation' => 33]);
}
}
$arrayVarsTrans = [
"prefixe" => $localisation_societe->__get('prefixe'),
"nom_localisation" => $localisation_societe->__get('nom_localisation')
];
$arrayAnnonces[$idSociete]['resume_activite'] = $this->translationExtension->translate('société basée %$prefixe%$ %$nom_localisation%$', $lang, "", "M", "", $arrayVarsTrans);
}
$arrayAnnonces[$idSociete]['commande'] = $this->userHasOrderedAcquereurHistorique($idSociete);
} else {
$idSociete = $annoncesAcquereurHistorique[$i]['id_societe'];
if ($annoncesAcquereurHistorique[$i]["date_mise_en_ligne"] > $arrayAnnonces[$idSociete]['date_mise_en_ligne']) {
$arrayAnnonces[$idSociete]['id_actualite'] = $annoncesAcquereurHistorique[$i]["id_actualite"];
$arrayAnnonces[$idSociete]['titre_actualite'] = $annoncesAcquereurHistorique[$i]["titre_actualite"];
$arrayAnnonces[$idSociete]['url_actualite'] = Utils::slugify($annoncesAcquereurHistorique[$i]['titre_actualite']) . '-a' . $annoncesAcquereurHistorique[$i]['id_actualite'] . '';
$arrayAnnonces[$idSociete]['date_mise_en_ligne'] = $annoncesAcquereurHistorique[$i]["date_mise_en_ligne"];
$date_mise_en_ligne = \DateTime::createFromFormat('YmdHis', $annoncesAcquereurHistorique[$i]['date_mise_en_ligne']);
$arrayAnnonces[$idSociete]['date_formated'] = $date_mise_en_ligne->format('d/m/Y');
}
}
$arrayAnnonces[$idSociete]['index'] = $i;
}
$annoncesAcquereurHistorique->setItems($arrayAnnonces);
//dd($annoncesAcquereurHistorique);
return $annoncesAcquereurHistorique;
}
/**
* @param $filter
* @param $mode
* @param $page
* @param $element_index
* @return
*/
public function getIndexNAcquereurHistoriqueList(array $filter = [], $mode = '', $page, $element_index) {
$index_in_list = ($page - 1) * self::NB_ANNONCE_PAGINATION + $element_index;
if ($page == 1 && $index_in_list == -1) {
return null;
}
$sql = $this->em->getRepository(Societes::class)->donne_requete_SQL_pour_tableau_acquereur_historique($filter, $mode);
$params = $this->em->getRepository(Societes::class)->prepareParametersAcquereurHistorique($filter);
$query = $this->em->createQuery($sql);
$query->setParameters($params);
$query->setFirstResult(max(0, (int) $index_in_list));
$query->setMaxResults(1);
$aquereur_historique = $query->getOneOrNullResult();
if ($aquereur_historique && $aquereur_historique['resume_activite'] == null) {
$aquereur_historique['resume_activite'] = "Activité de la société";
}
return $aquereur_historique;
}
public function getFondsInvestissementList(Request $request, PaginatorInterface $paginator, array $filter = []) {
$sql = $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_fonds_investissement($filter, "");
$params = $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement($filter);
//dd($sql, $params);
$query = $this->em->createQuery($sql);
$query->setParameters($params);
$fondsInvestissement = $paginator->paginate(
$query, // Requête contenant les données à paginer (ici nos annonces)
max(1, $request->query->getInt('page', 1)), // Numéro de la page en cours, passé dans l'URL, 1 si aucune page
10 // Nombre de résultats par page
);
$array_fonds = [];
foreach ($fondsInvestissement as $fonds) {
$date_investissement_formated = isset($fonds['date_investissement']) ? $fonds['date_investissement'] : null;
$id_pays = isset($fonds['id_pays']) ? $fonds['id_pays'] : null;
$id_region = isset($fonds['id_region']) ? $fonds['id_region'] : null;
$code_postal = isset($fonds['code_postal']) ? $fonds['code_postal'] : null;
if ($id_pays != "" && $id_pays == 33 && $id_region != "" && $code_postal != "") {
$id_departement = $id_region . '_' . substr($code_postal, 0, 2);
} else {
$id_departement = null;
}
if ($id_region != null) {
if (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_region . ".png")) {
$fonds['carte'] = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_region . ".png";
} elseif (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png")) {
$fonds['carte'] = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png";
} else {
$fonds['carte'] = $this->cdn_fusacq . "/images/cartes/big/monde.png";
}
} elseif ($id_pays != null) {
if (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png")) {
$fonds['carte'] = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png";
} else {
$fonds['carte'] = $this->cdn_fusacq . "/images/cartes/big/monde.png";
}
}
$nom_localisation = "";
if ($id_departement != null && preg_match('/[A-Za-z]/', $id_departement) == 0) {
$localisation = $this->lm->getNomLocalisationById($id_departement);
if ($localisation) {
for ($i = count($localisation) - 1; $i >= 0; $i--) {
$nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
}
$nom_localisation = substr($nom_localisation, 0, -2);
}
} elseif ($id_region != null && preg_match('/[A-Za-z]/', $id_region) == 0) {
$localisation = $this->lm->getNomLocalisationById($id_region);
if ($localisation) {
for ($i = count($localisation) - 1; $i >= 0; $i--) {
$nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
}
$nom_localisation = substr($nom_localisation, 0, -2);
}
} elseif ($id_pays != null) {
$localisation = $this->lm->getNomLocalisationById($id_pays);
$nom_localisation = $localisation[0]['nom_localisation'];
}
$fonds['nom_localisation'] = $nom_localisation;
$fonds['date_investissement_formated'] =(!empty($date_investissement_formated)) ? substr($date_investissement_formated, 4, 2) . "/" . substr($date_investissement_formated, 0, 4):"";
$idFonds = $fonds['id_gestionnaire_fonds'];
if (Utils::url_exists("https://content.fusacq.com/static/raw-fusacq/css/images/fonds/vign_fi_$idFonds.jpg")) {
$fonds['vignette'] = "https://content.fusacq.com/static/raw-fusacq/css/images/fonds/vign_fi_$idFonds.jpg";
} else {
$fonds['vignette'] = "https://content.fusacq.com/static/raw-fusacq/css/images/logo_annu_fond_invest.gif";
}
$fonds['commande'] = $this->userHasOrderedFonds($fonds['id_gestionnaire_fonds']);
$array_fonds[] = $fonds;
}
$fondsInvestissement->setItems($array_fonds);
return $fondsInvestissement;
}
/**
* @param $filter
* @param $page
* @param $element_index
* @return
*/
public function getIndexNFondsInvestissementList(array $filter = [], $page, $element_index) {
$index_in_list = ($page - 1) * self::NB_ANNONCE_PAGINATION + $element_index;
if ($page == 1 && $index_in_list == -1) {
return null;
}
$sql = $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_fonds_investissement($filter, "");
$params = $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement($filter);
$query = $this->em->createQuery($sql);
$query->setParameters($params);
$query->setFirstResult(max(0, (int) $index_in_list));
$query->setMaxResults(1);
return $query->getOneOrNullResult();
}
public function getAcquereurInvestisseurList(Request $request, PaginatorInterface $paginator, array $filter = []) {
$sql = $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_investisseur_acquereur($filter, "");
$params = $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement($filter);
//dd($sql, $params);
$query = $this->em->createQuery($sql);
$query->setParameters($params);
$fondsInvestissement = $paginator->paginate(
$query, // Requête contenant les données à paginer (ici nos annonces)
max(1, $request->query->getInt('page', 1)),// Numéro de la page en cours, passé dans l'URL, 1 si aucune page
10 // Nombre de résultats par page
);
$array_fonds = [];
foreach ($fondsInvestissement as $fonds) {
$date_investissement_formated = isset($fonds['date_investissement']) ? $fonds['date_investissement'] : null;
$id_pays = isset($fonds['id_pays']) ? $fonds['id_pays'] : null;
$id_region = isset($fonds['id_region']) ? $fonds['id_region'] : null;
$code_postal = isset($fonds['code_postal']) ? $fonds['code_postal'] : null;
if ($id_pays != "" && $id_pays == 33 && $id_region != "" && $code_postal != "") {
$id_departement = $id_region . '_' . substr($code_postal, 0, 2);
} else {
$id_departement = null;
}
if ($id_region != null) {
if (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_region . ".png")) {
$fonds['carte'] = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_region . ".png";
} elseif (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png")) {
$fonds['carte'] = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png";
} else {
$fonds['carte'] = $this->cdn_fusacq . "/images/cartes/big/monde.png";
}
} elseif ($id_pays != null) {
if (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png")) {
$fonds['carte'] = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png";
} else {
$fonds['carte'] = $this->cdn_fusacq . "/images/cartes/big/monde.png";
}
}
$nom_localisation = "";
if ($id_departement != null && preg_match('/[A-Za-z]/', $id_departement) == 0) {
$localisation = $this->lm->getNomLocalisationById($id_departement);
if ($localisation) {
for ($i = count($localisation) - 1; $i >= 0; $i--) {
$nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
}
$nom_localisation = substr($nom_localisation, 0, -2);
}
} elseif ($id_region != null && preg_match('/[A-Za-z]/', $id_region) == 0) {
$localisation = $this->lm->getNomLocalisationById($id_region);
if ($localisation) {
for ($i = count($localisation) - 1; $i >= 0; $i--) {
$nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
}
$nom_localisation = substr($nom_localisation, 0, -2);
}
} elseif ($id_pays != null) {
$localisation = $this->lm->getNomLocalisationById($id_pays);
$nom_localisation = $localisation[0]['nom_localisation'];
}
$fonds['nom_localisation'] = $nom_localisation;
$fonds['date_investissement_formated'] =(!empty($date_investissement_formated))? substr($date_investissement_formated, 4, 2) . "/" . substr($date_investissement_formated, 0, 4):"";
$fonds['commande'] = $this->userHasOrderedFonds($fonds['id_gestionnaire_fonds']);
$array_fonds[] = $fonds;
}
$fondsInvestissement->setItems($array_fonds);
return $fondsInvestissement;
}
public function getDerniersInvestisseur($limit = 5) {
$sql = $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_investisseur_acquereur(['tri' => 'date_desc'], "");
$params = $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement([]);
$query = $this->em->createQuery($sql);
$query->setParameters($params)->setMaxResults($limit);
$result = $query->getArrayResult();
$investisseurs = [];
foreach ($result as $r) {
$date_investissement_formated = isset($r['date_investissement']) ? $r['date_investissement'] : null;
if ($date_investissement_formated) {
$r['date_investissement_formated'] = substr($date_investissement_formated, 4, 2) . "/" . substr($date_investissement_formated, 0, 4);
} else {
$r['date_investissement_formated'] = "";
}
if ($r['id_region']) {
$localisation = $this->localisationsRepository->getNomLocalisationById($r['id_region'])[1];
if ($r['id_region'] == "33_21") {
$r['localisation'] = "PACA";
} else {
$r['localisation'] = $localisation['nom_localisation'];
}
$r['prefixe_localisation'] = $localisation['prefixe'] ? $localisation['prefixe'] : "en";
} elseif ($r['id_pays']) {
$localisation = $this->localisationsRepository->getNomLocalisationById($r['id_pays'])[0];
$r['localisation'] = $localisation['nom_localisation'];
$r['prefixe_localisation'] = $localisation['prefixe'] ? $localisation['prefixe'] : "en";
} else {
$r['localisation'] = "";
$r['prefixe_localisation'] = "";
}
if ($r['regions_ciblees']) {
$regions = array_filter(explode(",", $r['regions_ciblees']));
if (count($regions) == 0) {
$r['cible'] = "";
$r['prefixe_cible'] = "";
} elseif (count($regions) == 1) {
if (isset($this->localisationsRepository->getNomLocalisationById($regions[0])[1])) {
$localisation = $this->localisationsRepository->getNomLocalisationById($regions[0])[1];
$r['cible'] = $localisation['nom_localisation'];
$r['prefixe_cible'] = $localisation['prefixe'] ? $localisation['prefixe'] : "en";
} else {
$r['cible'] = 'localisation';
$r['prefixe_cible'] = 'en';
}
} else {
$r['nb_cible'] = count($regions);
$r['type_cible'] = "regions";
$r['cible'] = "";
$r['prefixe_cible'] = "";
}
} elseif ($r['pays_ciblees']) {
$pays = array_filter(explode(",", $r['pays_ciblees']));
if (count($pays) == 0) {
$r['cible'] = "";
$r['prefixe_cible'] = "";
} elseif (count($pays) == 1) {
if (isset($this->localisationsRepository->getNomLocalisationById($pays[0])[0])) {
$localisation = $this->localisationsRepository->getNomLocalisationById($pays[0])[0];
$r['cible'] = $localisation['nom_localisation'];
$r['prefixe_cible'] = $localisation['prefixe'] ? $localisation['prefixe'] : "en";
} else {
$r['cible'] = 'localisation';
$r['prefixe_cible'] = 'en';
}
} else {
$r['nb_cible'] = count($pays);
$r['type_cible'] = "pays";
$r['cible'] = "";
$r['prefixe_cible'] = "";
}
} else {
$r['cible'] = "";
$r['nb_cible'] = "";
$r['type_cible'] = "";
$r['prefixe_cible'] = "";
}
$investisseurs[] = $r;
}
//dd($investisseurs);
return $investisseurs;
}
/**
* @param $filter
* @param $page
* @param $element_index
* @return
*/
public function getIndexNAcquereurInvestisseurList(array $filter = [], $page, $element_index) {
$index_in_list = ($page - 1) * self::NB_ANNONCE_PAGINATION + $element_index;
if ($page == 1 && $index_in_list == -1) {
return null;
}
//$sql = $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_acquereur_investisseur($filter, "");
//$sql = $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_investisseur_acquereur($filter, "");
$sql = $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_fonds_investissement($filter, "");
$params = $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement($filter);
$query = $this->em->createQuery($sql);
$query->setParameters($params);
$query->setFirstResult(max(0, (int) $index_in_list));
$query->setMaxResults(1);
return $query->getOneOrNullResult();
}
public function getParticipationsDunFondsList(Request $request, PaginatorInterface $paginator, array $filter = []) {
$sql = $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_investissement_dun_fonds($filter, "");
$params = $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement($filter);
$query = $this->em->createQuery($sql);
$query->setParameters($params);
/* $participations = $paginator->paginate(
$query, // Requête contenant les données à paginer (ici nos annonces)
$request->query->getInt('page_invest', 1), // Numéro de la page en cours, passé dans l'URL, 1 si aucune page
10, // Nombre de résultats par page
['pageParameterName' => 'page_invest']); */
$page = intval($filter['pageInvest'] ?? 1);
if ($page < 1) {
$page = 1;
}
$participations = $paginator->paginate(
$query, // Requête contenant les données à paginer (ici nos annonces)
$page, // Numéro de la page en cours, passé dans l'URL, 1 si aucune page
10, // Nombre de résultats par page
['pageParameterName' => 'pageInvest']);
$array_participation = [];
foreach ($participations as $participation) {
$date_investissement_formated = isset($participation['date_investissement']) ? $participation['date_investissement'] : null;
$participation['date_dernier_investissement_formated'] = ($date_investissement_formated)? substr($date_investissement_formated, 4, 2) . "/" . substr($date_investissement_formated, 0, 4):null;
$participation['slug'] = Utils::slugify($participation['raison_sociale']);
$array_participation[] = $participation;
}
$participations->setItems($array_participation);
return $participations;
}
public function getParticipationsDunFonds($id_fonds, $demande_publication = null, $tri = null) {
$sql = $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_investissement_dun_fonds(['id_gestionnaire_fonds' => $id_fonds, 'demande_publication' => $demande_publication, "tri" => $tri], "");
$params = $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement(['id_gestionnaire_fonds' => $id_fonds]);
$query = $this->em->createQuery($sql);
$query->setParameters($params);
$participations = $query->getResult();
$array_participation = [];
foreach ($participations as $participation) {
$date_investissement_formated = isset($participation['date_investissement']) ? $participation['date_investissement'] : null;
$participation['date_dernier_investissement_formated'] =($date_investissement_formated)? substr($date_investissement_formated, 4, 2) . "/" . substr($date_investissement_formated, 0, 4):null;
$participation['slug'] = Utils::slugify($participation['raison_sociale']);
$array_participation[] = $participation;
}
return $participations;
}
public function getFondsInvestissement($idFonds) {
$fonds = $this->em->getRepository(FondsInvestissement::class)->findOneBy(['mode' => 'publique', 'id_gestionnaire_fonds' => $idFonds]);
if ($fonds) {
$id_pays = $fonds->_get('id_pays') != "" ? $fonds->_get('id_pays') : null;
$id_region = $fonds->_get('id_region') != "" ? $fonds->_get('id_region') : null;
$code_postal = $fonds->_get('code_postal_societe') != "" ? $fonds->_get('code_postal_societe') : null;
if ($id_pays != "" && $id_pays == 33 && $id_region != "" && $code_postal != "") {
$id_departement = $id_region . '_' . substr($code_postal, 0, 2);
} else {
$id_departement = null;
}
if ($id_region != null) {
if (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_region . ".png")) {
$fonds->carte = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_region . ".png";
} elseif (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png")) {
$fonds->carte = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png";
} else {
$fonds->carte = $this->cdn_fusacq . "/images/cartes/big/monde.png";
}
} elseif ($id_pays != null) {
if (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png")) {
$fonds->carte = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png";
} else {
$fonds->carte = $this->cdn_fusacq . "/images/cartes/big/monde.png";
}
}
$nom_pays = "";
if ($id_pays) {
$localisation = $this->lm->getNomLocalisationById($id_pays);
$nom_pays = $localisation[0]['nom_localisation'];
}
$fonds->nom_pays = $nom_pays;
$nom_localisation = "";
if ($id_departement != null && preg_match('/[A-Za-z]/', $id_departement) == 0) {
$localisation = $this->lm->getNomLocalisationById($id_departement);
if ($localisation) {
for ($i = count($localisation) - 1; $i >= 0; $i--) {
$nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
}
$nom_localisation = substr($nom_localisation, 0, -2);
}
} elseif ($id_region != null && preg_match('/[A-Za-z]/', $id_region) == 0) {
$localisation = $this->lm->getNomLocalisationById($id_region);
if ($localisation) {
for ($i = count($localisation) - 1; $i >= 0; $i--) {
$nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
}
$nom_localisation = substr($nom_localisation, 0, -2);
}
} elseif ($id_pays != null) {
$localisation = $this->lm->getNomLocalisationById($id_pays);
$nom_localisation = $localisation[0]['nom_localisation'];
}
$fonds->_set('nom_localisation', $nom_localisation);
if ($fonds->_get('telephone') != "" && $fonds->_get('indicatif') != "") {
$telephoneInternational = $this->telephoneInternational->getInternationalPhone($fonds->_get('telephone'), $fonds->_get('indicatif'));
$fonds->telephoneInternational = $telephoneInternational['affichage'];
} else {
$fonds->telephoneInternational = "";
}
// localisation ciblée
$regions_ciblees = $fonds->_get('regions_ciblees');
if ($regions_ciblees != "") {
$tab_cible = array_filter(explode(",", $regions_ciblees));
$localisation_cible = [];
foreach ($tab_cible as $cible) {
$localisation = $this->lm->getNomLocalisationById($cible);
$nom_localisation = isset($localisation[count($localisation) - 1]['nom_localisation']) ? $localisation[count($localisation) - 1]['nom_localisation'] : "";
$localisation_cible[$cible] = $nom_localisation;
}
$fonds->localisation_cible = $localisation_cible;
} else {
$fonds->localisation_cible = [];
}
if (Utils::url_exists("https://content.fusacq.com/static/raw-fusacq/css/images/fonds/vign_fi_$idFonds.jpg")) {
$fonds->vignette = "https://content.fusacq.com/static/raw-fusacq/css/images/fonds/vign_fi_$idFonds.jpg";
} else {
$fonds->vignette = "https://content.fusacq.com/static/raw-fusacq/css/images/logo_annu_fond_invest.gif";
}
if ($fonds->_get('site_internet') != null) {
if (strpos($fonds->_get('site_internet'), 'http') === false) {
$fonds->href_site_internet = "http://" . $fonds->_get('site_internet');
} else {
$fonds->href_site_internet = $fonds->_get('site_internet');
}
} else {
$fonds->href_site_internet = "";
}
}
return $fonds;
}
/**
* @param int $idSociete
* @return Societes $societe
*/
public function getSocieteById($idSociete, $lang = 'fr') {
$societe = $this->em->getRepository(Societes::class)->findOneBy(['id_societe' => $idSociete]);
if (isset($societe)) {
if ($societe->_get('date_dernier_investissement') != null) {
$date_dernier_investissement = \DateTime::createFromFormat("Ym", $societe->_get('date_dernier_investissement'));
if ($date_dernier_investissement) {
$societe->date_dernier_investissement_formated = $date_dernier_investissement->format('m/Y');
} else {
$societe->date_dernier_investissement_formated = "N.C";
}
} else {
$societe->date_dernier_investissement_formated = "N.C";
}
$id_pays = $societe->_get('id_pays');
$id_region = $societe->_get('id_region');
$code_postal = $societe->_get('code_postal');
if ($id_pays != "" && $id_pays == 33 && $id_region != "" && $code_postal != "") {
$id_departement = $id_region . '_' . substr($code_postal, 0, 2);
} else {
$id_departement = null;
}
if ($id_region != null) {
if (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_region . ".png")) {
$societe->carte = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_region . ".png";
/* // Si le département n'est pas confidentiel, on affiche la carte de la région
if (substr($id_departement, -3) != "_99") {
$societe->_get('carte = $this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_region.".png";
} else {
// Sinon on regarde si la carte confidentielle existe pour ce pays, si oui on l'affiche
if (Utils::url_exists($this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_pays."_99.png")) {
$societe->_get('carte = $this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_pays."_99.png";
} else {
$societe->_get('carte = $this->cdn_fusacq."/static/help-fusacq/fr/images/cartes/pays/".$id_pays."/".$id_pays."_blanc.png";
}
} */
} elseif (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png")) {
$societe->carte = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png";
} else {
$societe->carte = $this->cdn_fusacq . "/images/cartes/big/monde.png";
}
} elseif ($id_pays != null) {
if (Utils::url_exists($this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png")) {
$societe->carte = $this->cdn_fusacq . "/static/help-fusacq/fr/images/cartes/pays/" . $id_pays . "/" . $id_pays . ".png";
} else {
$societe->carte = $this->cdn_fusacq . "/images/cartes/big/monde.png";
}
}
if ($id_departement != null) {
$localisation = $this->lm->getNomLocalisationById($id_departement);
$nom_localisation = "";
for ($i = count($localisation) - 1; $i >= 0; $i--) {
$nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
}
$nom_localisation = substr($nom_localisation, 0, -2);
} elseif ($id_region != null) {
$localisation = $this->lm->getNomLocalisationById($id_region);
$nom_localisation = "";
for ($i = count($localisation) - 1; $i >= 0; $i--) {
$nom_localisation .= $localisation[$i]['nom_localisation'] . ", ";
}
$nom_localisation = substr($nom_localisation, 0, -2);
} elseif ($id_pays != null && $id_pays != "null") {
$localisation = $this->lm->getNomLocalisationById($id_pays);
$nom_localisation = $localisation[0]['nom_localisation'];
} else {
$nom_localisation = "";
}
$societe->nom_localisation = $nom_localisation;
foreach ($localisation as $niveau => $loc) {
$nom_niveau = "nom_localisation_niveau_" . $niveau;
$id_niveau = "id_localisation_niveau_" . $niveau;
$societe->$nom_niveau = $loc['nom_localisation'];
$societe->$id_niveau = $loc['id_localisation'];
}
if (!isset($societe->nom_localisation_niveau_0)) {
$societe->nom_localisation_niveau_0 = "";
$societe->id_localisation_niveau_0 = "";
}
if (!isset($societe->nom_localisation_niveau_1)) {
$societe->nom_localisation_niveau_1 = "";
$societe->id_localisation_niveau_1 = "";
}
if (!isset($societe->nom_localisation_niveau_2)) {
$societe->nom_localisation_niveau_2 = "";
$societe->id_localisation_niveau_2 = "";
}
$ca = $societe->_get('ca_n');
if ($ca != null) {
$societe->_set('ca_n', substr($ca, 0, strpos($ca, ".")));
}
if (is_numeric($societe->_get('numero_siren'))) {
$societe->lien_societe_com = 'http://www.societe.com/societe/' . Utils::slugify($societe->_get('raison_sociale')) . '-' . $societe->_get('numero_siren') . '.html';
} else {
$societe->lien_societe_com = "";
}
$infoParticipation = $this->getInfoParticipationAssocie($idSociete);
if ($infoParticipation) {
$societe->lienParticipation = '/participation-' . Utils::slugify($infoParticipation['raison_sociale']) . ',' . $infoParticipation['id_societe'];
} else {
$societe->lienParticipation = '';
}
$slug = $societe->_get('resume_activite') ? Utils::slugify($societe->_get('resume_activite')) : "sans-resume";
$societe->slug = $slug;
if ($societe->_get('resume_activite') == null || $societe->_get('resume_activite') == "null") {
if ($societe->_get('id_region') != null && $societe->_get('id_region') != "choisir" && $societe->_get('id_pays') == 33) {
$localisation_societe = $this->localisationsRepository->findOneBy(['id_localisation' => $societe->_get('id_region')]);
} else {
$localisation_societe = $this->localisationsRepository->findOneBy(['id_localisation' => $societe->_get('id_pays')]);
}
$arrayVarsTrans = array();
if (!empty($localisation_societe)) {
$arrayVarsTrans = [
"prefixe" => $localisation_societe->__get('prefixe'),
"nom_localisation" => $localisation_societe->__get('nom_localisation')
];
}
$societe->_set('resume_activite', $this->translationExtension->translate('société basée %$prefixe%$ %$nom_localisation%$', $lang, "", "M", "", $arrayVarsTrans));
}
$societe->arrondi_ca = $this->donne_arrondi_CA($societe->_get('ca_n'));
$this->em->detach($societe);
return $societe;
} else {
return null;
}
}
public function getTableauActionnairesInstitutionnelsParticipation($idParticipation, $lang) {
$tableau = $this->em->getRepository(Societes::class)->donne_tableau_actionnaires_institutionnels_participation($idParticipation);
for ($i = 0; $i < count($tableau); $i++) {
if (isset($tableau[$i]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/', $tableau[$i]["date_investissement"]) > 0) {
if (strlen($tableau[$i]["date_investissement"]) == 6) {
$mois = DateProvider::donne_nom_mois(substr($tableau[$i]["date_investissement"], 4, 2));
if ($lang != "fr") {
$mois = $this->translationExtension->translate($mois, $lang);
}
$tableau[$i]['mois_investissement'] = $mois;
} else {
$tableau[$i]['mois_investissement'] = "";
}
} else {
$tableau[$i]['mois_investissement'] = "";
}
}
return $tableau;
}
public function getTableauActionnairesInstitutionnelsParticipationArchive($idParticipation, $lang) {
$tableau = $this->em->getRepository(Societes::class)->donne_tableau_actionnaires_institutionnels_participation_archive($idParticipation);
for ($i = 0; $i < count($tableau); $i++) {
if (isset($tableau[$i]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/', $tableau[$i]["date_investissement"]) > 0) {
if (strlen($tableau[$i]["date_investissement"]) == 6) {
$mois = DateProvider::donne_nom_mois(substr($tableau[$i]["date_investissement"], 4, 2));
if ($lang != "fr") {
$mois = $this->translationExtension->translate($mois, $lang);
}
$tableau[$i]['mois_investissement'] = $mois;
} else {
$tableau[$i]['mois_investissement'] = "";
}
} else {
$tableau[$i]['mois_investissement'] = "";
}
}
return $tableau;
}
public function calcul_numero_image_cadran($tab_actionnaires) {
$date = date('Ymd');
//S'il n'y a qu'un actionnaire, on regarde depuis combien d'années il a investit dans la société
if (count($tab_actionnaires) == 1) {
if (isset($tab_actionnaires[0]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/', $tab_actionnaires[0]["date_investissement"]) > 0) {
if (strlen($tab_actionnaires[0]["date_investissement"]) == 6) {
$date_inv = $tab_actionnaires[0]["date_investissement"];
} else {
$date_inv = substr($tab_actionnaires[0]["date_investissement"], 0, 4) . "01";
}
$nb_mois = DateProvider::donne_difference_mois(substr($date, 0, 6), $date_inv);
$nb_annees = (int) round($nb_mois / 12);
if ($nb_annees > 9) {
$numero_cadran = 9;
} else {
$numero_cadran = $nb_annees;
}
} else {
$numero_cadran = -1;
}
}
//S'il y en a plusieurs, il y a deux possibilités
else {
$bool_aucune_date_definie = true;
$bool_tous_les_montants_definis = true;
$bool_date_unique = true;
if (isset($tab_actionnaires[0]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/', $tab_actionnaires[0]["date_investissement"]) > 0) {
if (strlen($tab_actionnaires[0]["date_investissement"]) == 6) {
$date_investissement = $tab_actionnaires[0]["date_investissement"];
} else {
$date_investissement = substr($tab_actionnaires[0]["date_investissement"], 0, 4) . "01";
}
} else {
$date_investissement = "000000";
}
//On parcourt le tableau pour savoir si tous les montants sont définis
for ($i = 0; $i < count($tab_actionnaires); $i++) {
if ($i != 0) {
if (isset($tab_actionnaires[$i]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/', $tab_actionnaires[$i]["date_investissement"]) > 0) {
if (strlen($tab_actionnaires[$i]["date_investissement"]) == 6) {
$date_investissement_i = $tab_actionnaires[$i]["date_investissement"];
} else {
$date_investissement_i = substr($tab_actionnaires[$i]["date_investissement"], 0, 4) . "01";
}
} else {
$date_investissement_i = "000000";
}
$diff_annees = (int) round(DateProvider::donne_difference_mois($date_investissement, $date_investissement_i) / 12);
if ($diff_annees > 0) {
$bool_date_unique = false;
}
}
if (isset($tab_actionnaires[$i]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/', $tab_actionnaires[$i]["date_investissement"]) > 0) {
$bool_aucune_date_definie = false;
}
if (!isset($tab_actionnaires[$i]["montant_investi"]) || $tab_actionnaires[$i]["montant_investi"] == null) {
$bool_tous_les_montants_definis = false;
}
}
if (!$bool_aucune_date_definie) {
//1ere possibilité : Soit on n'a pas tous les montants des investissements
if (!$bool_tous_les_montants_definis) {
//Les investissements ont la même date, alors le calcul est pareil que pour 1 seul investissemnt
if ($bool_date_unique) {
if (isset($tab_actionnaires[0]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/', $tab_actionnaires[0]["date_investissement"]) > 0) {
if (strlen($tab_actionnaires[0]["date_investissement"]) == 6) {
$date_inv = $tab_actionnaires[0]["date_investissement"];
} else {
$date_inv = substr($tab_actionnaires[0]["date_investissement"], 0, 4) . "01";
}
$diff_annees = (int) round(DateProvider::donne_difference_mois(substr($date, 0, 6), $date_inv) / 12);
if ($diff_annees > 9) {
$numero_cadran = 9;
} else {
$numero_cadran = $diff_annees;
}
} else {
$numero_cadran = -1;
}
} else {
//sinon derniere date + 1
if (isset($tab_actionnaires[0]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/', $tab_actionnaires[0]["date_investissement"]) > 0) {
if (strlen($tab_actionnaires[0]["date_investissement"]) == 6) {
$date_inv = $tab_actionnaires[0]["date_investissement"];
} else {
$date_inv = substr($tab_actionnaires[0]["date_investissement"], 0, 4) . "01";
}
$diff_annees = (int) round(DateProvider::donne_difference_mois(substr($date, 0, 6), $date_inv) / 12) + 1;
if ($diff_annees > 9) {
$numero_cadran = 9;
} else {
$numero_cadran = $diff_annees;
}
} else {
$numero_cadran = -1;
}
}
}
//Soit on a tous les montants des investissements
else {
if ($bool_date_unique) {
if (isset($tab_actionnaires[0]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/', $tab_actionnaires[0]["date_investissement"]) > 0) {
if (strlen($tab_actionnaires[0]["date_investissement"]) == 6) {
$date_inv = $tab_actionnaires[0]["date_investissement"];
} else {
$date_inv = substr($tab_actionnaires[0]["date_investissement"], 0, 4) . "01";
}
$diff_annees = (int) round(DateProvider::donne_difference_mois(substr($date, 0, 6), $date_inv) / 12);
if ($diff_annees > 9) {
$numero_cadran = 9;
} else {
$numero_cadran = $diff_annees;
}
} else {
$numero_cadran = -1;
}
} else {
$cpt_montant = 0;
$moyenne = 0;
//Calcul du "barycentre" au niveau des date_investissement en fonction des montants investis
for ($i = 0; $i < count($tab_actionnaires); $i++) {
//On n'ajoute les donnees que si la date d'investissement est bien precisee
if (isset($tab_actionnaires[$i]["date_investissement"]) && preg_match('/^[0-9]{4,6}$/', $tab_actionnaires[$i]["date_investissement"]) > 0) {
$cpt_montant += $tab_actionnaires[$i]["montant_investi"];
if (strlen($tab_actionnaires[$i]["date_investissement"]) == 6) {
$date_inv = $tab_actionnaires[$i]["date_investissement"];
} else {
$date_inv = substr($tab_actionnaires[$i]["date_investissement"], 0, 4) . "01";
}
$duree_investissement = (int) round(DateProvider::donne_difference_mois(substr($date, 0, 6), $date_inv) / 12);
$moyenne += ($tab_actionnaires[$i]["montant_investi"] * $duree_investissement);
}
}
$moyenne_durees = (int) round($moyenne / $cpt_montant);
if ($moyenne_durees > 9) {
$numero_cadran = 9;
} else {
$numero_cadran = $moyenne_durees;
}
}
}
} else {
$numero_cadran = -1;
}
}
return $numero_cadran;
}
public function donne_option_select_pays_cible_potentielle($id_pays_connexion = 33) {
$pays = $this->em->getRepository(Societes::class)->donne_option_select_pays_cible_potentielle($id_pays_connexion);
$options = ['Tous' => 0];
foreach ($pays as $p) {
if ($p['nom_localisation'] != null) {
$options = array_merge($options, [$p['nom_localisation'] => 'p' . $p['id_localisation']]);
}
}
return $options;
}
public function donne_option_select_pays_acquereur_historique($id_pays_connexion = 33) {
$pays = $this->em->getRepository(Societes::class)->donne_option_select_pays_acquereur_historique($id_pays_connexion);
$options = ['Tous' => 0];
foreach ($pays as $p) {
if ($p['nom_localisation'] != null) {
$options = array_merge($options, [$p['nom_localisation'] => 'p' . $p['id_localisation']]);
}
}
return $options;
}
public function donne_option_select_pays_fonds_investissement($id_pays_connexion = 33) {
$pays = $this->em->getRepository(Societes::class)->donne_option_select_pays_fonds_investissement($id_pays_connexion);
$options = ['Tous' => 0];
foreach ($pays as $p) {
if ($p['nom_localisation'] != null) {
$options = array_merge($options, [$p['nom_localisation'] => 'p' . $p['id_localisation']]);
}
}
return $options;
}
public function getInfoParticipationAssocie($idSocieteNews) {
$queryBuilder = $this->em->createQueryBuilder();
$query = $queryBuilder->select(
array(
"societes.raison_sociale",
"societes.id_societe",
"lienParticipationsFonds.id_gestionnaire_fonds",
))
->from('App\Entity\Societes', 'societes')
->leftJoin('App\Entity\LienParticipationsFonds', 'lienParticipationsFonds', 'WITH', 'societes.id_societe = lienParticipationsFonds.id_participation')
->Where('societes.id_societe = :idSocieteNews')
->andWhere('lienParticipationsFonds.id_gestionnaire_fonds <> :null')
->setParameter('idSocieteNews', $idSocieteNews)
->setParameter('null', 'null')
->setMaxResults(10000)
->getQuery();
$liste = $query->getResult();
if ($liste) {
$result = $liste[0];
} else {
$result = null;
}
return $result;
}
public function getActualiteSocieteParIdSociete($idSocieteNews) {
$queryBuilder = $this->em->createQueryBuilder();
$query = $queryBuilder->select(
array(
"distinct (buzzRoles.id_operation)",
"buzzActualites.id_actualite",
"buzzActualites.date_mise_en_ligne",
"buzzActualites.titre_actualite",
"buzzActualites.provenance_flux_actualite",
"buzzActualites.autorisation_blog"
))
->from('App\Entity\BuzzRoles', 'buzzRoles')
->leftJoin('App\Entity\BuzzActualites', 'buzzActualites', 'WITH', 'buzzRoles.id_operation = buzzActualites.id_operation')
->Where('buzzActualites.mode_actualite = :modePublique')
->andWhere('buzzActualites.date_mise_en_ligne <= :maDate')
->andWhere('buzzActualites.autorisation_blog <> :tagConfidentiel')
->andWhere($queryBuilder->expr()->orX(
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq('buzzRoles.id_acteur', "'" . $idSocieteNews . "'"),
$queryBuilder->expr()->eq('buzzRoles.table_sql_acteur', "'societes_news'")
),
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq('buzzRoles.id_acteur_passif', "'" . $idSocieteNews . "'"),
$queryBuilder->expr()->eq('buzzRoles.table_sql_acteur_passif', "'societes_news'"))
)
)
->setParameter('maDate', date("Ymd"))
->setParameter('modePublique', 'publique')
->setParameter('tagConfidentiel', 'non')
->orderBy('buzzActualites.date_mise_en_ligne', 'DESC')
->setMaxResults(10000)
->getQuery();
$result = $query->getResult();
$actus = [];
foreach ($result as $r) {
$r['date_formated'] = DateProvider::donne_date_format_affichage($r['date_mise_en_ligne']);
$r['url_actualite'] = 'https://www.fusacq.com/buzz/' . Utils::slugify($r['titre_actualite']) . '-a' . $r['id_actualite'] . '';
$actus[] = $r;
}
return $actus;
}
public function getActualitePrincipaleSocieteParIdSociete($idSocieteNews) {
$queryBuilder = $this->em->createQueryBuilder();
$query = $queryBuilder->select(
array(
"distinct (buzzActualites.id_actualite)",
"buzzActualites.id_actualite",
"buzzActualites.date_mise_en_ligne",
"buzzActualites.titre_actualite",
"buzzActualites.provenance_flux_actualite",
"buzzActualites.autorisation_blog"
))
->from('App\Entity\BuzzRoles', 'buzzRoles')
->join('App\Entity\BuzzOperations', 'buzzOperations', 'WITH', 'buzzOperations.id_operation = buzzRoles.id_operation')
->join('App\Entity\BuzzActualites', 'buzzActualites', 'WITH', 'buzzOperations.id_actualite_principale = buzzActualites.id_actualite')
->Where('buzzActualites.mode_actualite = :modePublique')
->andWhere('buzzRoles.id_type_role = :id_type_role')
->andWhere('buzzOperations.type_operation = :type_operation')
->andWhere('buzzActualites.date_mise_en_ligne <= :maDate')
//->andWhere('buzzActualites.autorisation_blog <> :tagConfidentiel')
->andWhere($queryBuilder->expr()->orX(
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq('buzzRoles.id_acteur', ":idActeur"),
$queryBuilder->expr()->eq('buzzRoles.table_sql_acteur', "'societes_news'")
),
$queryBuilder->expr()->andX(
$queryBuilder->expr()->eq('buzzRoles.id_acteur_passif', ":idActeurPassif"),
$queryBuilder->expr()->eq('buzzRoles.table_sql_acteur_passif', "'societes_news'"))
)
)
->setParameter('id_type_role', 1)
->setParameter('type_operation', 'fusion_acquisition')
->setParameter('maDate', date("Ymd"))
->setParameter('modePublique', 'publique')
//->setParameter('tagConfidentiel','non')
->setParameter('idActeur', $idSocieteNews)
->setParameter('idActeurPassif', $idSocieteNews)
->orderBy('buzzActualites.date_mise_en_ligne', 'DESC')
->setMaxResults(10000)
->getQuery();
$result = $query->getResult();
$actus = [];
foreach ($result as $r) {
$r['date_formated'] = DateProvider::donne_date_format_affichage($r['date_mise_en_ligne']);
$r['url_actualite'] = 'https://www.fusacq.com/buzz/' . Utils::slugify($r['titre_actualite']) . '-a' . $r['id_actualite'] . '';
$actus[] = $r;
}
return $actus;
}
public function getStadesInvestissement($lang = "FR") {
$tab_stade_invest = array(
"",
$this->translationExtension->translate("amorçage", $lang, "", "M"),
$this->translationExtension->translate("capital risque", $lang, "", "M"),
$this->translationExtension->translate("capital developpement", $lang, "", "M"),
$this->translationExtension->translate("transmissions - LBO", $lang, "", "M"),
$this->translationExtension->translate("mezzanine", $lang, "", "M"),
$this->translationExtension->translate("retournement", $lang, "", "M"),
$this->translationExtension->translate("fonds de fonds", $lang, "", "M")
);
return $tab_stade_invest;
}
public function getIdParticipationsFondsList(array $filter = [], $type = '') {
$sql = $this->em->getRepository(Societes::class)->donne_requete_SQL_pour_tableau_id_participations_fonds($filter, $type);
$params = $this->em->getRepository(Societes::class)->prepareParameters($filter);
$query = $this->em->createQuery($sql);
$query->setParameters($params);
return $query->getResult();
}
public function getIdAcquereurHistoriqueList(array $filter = []) {
$sql = $this->em->getRepository(Societes::class)->donne_requete_SQL_pour_tableau_id_acquereur_historique($filter);
$params = $this->em->getRepository(Societes::class)->prepareParametersAcquereurHistorique($filter);
//dd($sql, $params);
$query = $this->em->createQuery($sql);
$query->setParameters($params);
return $query->getResult();
}
public function getIdAcquereurInvestisseurList(array $filter = []) {
$sql = $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_id_acquereur_investisseur($filter, "");
$params = $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement($filter);
$query = $this->em->createQuery($sql);
$query->setParameters($params);
return $query->getResult();
}
public function getIdFondsInvestissementList(array $filter = []) {
$sql = $this->em->getRepository(Participation::class)->donne_requete_SQL_pour_tableau_id_fonds_investissement($filter, "");
$params = $this->em->getRepository(Participation::class)->prepareParametersFondsInvestissement($filter);
$query = $this->em->createQuery($sql);
$query->setParameters($params);
return $query->getResult();
}
public function donne_tableau_nb_cible_potentielle_par_region($id_pays = 33) {
$nb_cible_potentielle_par_region = $this->em->getRepository(Participation::class)->donne_nb_cibles_potentielles_par_region($id_pays);
$array_annonce_region = [];
foreach ($nb_cible_potentielle_par_region as $id_region => $nb) {
$region = $this->localisationsRepository->findOneBy(['id_localisation' => $id_region]);
if ($region) {
$row = [
'nb' => $nb,
'nom' => $region->__get('nom_localisation'),
'prefixe' => $region->__get('prefixe')
];
$array_annonce_region[$id_region] = $row;
}
}
uasort($array_annonce_region, function ($a, $b) {
return $a['nom'] < $b['nom'] ? -1 : 1;
});
return $array_annonce_region;
}
public function donne_tableau_acquereur_historique_par_region_dun_pays($id_pays = 33) {
$regions = $this->lm->getRegionsByCountry($id_pays);
$array_annonce_region = [];
foreach ($regions as $region) {
$nb = $this->em->getRepository(Participation::class)->donne_nb_acquereurs_historiques_par_localisation($region['id_localisation'])[1];
$row = [
'nb' => $nb,
'nom' => $region['nom_localisation'],
'prefixe' => $region['prefixe']
];
$array_annonce_region[$region['id_localisation']] = $row;
}
uasort($array_annonce_region, function ($a, $b) {
return $a['nom'] < $b['nom'] ? -1 : 1;
});
return $array_annonce_region;
}
public function donne_tableau_acquereur_historique_par_region($id_pays = 33) {
$nb_acquereur_historique_par_region = $this->em->getRepository(Participation::class)->donne_nb_acquereurs_historiques_par_region($id_pays);
$array_annonce_region = [];
foreach ($nb_acquereur_historique_par_region as $id_region => $nb) {
$region = $this->localisationsRepository->findOneBy(['id_localisation' => $id_region]);
$row = [
'nb' => $nb,
'nom' => $region->__get('nom_localisation'),
'prefixe' => $region->__get('prefixe')
];
$array_annonce_region[$id_region] = $row;
}
uasort($array_annonce_region, function ($a, $b) {
return $a['nom'] < $b['nom'] ? -1 : 1;
});
return $array_annonce_region;
}
public function donne_tableau_participation_fonds_par_region($id_pays = 33) {
$nb_acquereur_historique_par_region = $this->em->getRepository(Participation::class)->donne_nb_participation_fonds_par_region($id_pays);
$array_annonce_region = [];
foreach ($nb_acquereur_historique_par_region as $id_region => $nb) {
$region = $this->localisationsRepository->findOneBy(['id_localisation' => $id_region]);
if ($region) {
$row = [
'nb' => $nb,
'nom' => $region->__get('nom_localisation'),
'prefixe' => $region->__get('prefixe')
];
$array_annonce_region[$id_region] = $row;
}
}
uasort($array_annonce_region, function ($a, $b) {
return $a['nom'] < $b['nom'] ? -1 : 1;
});
return $array_annonce_region;
}
/**
*
* @param type $siren
* @param type $mode
* @return type
*/
public function checkSocieteExistBySiren($siren, $mode = null) {
return $this->em->getRepository(Societes::class)->checkSocieteExistBySiren($siren, $mode);
}
/**
*
* @param type $siren
* @param type $data
* @Descrition return societe by SIREN, create if not exist
* @return \App\Services\ManagerEntity\societe
*/
public function getSocieteBySiren($siren, ...$data) {
$societe = $this->em->getRepository(Societes::class)->findOneBy(["numero_siren" => $siren]);
if (! $societe ) { // si introuvable , on cree de nouveau
$societe = new $societe();
$societe->_set("numero_siren",$siren);
$societe->_set("mode_societe","temporaire");
$societe->_set("src_image_si_artviper_desactive","https://content.fusacq.com/static/dev-fusacq/buzz/images/spacer.gif");
if( $data && array_key_exists("raison_sociale", $data)){
$societe->_set("raison_sociale",$data["raison_sociale"]);
}
$this->em->persist($societe);
$this->em->flush();
}
return $societe;
}
public function donne_tableau_nb_fonds_investissement_par_region($id_pays = 33) {
$nb_fonds_investissement_par_region = $this->em->getRepository(Participation::class)->donne_nb_fonds_investissement_par_region($id_pays);
$array_annonce_region = [];
foreach ($nb_fonds_investissement_par_region as $id_region => $nb) {
$region = $this->localisationsRepository->findOneBy(['id_localisation' => $id_region]);
if ($region) {
$row = [
'nb' => $nb,
'nom' => $region->__get('nom_localisation'),
'prefixe' => $region->__get('prefixe')
];
$array_annonce_region[$id_region] = $row;
}
}
uasort($array_annonce_region, function ($a, $b) {
return $a['nom'] < $b['nom'] ? -1 : 1;
});
return $array_annonce_region;
}
public function donne_arrondi_CA ($ca) {
$arrondi = "";
if ($ca < 1000) {
$arrondi = round($ca / 10) * 10;
} elseif ($ca < 10000) {
$arrondi = round($ca / 1000) * 1000;
} elseif ($ca < 100000) {
$arrondi = round($ca / 5000) * 5000;
} elseif ($ca > 100000) {
$arrondi = round($ca / 10000) * 10000;
}
return $arrondi;
}
}