<?php
namespace App\Controller;
use App\Repository\AdresseRepository;
use App\Repository\MessageRepository;
use App\Repository\AdressesTypeRepository;
use App\Repository\SendingMessageRepository;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class TesteurController extends AbstractController
{
private $messageRepository;
private $adresseRepository;
private $adressesTypeRepository;
private $sendingMessageRepository;
public function __construct(MessageRepository $messageRepository, AdresseRepository $adresseRepository, AdressesTypeRepository $adressesTypeRepository, SendingMessageRepository $sendingMessageRepository)
{
$this->messageRepository = $messageRepository;
$this->adresseRepository = $adresseRepository;
$this->adressesTypeRepository = $adressesTypeRepository;
$this->sendingMessageRepository = $sendingMessageRepository;
}
/**
* @Route("/gestion/testeur", name="testeur")
*/
public function testeur()
{
//liste de toutes les catégories (ou types) possibles pour une lettre
$listeTypes = array(1,2,3,4,6,7,8,16,18,34);
//récupération des adressesId pour la liste des catégories
$listeAdressesId = $this->_listeAdressesId($listeTypes);
//dd($listeAdressesId);
//épuration des adresses archivées
//et construction du tableau des mails avec infos
//pour la liste des destinataires
$retour = $this->_epurArchives($listeAdressesId);
$retour = $this->_salaries($retour['tabmail'],$retour['tabemail'],$retour['t'],$retour['taberror']);
$retour = $this->_administrateurs($retour['tabmail'],$retour['tabemail'],$retour['t'],$retour['taberror']);
$retour = $this->_membres($retour['tabmail'],$retour['tabemail'],$retour['t'],$retour['taberror']);
$taberror = $retour['taberror'];
//dd($taberror);
return $this->render('testeur/index.html.twig', [
'taberror' =>$taberror,
'total' => count($taberror)
]);
}
private function _listeAdressesId($listeTypes){
$listAdressId = array();
if(!empty($listeTypes)){
foreach($listeTypes as $l){
$adressesId = $this->adressesTypeRepository->findByTypeId($l);
foreach($adressesId as $a){
//dd($a);
if(!in_array($a->getAdressId(), $listAdressId)){
$listAdressId[]= $a->getAdressId();
}
}
}
// dd($listAdressId);
}
return $listAdressId;
}
private function _epurArchives($listeAdressesId){
$tabmail = array();
$tabemail = array();
$taberror = array();
$t = 1;
if(!empty($listeAdressesId)){
foreach($listeAdressesId as $aId){
//exclure les adresses en archive
$archiv = 0;
$adresseTypes = $this->adressesTypeRepository->findAdresseTypes($aId);
//dump($adresseTypes);exit;
foreach($adresseTypes as $ty){
//dd($ty);
if($ty->getTypeId() == 17){
$archiv = 1;
}
}
if($archiv == 0){
//dd($aId);
$adresse = $this->adresseRepository->find($aId);
// dd($adresse);
if(!is_null($adresse))
{
//choisir la préférence de l'adresse email
$mail = $adresse->getEmail();
if(strlen($adresse->getEmailAdmin()) > 0){
//les emails admin peuvent être séparés par des point-virgules
if(strpos($adresse->getEmailAdmin(),';') > 0){
$mailAdmins = explode(';',$adresse->getEmailAdmin());
}else{
$mail = $adresse->getEmailAdmin();
}
}
$mail = trim($mail);
$name = $adresse->getRaisonSociale().' '.$adresse->getName();
$name = str_replace('É','É',$name);
$name = str_replace('À','À',$name);
$name = str_replace('Â','Â',$name);
$name = str_replace('é','é',$name);
$name = str_replace('è','è',$name);
if(strlen($mail) == 0){
$taberror[$aId] = "Pas de mail pour ".$name." - id = ".$aId;
}
if(!in_array($mail,$tabemail)){
$tabemail[$t] = $mail;
$tabmail[$t]['mail'] = $mail;
$tabmail[$t]['name'] = trim(mb_strtoupper($name));
// $tabmail[$t]['cp'] = $a['codePostal'];
if(isset($mailAdmins)){
foreach($mailAdmins as $m){
$t++;
$tabemail[$t] = $m;
$tabmail[$t]['mail'] = $m;
$tabmail[$t]['name'] = trim(mb_strtoupper($name));
// $tabmail[$t]['cp'] = $a['codePostal'];
}
}
}
}else{
//le fichier adresses_types contient des lignes
//erronées avec des adress_id qui n'existent plus dans adresses
//throw new Exception('Pas d\'adresse n° '.$aId);
}
$t++;
}
}
}
//dump(count($tabmail));
//dump($tabemail);exit;
//dd($taberror);
return array('tabmail'=>$tabmail,'tabemail'=>$tabemail,'t'=>$t, 'taberror' => $taberror);
}
private function _salaries($tabmail,$tabemail,$t, $taberror){
$t++;
//dump($t);
$salaries = $this->adresseRepository->findSalaries();
//dump($salaries);exit;
foreach($salaries as $s){
//dd($s);
$d = $this->adresseRepository->find($s['adress_id']);
//dd($d);
if(is_null($d)){
//dump($s);exit;
continue;
}
$mail = $d->getEmail();
if($mail == '') {
$taberror[$d->getId()] = "Pas de mail pour le salarié ".$d->getName();
}else{
//dump(count($tabemail));
//dump($mail);
$mail = trim($mail);
if(!in_array($mail,$tabemail)){
//dump($mail);
$tabemail[$t] = $mail;
$tabmail[$t]['mail'] = $mail;
$tabmail[$t]['name'] = trim(mb_strtoupper($d->getName()));
// $tabmail[$t]['cp'] = 'non';
}
}
$t++;
}
//dump($t);
//dump(count($tabmail));
//dump($tabemail);exit;
return array('tabmail'=>$tabmail,'tabemail'=>$tabemail, 't'=>$t,'taberror'=>$taberror);
}
private function _administrateurs($tabmail,$tabemail,$t,$taberror){
$t++;
//dump($t);
$admins = $this->adresseRepository->findAdmins();
//dump($admins);exit;
foreach($admins as $s){
//dd($s);
$d = $this->adresseRepository->find($s['adress_id']);
//dd($d);
if(is_null($d)){
//dump($s);exit;
continue;
}
$mail = $d->getEmail();
if($mail == '') {
$taberror[$d->getId()] = "Pas de mail pour l'administrateur' ".$d->getName();
}else{
//dump(count($tabemail));
//dump($mail);
$mail = trim($mail);
if(!in_array($mail,$tabemail)){
//dump($mail);
$tabemail[$t] = $mail;
$tabmail[$t]['mail'] = $mail;
$tabmail[$t]['name'] = trim(mb_strtoupper($d->getName()));
// $tabmail[$t]['cp'] = 'non';
}
}
$t++;
}
//dump($t);
//dump(count($tabmail));
//dump($tabemail);exit;
return array('tabmail'=>$tabmail,'tabemail'=>$tabemail, 't'=>$t,'taberror'=>$taberror);
}
private function _membres($tabmail,$tabemail,$t,$taberror){
$t++;
//dump($t);
$membres = $this->adresseRepository->findMembres();
//dump($membres);exit;
foreach($membres as $s){
//dd($s);
$d = $this->adresseRepository->find($s['adress_id']);
//dd($d);
if(is_null($d)){
//dump($s);exit;
continue;
}
$mail = $d->getEmail();
if($mail == '') {
$taberror[$d->getId()] = "Pas de mail pour le membre de l\'AG ' ".$d->getName();
}else{
//dump(count($tabemail));
//dump($mail);
$mail = trim($mail);
if(!in_array($mail,$tabemail)){
//dump($mail);
$tabemail[$t] = $mail;
$tabmail[$t]['mail'] = $mail;
$tabmail[$t]['name'] = trim(mb_strtoupper($d->getName()));
// $tabmail[$t]['cp'] = 'non';
}
}
$t++;
}
//dump($t);
//dump(count($tabmail));
//dump($tabemail);exit;
return array('tabmail'=>$tabmail,'tabemail'=>$tabemail, 't'=>$t,'taberror'=>$taberror);
}
}