src/Controller/Admin/DefaultController.php line 33

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin;
  3. use App\Service\PDF\MydReportCouveuse;
  4. use CpChart\Chart\Pie;
  5. use CpChart\Data;
  6. use CpChart\Image;
  7. use Doctrine\DBAL\Connection;
  8. use Doctrine\ORM\EntityManagerInterface;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  14. use Symfony\Component\Mailer\MailerInterface;
  15. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  16. /**
  17.  * @method \App\Entity\Utilisateur getUser()
  18.  */
  19. class DefaultController extends AbstractController
  20. {
  21.     private Connection $db;
  22.     private EntityManagerInterface $em;
  23.     public function __construct(Connection $connectionEntityManagerInterface $manager)
  24.     {
  25.         $this->db $connection;
  26.         $this->em $manager;
  27.     }
  28.     public function indexAction(Request $request): Response
  29.     {
  30.         $activeStructure $request->getSession()->get('activeStructure');
  31.         $userLevel $request->getSession()->get('userLevel');
  32.         $htmlEffectifs '';
  33.         $dateRef = new \DateTime();
  34.         if ($activeStructure->getNiveau() == 10) {
  35.             $queryCouveuses "
  36.                 SELECT count(*)
  37.                 FROM couveuse
  38.                 WHERE datecreation <= '" $dateRef->format('d/m/Y') . "'
  39.                 AND (datelabel is not null
  40.                 AND datelabel <= '" $dateRef->format('d/m/Y') . "')
  41.             ";
  42.             $dbCouveuses $this->db->fetchAssociative($queryCouveuses);
  43.             $queryTotal "
  44.                 SELECT count(*)
  45.                 FROM couveuse
  46.                 WHERE datecreation <= '" $dateRef->format('d/m/Y') . "'
  47.             ";
  48.             $dbTotal $this->db->fetchAssociative($queryTotal);
  49.             $queryCouvBor "
  50.                 SELECT count(*)
  51.                 FROM couveuse
  52.                 WHERE datecreation <= '" $dateRef->format('d/m/Y') . "'
  53.                 AND boreal = true
  54.             ";
  55.             $dbCouvBor $this->db->fetchAssociative($queryCouvBor);
  56.             $queryAntenne "
  57.                 SELECT count(a.*)
  58.                 FROM antenne a, structure s
  59.                 WHERE a.idstructure = s.idstructure
  60.                 AND s.idparent IN (  SELECT s.idstructure FROM structure s, couveuse c WHERE c.idstructure = s.idstructure AND c.datecreation <= '" $dateRef->format('d/m/Y') . "'  AND (c.datelabel is not null AND c.datelabel <= '" $dateRef->format('d/m/Y') . "') )";
  61.             $dbAntenne $this->db->fetchAssociative($queryAntenne);
  62.             $queryDept "
  63.                 SELECT COUNT(DISTINCT(substring( s.codepostal, 1, 2 )))
  64.                 FROM couveuse c, structure s
  65.                 WHERE c.idstructure = s.idstructure
  66.                 AND datecreation <= '" $dateRef->format('d/m/Y') . "'
  67.                 AND (datelabel is not null
  68.                 AND datelabel <= '" $dateRef->format('d/m/Y') . "')
  69.             ";
  70.             $dbDept $this->db->fetchAssociative($queryDept);
  71.             $effectifsUCE = ["couveuses" =>     $dbCouveuses['count'], "total"     =>     $dbTotal['count'], "boreal"     =>     $dbCouvBor['count'], "antennes"     =>     $dbAntenne['count'], "departements"    =>     $dbDept['count']];
  72.             $htmlEffectifs '
  73.                 <table id="responsiveTable" class="table table-striped effectifs text-center">
  74.                     <tr>
  75.                         <th width="20%" class="candidats">Couveuses du Réseau</th>
  76.                         <th width="20%" class="prospects">Couveuses labellisées</th>
  77.                         <th width="20%" class="suivis">Couveuses Boréal</th>
  78.                         <th width="20%" class="sortis">Antennes</th>
  79.                         <th width="20%" class="candidats">Départements couverts</th>
  80.                     </tr>
  81.                     <tr>
  82.                         <td width="20%" style="font-size:10px"><span style="font-size:12px">' $effectifsUCE['total'] . '</span></td>
  83.                         <td width="20%" style="font-size:10px"><span style="font-size:12px">' $effectifsUCE['couveuses'] . '</span></td>
  84.                         <td width="20%" style="font-size:10px"><span style="font-size:12px">' $effectifsUCE['boreal'] . '</span></td>
  85.                         <td width="20%" style="font-size:10px"><span style="font-size:12px">' $effectifsUCE['antennes'] . '</span></td>
  86.                         <td width="20%" style="font-size:10px"><span style="font-size:12px">' $effectifsUCE['departements'] . '</span></td>
  87.                     </tr>
  88.                 </table>
  89.             ';
  90.         }
  91.         if ($activeStructure->getNiveau() == 20) {
  92.             $qlistStructures "SELECT idstructure FROM structure WHERE idparent = " $activeStructure->getIdstructure();
  93.             $listStructures $this->db->fetchAllAssociative($qlistStructures);
  94.             $listStructuresStr '';
  95.             foreach ($listStructures as $struc) {
  96.                 $listStructuresStr .= $struc['idstructure'] . ',';
  97.             }
  98.             $listStructuresStr .= $activeStructure->getIdstructure();
  99.             // CALCULS EFFECTIFS
  100.             $queryProspectOri "
  101.                 SELECT count(identrepreneur), SUM(chiffreaff), 0 as tmpetat
  102.                 FROM entrepreneur
  103.                 WHERE (dateprospect <= '" $dateRef->format('d/m/Y') . "')
  104.                 AND (datecandidat >= '" $dateRef->format('d/m/Y') . "' OR datecandidat IS NULL)
  105.                 AND (datecouve >= '" $dateRef->format('d/m/Y') . "' OR datecouve IS NULL)
  106.                 AND (datesortie >= '" $dateRef->format('d/m/Y') . "' OR datesortie IS NULL)
  107.                 AND  idstructure IN (" $listStructuresStr ")
  108.                 AND etat <> 4
  109.             ";
  110.             $dbProspectOri $this->db->fetchAllAssociative($queryProspectOri);
  111.             $queryCandiOri "
  112.                 SELECT count(identrepreneur), SUM(chiffreaff), 1 as tmpetat
  113.                 FROM entrepreneur
  114.                 WHERE (datecandidat <= '" $dateRef->format('d/m/Y') . "')
  115.                 AND (datecouve >= '" $dateRef->format('d/m/Y') . "' OR datecouve IS NULL)
  116.                 AND (datesortie >= '" $dateRef->format('d/m/Y') . "' OR datesortie IS NULL)
  117.                 AND  idstructure IN (" $listStructuresStr ")
  118.                 AND etat <> 4
  119.             ";
  120.             $dbCandiOri $this->db->fetchAllAssociative($queryCandiOri);
  121.             $queryCouveOri "
  122.                 SELECT count(identrepreneur), SUM(chiffreaff), 2 as tmpetat
  123.                 FROM entrepreneur
  124.                 WHERE(datecouve <= '" $dateRef->format('d/m/Y') . "')
  125.                 AND (datesortie >= '" $dateRef->format('d/m/Y') . "' OR datesortie IS NULL)
  126.                 AND  idstructure IN (" $listStructuresStr ")
  127.                 AND etat <> 4
  128.             ";
  129.             $dbCouveOri $this->db->fetchAllAssociative($queryCouveOri);
  130.             $querySortieOri "
  131.                 SELECT count(identrepreneur), SUM(chiffreaff), 3 as tmpetat
  132.                 FROM entrepreneur
  133.                 WHERE (datesortie <= '" $dateRef->format('d/m/Y') . "')
  134.                 AND  idstructure IN (" $listStructuresStr ")
  135.                 AND etat <> 4
  136.             ";
  137.             $dbSortieOri $this->db->fetchAllAssociative($querySortieOri);
  138.             $dbeffectifsOri = [$dbProspectOri[0], $dbCandiOri[0], $dbCouveOri[0], $dbSortieOri[0]];
  139.             $effectifsOri = [];
  140.             $totalEffectOri 0;
  141.             foreach ($dbeffectifsOri as $eff) {
  142.                 $totalEffectOri += $eff['count'];
  143.                 $effectifsOri[$eff['tmpetat']] = $eff;
  144.             }
  145.             for ($i 0$i <= 3$i++) {
  146.                 if (!isset($effectifsOri[$i])) {
  147.                     $effectifsOri[$i] = ["count" => 0"per" => 0"sum" => 0];
  148.                 }
  149.             }
  150.             $htmlEffectifs .= '
  151.                 <table id="responsiveTable" class="table table-striped effectifs text-center">
  152.                     <tr>
  153.                         <th class="prospects">Prospects</th>
  154.                         <th class="candidats">Candidats</th>
  155.                         <th class="suivis">Suivis</th>
  156.                         <th class="sortis">Sortis</th>
  157.                     </tr>
  158.                     <tr>
  159.                         <td>' $effectifsOri[0]['count'] . '</td>
  160.                         <td>' $effectifsOri[1]['count'] . '</td>
  161.                         <td>' $effectifsOri[2]['count'] . '</td>
  162.                         <td>' $effectifsOri[3]['count'] . '</td>
  163.                     </tr>
  164.                 </table>
  165.             ';
  166.         }
  167.         // Liste des années enregistrée
  168.         $queryYear 'SELECT MIN(EXTRACT(YEAR FROM datecreation)) FROM couveuse WHERE idstructure=' $activeStructure->getIdstructure();
  169.         $minYear $this->db->fetchAssociative($queryYear);
  170.         $nowYear date('Y');
  171.         $annees = [];
  172.         if ($minYear['min'] != '') {
  173.             for ($i $minYear['min']; $i <= $nowYear$i++) {
  174.                 $annees[] = $i;
  175.             }
  176.         } else {
  177.             $annees[] = $nowYear;
  178.         }
  179.         // Date prospect la plus ancienne
  180.         $queryProspect $this->db->fetchAssociative('SELECT MIN(dateprospect) FROM entrepreneur');
  181.         $minProspect explode('-'$queryProspect['min']);
  182.         return $this->render('Admin/Default/index.html.twig', ['activeStructure' => $activeStructure'htmlEffectifs' => $htmlEffectifs'annees' => $annees'minProspect' => $minProspect]);
  183.     }
  184.     public function topNavAction(Request $request): Response
  185.     {
  186.         $activeStructure $request->getSession()->get('activeStructure');
  187.         $user $this->getUser();
  188.         $qb $this->em->createQueryBuilder();
  189.         $qb->select('s')
  190.             ->from(\App\Entity\UtilisateurStructure::class, 'us')
  191.             ->from(\App\Entity\Structure::class, 's')
  192.             ->where('s.idstructure = us.idstructure')
  193.             ->andWhere("us.idutilisateur = " $this->getUser()->getId())
  194.             ->andWhere("s.niveau < 30")
  195.             ->orderBy('s.niveau''ASC');
  196.         $structures $qb->getQuery()->getResult();
  197.         $qb->select('us');
  198.         $droits $qb->getQuery()->getResult();
  199.         $userLevel '';
  200.         foreach ($structures as $struct) {
  201.             if ($struct->getIdstructure() == $activeStructure->getIdstructure()) {
  202.                 $request->getSession()->set('activeStructure'$struct);
  203.                 foreach ($droits as $droit) {
  204.                     if ($droit->getIdstructure() == $struct) {
  205.                         $userLevel 'membre';
  206.                         if ($droit->getIssuperv()) {
  207.                             $userLevel 'superv';
  208.                         }
  209.                         if ($droit->getIsadmin()) {
  210.                             $userLevel 'admin';
  211.                         }
  212.                         $factuLevel $droit->getFactuAcces();
  213.                         $factuAcces $droit->getFactuLevel();
  214.                         $request->getSession()->set('userLevel'$userLevel);
  215.                         $request->getSession()->set('factuAcces'$factuAcces);
  216.                         $request->getSession()->set('factuLevel'$factuLevel);
  217.                     }
  218.                 }
  219.                 break;
  220.             }
  221.         }
  222.         $countStructures $this->db->fetchAssociative('SELECT COUNT(*) FROM utilisateur_structure us, structure s WHERE us.idstructure = s.idstructure AND s.niveau < 30 AND us.idutilisateur = ' $this->getUser()->getId());
  223.         // generation du lien vers la facturation
  224.         $secretLink $this->generateUrl('factu_forcelog', [
  225.             'iduser' => $user->getId(),
  226.             'verifcode' => sha1($user->getId() . $user->getMail()),
  227.             'idstructure' => $activeStructure->getIdStructure()
  228.         ]);
  229.         return $this->render('Admin/Default/topNav.html.twig', [
  230.             'activeStructure' => $activeStructure,
  231.             "countStructures" => $countStructures['count'],
  232.             "userLevel" => $userLevel,
  233.             "niveauStructure" => $activeStructure->getNiveau(),
  234.             'factuAcces' => $factuAcces ?? false,
  235.             'factuLevel' => $factuLevel ?? false,
  236.             'secretLink' => $secretLink
  237.         ]);
  238.     }
  239.     public function listStructuresAction(Request $request): Response
  240.     {
  241.         $qb $this->em->createQueryBuilder();
  242.         $qb->select('s')
  243.             ->from(\App\Entity\UtilisateurStructure::class, 'us')
  244.             ->from(\App\Entity\Structure::class, 's')
  245.             ->where("us.idutilisateur = " $this->getUser()->getId())
  246.             ->andWhere('s.idstructure = us.idstructure')
  247.             ->andWhere("s.niveau < 30")
  248.             ->orderBy('s.niveau''ASC');
  249.         $structures $qb->getQuery()->getResult();
  250.         return $this->render('Admin/Default/listStructures.html.twig', ['structures' => $structures]);
  251.     }
  252.     public function switchStructureAction(Request $request$id)
  253.     {
  254.         $request->getSession()->remove('searchEntrepreneur');
  255.         $qb $this->em->createQueryBuilder();
  256.         $qb->select('s')
  257.             ->from(\App\Entity\UtilisateurStructure::class, 'us')
  258.             ->from(\App\Entity\Structure::class, 's')
  259.             ->where('s.idstructure = us.idstructure')
  260.             ->andWhere("us.idutilisateur = " $this->getUser()->getId())
  261.             ->andWhere("s.niveau < 30")
  262.             ->orderBy('s.niveau''ASC');
  263.         $structures $qb->getQuery()->getResult();
  264.         $qb->select('us');
  265.         $droits $qb->getQuery()->getResult();
  266.         $inStructure false;
  267.         foreach ($structures as $struct) {
  268.             if ($struct->getIdstructure() == $id) {
  269.                 $inStructure true;
  270.                 $request->getSession()->set('activeStructure'$struct);
  271.                 foreach ($droits as $droit) {
  272.                     if ($droit->getIdstructure() == $struct) {
  273.                         $userLevel 'membre';
  274.                         if ($droit->getIssuperv()) {
  275.                             $userLevel 'superv';
  276.                         }
  277.                         if ($droit->getIsadmin()) {
  278.                             $userLevel 'admin';
  279.                         }
  280.                         $request->getSession()->set('userLevel'$userLevel);
  281.                     }
  282.                 }
  283.                 break;
  284.             }
  285.         }
  286.         if (!$inStructure) {
  287.             throw new AccessDeniedHttpException();
  288.         }
  289.         return $this->redirectToRoute('admin_homepage');
  290.     }
  291.     public function genReportConsolideAction(Request $request): Response
  292.     {
  293.         $startReport = \DateTime::createFromFormat('d/m/Y''01/01/' date('Y'));
  294.         $endReport = \DateTime::createFromFormat('d/m/Y''01/' $request->get('monthStart') . '/' date('Y'));
  295.         $endReport date_add($endReportdate_interval_create_from_date_string('1 month'));
  296.         $endReport date_sub($endReportdate_interval_create_from_date_string('1 day'));
  297.         $moinzunReport = \DateTime::createFromFormat('d/m/Y'$endReport->format('d/m/Y'));
  298.         $moinzunReport date_sub($moinzunReportdate_interval_create_from_date_string('1 year'));
  299.         $rootUri 'http://' $_SERVER["HTTP_HOST"] . '/';
  300.         $tmpPath $this->getParameter('kernel.project_dir') . '/public/tmp/';
  301.         $report = new MydReportCouveuse($startReport$endReport$rootUri$tmpPath);
  302.         $report->initPDF();
  303.         $styles '
  304.             <style>
  305.                 span.h1 { font-size:20pt; margin:2cm;  }
  306.                 span.h2 { font-size:10pt; color:#808080; margin:0px;  }
  307.                 table.title { border-color:#404040; }
  308.                 table.title td { border-color:#404040; background-color:#404040; color:#ffffff; font-weight:bold; padding:1cm; height:0.5cm; line-height:0.5cm; font-size:12px; }
  309.                 table.effectifs th{ font-weight:bold; font-size:12px; }
  310.                 table.effectifs td{ font-size:12px; }
  311.                 span.small { font-size:10px }
  312.                 .prospects{ color:#003770 }
  313.                 .candidats{ color:#008bd2 }
  314.                 .suivis{ color:#f088b6 }
  315.                 .sortis{ color:#891e82 }
  316.                 .gen{ color:#003770 }
  317.                 .spe{ color:#891e82 }
  318.                 .genspe{ color:#008bd2 }
  319.                 .separator{ border-bottom:1px dashed #666666; height:0; line-height:0; }
  320.             </style>
  321.         ';
  322.         $report->setStyles($styles);
  323.         $report->setEnteteUCE();
  324.         $report->addBr(8);
  325.         $report->addTitle('Le réseau des Couveuses d’Entreprises');
  326.         $queryCouveuses "SELECT count(*) FROM couveuse WHERE datecreation <= '" $endReport->format('d/m/Y') . "' AND (datelabel is not null AND datelabel <= '" $endReport->format('d/m/Y') . "')";
  327.         $dbCouveuses $this->db->fetchAssociative($queryCouveuses);
  328.         $queryTotal "SELECT count(*) FROM couveuse WHERE datecreation <= '" $endReport->format('d/m/Y') . "'";
  329.         $dbTotal $this->db->fetchAssociative($queryTotal);
  330.         $queryCouvLab "SELECT count(*) FROM couveuse WHERE datecreation <= '" $endReport->format('d/m/Y') . "' AND (datelabel >= '" $startReport->format('d/m/Y') . "' AND datelabel <= '" $endReport->format('d/m/Y') . "')";
  331.         $dbCouvLab $this->db->fetchAssociative($queryCouvLab);
  332.         $queryCouvBor "SELECT count(*) FROM couveuse WHERE datecreation <= '" $endReport->format('d/m/Y') . "' AND boreal = true";
  333.         $dbCouvBor $this->db->fetchAssociative($queryCouvBor);
  334.         $queryAntenne "
  335.             SELECT count(a.*)
  336.             FROM antenne a, structure s
  337.             WHERE a.idstructure = s.idstructure
  338.             AND s.idparent IN (
  339.                 SELECT s.idstructure
  340.                 FROM structure s, couveuse c
  341.                 WHERE c.idstructure = s.idstructure
  342.                 AND c.datecreation <= '" $endReport->format('d/m/Y') . "'
  343.                 AND (c.datelabel is not null AND c.datelabel <= '" $endReport->format('d/m/Y') . "')
  344.             )
  345.         ";
  346.         $dbAntenne $this->db->fetchAssociative($queryAntenne);
  347.         $queryDept "
  348.             SELECT COUNT(DISTINCT(substring( s.codepostal, 1, 2 )))
  349.             FROM couveuse c, structure s
  350.             WHERE c.idstructure = s.idstructure
  351.             AND datecreation <= '" $endReport->format('d/m/Y') . "'
  352.             AND (datelabel is not null AND datelabel <= '" $endReport->format('d/m/Y') . "')
  353.         ";
  354.         $dbDept $this->db->fetchAssociative($queryDept);
  355.         $effectifsUCE = [
  356.             "couveuses"     => $dbCouveuses['count'],
  357.             "total"         => $dbTotal['count'],
  358.             "boreal"        => $dbCouvBor['count'],
  359.             "label"         => $dbCouvLab['count'],
  360.             "antennes"      => $dbAntenne['count'],
  361.             "departements"  => $dbDept['count']
  362.         ];
  363.         $report->drawEffectifsUCE($effectifsUCE);
  364.         $report->addBr(4);
  365.         $queryCouveusesAct "
  366.             SELECT DISTINCT(typeactivite), count(idcouveuse)
  367.             FROM couveuse
  368.             WHERE datecreation <= '" $endReport->format('d/m/Y') . "'
  369.             AND (datelabel is not null AND datelabel <= '" $endReport->format('d/m/Y') . "')
  370.             GROUP BY typeactivite
  371.         ";
  372.         $dbCouveusesAct $this->db->fetchAllAssociative($queryCouveusesAct);
  373.         $qlistActivites "SELECT * FROM activitecouveuse ORDER BY libelle";
  374.         $listActivites $this->db->fetchAllAssociative($qlistActivites);
  375.         $arrAct = [];
  376.         foreach ($listActivites as $act) {
  377.             $foo explode(' - '$act['libelle']);
  378.             if (!isset($arrAct[$foo[0]])) {
  379.                 $arrAct[$foo[0]] = ["ids" => [], "count" => 0];
  380.             }
  381.             $arrAct[$foo[0]]["ids"][] = ['id' => $act['idactivite'], 'lib' => (isset($foo[1])) ? $foo[1] : '''count' => 0];
  382.         }
  383.         foreach ($arrAct as $lib => $famille) {
  384.             foreach ($famille["ids"] as $id) {
  385.                 foreach ($dbCouveusesAct as $k => $couvAct) {
  386.                     if ($couvAct['typeactivite'] == $id['id']) {
  387.                         $arrAct[$lib]['count'] += $couvAct['count'];
  388.                         @$arrAct[$lib]['ids'][$k]['count'] += $couvAct['count']; // Notice: Undefined offset
  389.                     }
  390.                 }
  391.             }
  392.         }
  393.         $filename 'rapportcons_act.png';
  394.         $libs = [];
  395.         $set = [];
  396.         foreach ($arrAct as $lib => $famille) {
  397.             $libs[] = $lib;
  398.             $set[] = $famille['count'];
  399.         }
  400.         $MyData = new Data();
  401.         $MyData->loadPalette($this->getParameter('kernel.project_dir') . "/uce.color"TRUE);
  402.         $MyData->addPoints($set"ScoreA");
  403.         $MyData->addPoints($libs"Labels");
  404.         $MyData->setAbscissa("Labels");
  405.         $myPicture = new Image(400340$MyData);
  406.         $myPicture->setFontProperties(["FontName" => "Forgotte.ttf""FontSize" => 12"R" => 80"G" => 80"B" => 80]);
  407.         $PieChart = new Pie($myPicture$MyData);
  408.         $PieChart->draw2DPie(200150, ["WriteValues" => PIE_VALUE_PERCENTAGE"DataGapAngle" => 10"DataGapRadius" => 6"Border" => FALSE"ValueR" => 0"ValueG" => 0"ValueB" => 0"Radius" => 120]);
  409.         $myPicture->setFontProperties(["FontName" => "Forgotte.ttf""FontSize" => 11"R" => 80"G" => 80"B" => 80]);
  410.         $PieChart->drawPieLegend(10320, ["Style" => LEGEND_NOBORDER"Mode" => LEGEND_HORIZONTAL]);
  411.         $myPicture->render($tmpPath $filename);
  412.         $report->addBr(4);
  413.         $report->drawActivites($filename$arrAct);
  414.         $report->pageBreak();
  415.         $report->setEnteteCouveuse('consolidation');
  416.         $report->addBr(4);
  417.         $report->addTitle('Actuellement dans les Couveuses');
  418.         // CALCULS EFFECTIFS
  419.         $queryProspect "SELECT count(identrepreneur), SUM(chiffreaff), 0 as tmpetat FROM entrepreneur
  420.                                         WHERE (dateprospect >= '" $startReport->format('d/m/Y') . "' AND dateprospect <= '" $endReport->format('d/m/Y') . "')
  421.                                         AND (datecandidat >= '" $endReport->format('d/m/Y') . "' OR datecandidat IS NULL)
  422.                                         AND (datecouve >= '" $endReport->format('d/m/Y') . "' OR datecouve IS NULL)
  423.                                         AND (datesortie >= '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  424.                                     AND etat <> 4";
  425.         $dbProspect $this->db->fetchAllAssociative($queryProspect);
  426.         $queryProspectOri "SELECT count(identrepreneur), SUM(chiffreaff), 0 as tmpetat FROM entrepreneur
  427.                                         WHERE (dateprospect <= '" $endReport->format('d/m/Y') . "')
  428.                                         AND (datecandidat >= '" $endReport->format('d/m/Y') . "' OR datecandidat IS NULL)
  429.                                         AND (datecouve >= '" $endReport->format('d/m/Y') . "' OR datecouve IS NULL)
  430.                                         AND (datesortie >= '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  431.                                     AND etat <> 4";
  432.         $dbProspectOri $this->db->fetchAllAssociative($queryProspectOri);
  433.         $queryCandi "SELECT count(identrepreneur), SUM(chiffreaff), 1 as tmpetat FROM entrepreneur
  434.                                         WHERE (datecandidat >= '" $startReport->format('d/m/Y') . "' AND datecandidat <= '" $endReport->format('d/m/Y') . "')
  435.                                         AND (datecouve >= '" $endReport->format('d/m/Y') . "' OR datecouve IS NULL)
  436.                                         AND (datesortie >= '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  437.                                     AND etat <> 4";
  438.         $dbCandi $this->db->fetchAllAssociative($queryCandi);
  439.         $queryCandiOri "SELECT count(identrepreneur), SUM(chiffreaff), 1 as tmpetat FROM entrepreneur
  440.                                         WHERE (datecandidat <= '" $endReport->format('d/m/Y') . "')
  441.                                         AND (datecouve >= '" $endReport->format('d/m/Y') . "' OR datecouve IS NULL)
  442.                                         AND (datesortie >= '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  443.                                     AND etat <> 4";
  444.         $dbCandiOri $this->db->fetchAllAssociative($queryCandiOri);
  445.         $queryCouve "SELECT count(identrepreneur), SUM(chiffreaff), 2 as tmpetat FROM entrepreneur
  446.                                         WHERE (datecouve >= '" $startReport->format('d/m/Y') . "' AND datecouve <= '" $endReport->format('d/m/Y') . "')
  447.                                         AND (datesortie >= '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  448.                                     AND etat <> 4";
  449.         $dbCouve $this->db->fetchAllAssociative($queryCouve);
  450.         $queryCouveOri "SELECT count(identrepreneur), SUM(chiffreaff), 2 as tmpetat FROM entrepreneur
  451.                                         WHERE(datecouve <= '" $endReport->format('d/m/Y') . "')
  452.                                         AND (datesortie >= '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  453.                                     AND etat <> 4";
  454.         $dbCouveOri $this->db->fetchAllAssociative($queryCouveOri);
  455.         $querySortie "SELECT count(identrepreneur), SUM(chiffreaff), 3 as tmpetat FROM entrepreneur
  456.                                         WHERE (datesortie >= '" $startReport->format('d/m/Y') . "' AND datesortie <= '" $endReport->format('d/m/Y') . "')
  457.                                     AND etat <> 4";
  458.         $dbSortie $this->db->fetchAllAssociative($querySortie);
  459.         $querySortieOri "SELECT count(identrepreneur), SUM(chiffreaff), 3 as tmpetat FROM entrepreneur
  460.                                         WHERE (datesortie <= '" $endReport->format('d/m/Y') . "')
  461.                                     AND etat <> 4";
  462.         $dbSortieOri $this->db->fetchAllAssociative($querySortieOri);
  463.         $dbeffectifs = [$dbProspect[0], $dbCandi[0], $dbCouve[0], $dbSortie[0]];
  464.         $dbeffectifsOri = [$dbProspectOri[0], $dbCandiOri[0], $dbCouveOri[0], $dbSortieOri[0]];
  465.         $effectifs = [];
  466.         $totalEffect 0;
  467.         $totalCA 0;
  468.         foreach ($dbeffectifs as $eff) {
  469.             $totalEffect += $eff['count'];
  470.             $effectifs[$eff['tmpetat']] = $eff;
  471.         }
  472.         foreach ($effectifs as $k => $eff) {
  473.             $effectifs[$k]['per'] = ($totalEffect != 0) ? $eff['count'] * 100 $totalEffect 0;
  474.             $effectifs[$k]['sum'] = ($effectifs[$k]['sum'] != '') ? $effectifs[$k]['sum'] : 0;
  475.         }
  476.         for ($i 0$i <= 3$i++) {
  477.             if (!isset($effectifs[$i])) {
  478.                 $effectifs[$i] = ["count" => 0"per" => 0"sum" => 0];
  479.             }
  480.         }
  481.         foreach ($dbeffectifs as $eff) {
  482.             $totalCA += $eff['sum'];
  483.         }
  484.         $effectifsOri = [];
  485.         $totalEffectOri 0;
  486.         foreach ($dbeffectifsOri as $eff) {
  487.             $totalEffectOri += $eff['count'];
  488.             $effectifsOri[$eff['tmpetat']] = $eff;
  489.         }
  490.         foreach ($effectifs as $k => $eff) {
  491.             $effectifsOri[$k]['per'] = ($totalEffectOri != 0) ? $eff['count'] * 100 $totalEffectOri 0;
  492.             $effectifsOri[$k]['sum'] = ($effectifsOri[$k]['sum'] != '') ? $effectifsOri[$k]['sum'] : 0;
  493.         }
  494.         for ($i 0$i <= 3$i++) {
  495.             if (!isset($effectifsOri[$i])) {
  496.                 $effectifsOri[$i] = ["count" => 0"per" => 0"sum" => 0];
  497.             }
  498.         }
  499.         $report->drawEffectifs($effectifs$effectifsOri);
  500.         $report->addBr();
  501.         $report->addLine('<div style="font-size:10px; color:#606060"><strong>Chiffre d’affaires généré</strong> : ' number_format($totalCA2","" ") . ' €</div>');
  502.         $report->addBr(4);
  503.         $report->addSeparator();
  504.         $report->addBr();
  505.         // Camemberts sortie
  506.         $querySorties "SELECT DISTINCT(typesortie), count(identrepreneur) FROM entrepreneur
  507.                                         WHERE (datesortie <= '" $endReport->format('d/m/Y') . "')
  508.                                     AND etat <> 4 GROUP BY typesortie";
  509.         $dbSorties $this->db->fetchAllAssociative($querySorties);
  510.         $querySortiesM1 "SELECT DISTINCT(typesortie), count(identrepreneur) FROM entrepreneur
  511.                                         WHERE (datesortie <= '" $moinzunReport->format('d/m/Y') . "')
  512.                                     AND etat <> 4 GROUP BY typesortie";
  513.         $dbSortiesM1 $this->db->fetchAllAssociative($querySortiesM1);
  514.         $qlistSorties "SELECT * FROM typesortie ORDER by ordre, libelle";
  515.         $listSorties $this->db->fetchAllAssociative($qlistSorties);
  516.         $repSorties = [];
  517.         $repSortiesM1 = [];
  518.         foreach ($listSorties as $sortie) {
  519.             $repSorties[$sortie['libelle']] = 0;
  520.             $repSortiesM1[$sortie['libelle']] = 0;
  521.             foreach ($dbSorties as $dbs) {
  522.                 if ($dbs['typesortie'] == $sortie['idtypesortie']) {
  523.                     $repSorties[$sortie['libelle']] += $dbs['count'];
  524.                 }
  525.             }
  526.             foreach ($dbSortiesM1 as $dbsM1) {
  527.                 if ($dbsM1['typesortie'] == $sortie['idtypesortie']) {
  528.                     $repSortiesM1[$sortie['libelle']] += $dbsM1['count'];
  529.                 }
  530.             }
  531.         }
  532.         $filename 'rapportcons_sort.png';
  533.         $this->createDoublePie($filename$repSortiesM1$repSorties);
  534.         $report->addLine('<div style="font-size:12px; color:#606060; text-align:center"><strong>Types de sorties</strong></div>');
  535.         $report->addBr();
  536.         $report->addLine('
  537.             <table class="effectifs" cellspacing="0" cellpadding="1" border="0" width="100%" align="center">
  538.                 <tr>
  539.                     <th width="50%" class="prospects">' $moinzunReport->format('m/Y') . '</th>
  540.                     <th width="50%" class="sortis">' $endReport->format('m/Y') . '</th>
  541.                 </tr>
  542.             </table>
  543.         ');
  544.         $report->addImage($filename);
  545.         $report->pageBreak();
  546.         $report->addTitle('Diversité des Entrepreneurs');
  547.         $report->addBr();
  548.         $report->addLine('<div style="font-size:12px; color:#606060; text-align:center"><strong>Femmes / Hommes</strong></div>');
  549.         $report->addBr();
  550.         $report->addLine('
  551.             <table class="effectifs" cellspacing="0" cellpadding="1" border="0" width="100%" align="center">
  552.                 <tr>
  553.                     <th width="50%" class="prospects">' $moinzunReport->format('m/Y') . '</th>
  554.                     <th width="50%" class="sortis">' $endReport->format('m/Y') . '</th>
  555.                 </tr>
  556.             </table>
  557.         ');
  558.         // Camemberts civilité
  559.         $queryCiv "SELECT DISTINCT(u.civilite), count(e.identrepreneur) FROM entrepreneur e, utilisateur u
  560.                                         WHERE e.idutilisateur = u.id AND (datecouve <= '" $endReport->format('d/m/Y') . "')
  561.                                     AND etat <> 4 GROUP BY u.civilite";
  562.         $dbCiv $this->db->fetchAllAssociative($queryCiv);
  563.         $queryCivM1 "SELECT DISTINCT(u.civilite), count(e.identrepreneur) FROM entrepreneur e, utilisateur u
  564.                                         WHERE e.idutilisateur = u.id AND (datecouve <= '" $moinzunReport->format('d/m/Y') . "')
  565.                                     AND etat <> 4 GROUP BY u.civilite";
  566.         $dbCivM1 $this->db->fetchAllAssociative($queryCivM1);
  567.         $repCiv = ['Femmes' => 0'Hommes' => 0];
  568.         $repCivM1 = ['Femmes' => 0'Hommes' => 0];
  569.         foreach ($dbCiv as $dbs) {
  570.             if ($dbs['civilite'] == 'm') {
  571.                 $repCiv['Hommes'] += $dbs['count'];
  572.             } else {
  573.                 $repCiv['Femmes'] += $dbs['count'];
  574.             }
  575.         }
  576.         foreach ($dbCivM1 as $dbs) {
  577.             if ($dbs['civilite'] == 'm') {
  578.                 $repCivM1['Hommes'] += $dbs['count'];
  579.             } else {
  580.                 $repCivM1['Femmes'] += $dbs['count'];
  581.             }
  582.         }
  583.         $filename 'rapportcons_civ.png';
  584.         $this->createDoublePie($filename$repCivM1$repCiv);
  585.         $report->addImage($filename);
  586.         $report->addBr();
  587.         $report->addSeparator();
  588.         $report->addBr();
  589.         $report->addLine('<div style="font-size:12px; color:#606060; text-align:center"><strong>Statut Social</strong></div>');
  590.         $report->addBr();
  591.         $report->addLine('
  592.             <table class="effectifs" cellspacing="0" cellpadding="1" border="0" width="100%" align="center">
  593.                 <tr>
  594.                     <th width="50%" class="prospects">' $moinzunReport->format('m/Y') . '</th>
  595.                     <th width="50%" class="sortis">' $endReport->format('m/Y') . '</th>
  596.                 </tr>
  597.             </table>
  598.         ');
  599.         // Camemberts statut
  600.         $queryStatut "SELECT DISTINCT(statutsocial), count(identrepreneur) FROM entrepreneur
  601.                                         WHERE (datecouve <= '" $endReport->format('d/m/Y') . "')
  602.                                     AND etat <> 4 GROUP BY statutsocial";
  603.         $dbStatut $this->db->fetchAllAssociative($queryStatut);
  604.         $queryStatutM1 "SELECT DISTINCT(statutsocial), count(identrepreneur) FROM entrepreneur
  605.                                         WHERE (datecouve <= '" $moinzunReport->format('d/m/Y') . "')
  606.                                     AND etat <> 4 GROUP BY statutsocial";
  607.         $dbStatutM1 $this->db->fetchAllAssociative($queryStatutM1);
  608.         $qlistStatut "SELECT * FROM statutsocial ORDER by ordre, libelle";
  609.         $listStatut $this->db->fetchAllAssociative($qlistStatut);
  610.         $repStatut = [];
  611.         $repStatutM1 = [];
  612.         foreach ($listStatut as $statut) {
  613.             $repStatut[$statut['libelle']] = 0;
  614.             $repStatutM1[$statut['libelle']] = 0;
  615.             foreach ($dbStatut as $dbs) {
  616.                 if ($dbs['statutsocial'] == $statut['idstatut']) {
  617.                     $repStatut[$statut['libelle']] += $dbs['count'];
  618.                 }
  619.             }
  620.             foreach ($dbStatutM1 as $dbsM1) {
  621.                 if ($dbsM1['statutsocial'] == $statut['idstatut']) {
  622.                     $repStatutM1[$statut['libelle']] += $dbsM1['count'];
  623.                 }
  624.             }
  625.         }
  626.         $filename 'rapportcons_statut.png';
  627.         $this->createDoublePie($filename$repStatutM1$repStatut);
  628.         $report->addImage($filename);
  629.         $report->pageBreak();
  630.         $report->addBr();
  631.         $report->addLine('<div style="font-size:12px; color:#606060; text-align:center"><strong>Bénéficiaires du RSA</strong></div>');
  632.         $report->addBr();
  633.         $report->addLine('
  634.             <table class="effectifs" cellspacing="0" cellpadding="1" border="0" width="100%" align="center">
  635.                 <tr>
  636.                     <th width="35%" align="right" class="prospects">' $moinzunReport->format('m/Y') . '</th>
  637.                     <th width="30%" align="left" class="sortis"></th>
  638.                     <th width="35%" align="left" class="sortis">' $endReport->format('m/Y') . '</th>
  639.                 </tr>
  640.             </table>
  641.         ');
  642.         // Camemberts rsa
  643.         $queryRSA "SELECT DISTINCT(rsa), count(identrepreneur) FROM entrepreneur
  644.                                         WHERE (datecouve <= '" $endReport->format('d/m/Y') . "')
  645.                                     AND etat <> 4 GROUP BY rsa";
  646.         $dbRSA $this->db->fetchAllAssociative($queryRSA);
  647.         $queryRSAM1 "SELECT DISTINCT(rsa), count(identrepreneur) FROM entrepreneur
  648.                                         WHERE (datecouve <= '" $moinzunReport->format('d/m/Y') . "')
  649.                                     AND etat <> 4 GROUP BY rsa";
  650.         $dbRSAM1 $this->db->fetchAllAssociative($queryRSAM1);
  651.         $repRSA = ['Bénéficiaire RSA' => 0'Non Bénéficiaire RSA' => 0];
  652.         $repRSAM1 = ['Bénéficiaire RSA' => 0'Non Bénéficiaire RSA' => 0];
  653.         foreach ($dbRSA as $dbs) {
  654.             if ($dbs['rsa'] == 't') {
  655.                 $repRSA['Bénéficiaire RSA'] += $dbs['count'];
  656.             } else {
  657.                 $repRSA['Non Bénéficiaire RSA'] += $dbs['count'];
  658.             }
  659.         }
  660.         foreach ($dbRSAM1 as $dbs) {
  661.             if ($dbs['rsa'] == 't') {
  662.                 $repRSAM1['Bénéficiaire RSA'] += $dbs['count'];
  663.             } else {
  664.                 $repRSAM1['Non Bénéficiaire RSA'] += $dbs['count'];
  665.             }
  666.         }
  667.         $filename 'rapportcons_rsa.png';
  668.         $this->createDoublePie($filename$repRSAM1$repRSA);
  669.         $report->addImage($filename''true'13cm');
  670.         $report->addBr();
  671.         $report->addSeparator();
  672.         $report->addBr();
  673.         $report->addLine('<div style="font-size:12px; color:#606060; text-align:center"><strong>Politique de la ville</strong></div>');
  674.         $report->addBr();
  675.         $report->addLine('
  676.             <table class="effectifs" cellspacing="0" cellpadding="1" border="0" width="100%" align="center">
  677.                 <tr>
  678.                     <th width="35%" align="right" class="prospects">' $moinzunReport->format('m/Y') . '</th>
  679.                     <th width="30%" align="left" class="sortis"></th>
  680.                     <th width="35%" align="left" class="sortis">' $endReport->format('m/Y') . '</th>
  681.                 </tr>
  682.             </table>
  683.         ');
  684.         // Camemberts politiqueville
  685.         $queryPol "SELECT DISTINCT(politiqueville), count(identrepreneur) FROM entrepreneur
  686.                                         WHERE (datecouve <= '" $endReport->format('d/m/Y') . "')
  687.                                     AND etat <> 4 GROUP BY politiqueville";
  688.         $dbPol $this->db->fetchAllAssociative($queryPol);
  689.         $queryPolM1 "SELECT DISTINCT(politiqueville), count(identrepreneur) FROM entrepreneur
  690.                                         WHERE (datecouve <= '" $moinzunReport->format('d/m/Y') . "')
  691.                                     AND etat <> 4 GROUP BY politiqueville";
  692.         $dbPolM1 $this->db->fetchAllAssociative($queryPolM1);
  693.         $repPol = ['Politique de la ville' => 0'Non Politique de la ville' => 0];
  694.         $repPolM1 = ['Politique de la ville' => 0'Non Politique de la ville' => 0];
  695.         foreach ($dbPol as $dbs) {
  696.             if ($dbs['politiqueville'] == 't') {
  697.                 $repPol['Politique de la ville'] += $dbs['count'];
  698.             } else {
  699.                 $repPol['Non Politique de la ville'] += $dbs['count'];
  700.             }
  701.         }
  702.         foreach ($dbPolM1 as $dbs) {
  703.             if ($dbs['politiqueville'] == 't') {
  704.                 $repPolM1['Politique de la ville'] += $dbs['count'];
  705.             } else {
  706.                 $repPolM1['Non Politique de la ville'] += $dbs['count'];
  707.             }
  708.         }
  709.         $filename 'rapportcons_pol.png';
  710.         $this->createDoublePie($filename$repPolM1$repPol);
  711.         $report->addImage($filename''true'13cm');
  712.         $report->addBr();
  713.         $report->addSeparator();
  714.         $report->addBr();
  715.         $report->addLine('<div style="font-size:12px; color:#606060; text-align:center"><strong>Travailleurs handicapés</strong></div>');
  716.         $report->addBr();
  717.         $report->addLine('
  718.             <table class="effectifs" cellspacing="0" cellpadding="1" border="0" width="100%" align="center">
  719.                 <tr>
  720.                     <th width="35%" align="right" class="prospects">' $moinzunReport->format('m/Y') . '</th>
  721.                     <th width="30%" align="left" class="sortis"></th>
  722.                     <th width="35%" align="left" class="sortis">' $endReport->format('m/Y') . '</th>
  723.                 </tr>
  724.             </table>
  725.         ');
  726.         // Camemberts handicap
  727.         $queryHand "SELECT DISTINCT(handicap), count(identrepreneur) FROM entrepreneur
  728.                                         WHERE (datecouve <= '" $endReport->format('d/m/Y') . "')
  729.                                     AND etat <> 4 GROUP BY handicap";
  730.         $dbHand $this->db->fetchAllAssociative($queryHand);
  731.         $queryHandM1 "SELECT DISTINCT(handicap), count(identrepreneur) FROM entrepreneur
  732.                                         WHERE (datecouve <= '" $moinzunReport->format('d/m/Y') . "')
  733.                                     AND etat <> 4 GROUP BY handicap";
  734.         $dbHandM1 $this->db->fetchAllAssociative($queryHandM1);
  735.         $repHand = ['Travailleurs handicapés' => 0'Non Travailleurs handicapés' => 0];
  736.         $repHandM1 = ['Travailleurs handicapés' => 0'Non Travailleurs handicapés' => 0];
  737.         foreach ($dbHand as $dbs) {
  738.             if ($dbs['handicap'] == 't') {
  739.                 $repHand['Travailleurs handicapés'] += $dbs['count'];
  740.             } else {
  741.                 $repHand['Non Travailleurs handicapés'] += $dbs['count'];
  742.             }
  743.         }
  744.         foreach ($dbHandM1 as $dbs) {
  745.             if ($dbs['handicap'] == 't') {
  746.                 $repHandM1['Travailleurs handicapés'] += $dbs['count'];
  747.             } else {
  748.                 $repHandM1['Non Travailleurs handicapés'] += $dbs['count'];
  749.             }
  750.         }
  751.         $filename 'rapportcons_hand.png';
  752.         $this->createDoublePie($filename$repHandM1$repHand);
  753.         $report->addImage($filename''true'13cm');
  754.         $report->pageBreak();
  755.         $report->addLine('<div style="font-size:12px; color:#606060; text-align:center"><strong>Age des entrepreneurs</strong></div>');
  756.         $report->addBr();
  757.         $report->addLine('
  758.             <table class="effectifs" cellspacing="0" cellpadding="1" border="0" width="100%" align="center">
  759.                 <tr>
  760.                     <th width="50%" class="prospects">' $moinzunReport->format('m/Y') . '</th>
  761.                     <th width="50%" class="sortis">' $endReport->format('m/Y') . '</th>
  762.                 </tr>
  763.             </table>
  764.         ');
  765.         // Camemberts ages
  766.         $queryAge "SELECT     CASE
  767.                                 WHEN date_part('year',age(datenaissance)) < 26 THEN 1
  768.                                 WHEN date_part('year',age(datenaissance)) >= 26 AND date_part('year',age(datenaissance)) <= 31 THEN 2
  769.                                 WHEN date_part('year',age(datenaissance)) >= 32 AND date_part('year',age(datenaissance)) <= 45 THEN 3
  770.                                 ELSE 4
  771.                             END AS tranche, count(identrepreneur) FROM entrepreneur WHERE (datecouve <= '" $endReport->format('d/m/Y') . "') AND etat <> 4 GROUP BY tranche";
  772.         $dbAge $this->db->fetchAllAssociative($queryAge);
  773.         $queryAgeM1 "SELECT     CASE
  774.                                 WHEN date_part('year',age(datenaissance)) < 26 THEN 1
  775.                                 WHEN date_part('year',age(datenaissance)) >= 26 AND date_part('year',age(datenaissance)) <= 31 THEN 2
  776.                                 WHEN date_part('year',age(datenaissance)) >= 32 AND date_part('year',age(datenaissance)) <= 45 THEN 3
  777.                                 ELSE 4
  778.                             END AS tranche, count(identrepreneur) FROM entrepreneur WHERE (datecouve <= '" $moinzunReport->format('d/m/Y') . "') AND etat <> 4 GROUP BY tranche";
  779.         $dbAgeM1 $this->db->fetchAllAssociative($queryAgeM1);
  780.         $repAge = ["moins de 26 ans" => 0"26 à 31ans" => 0"31 à 45 ans" => 0"plus de 45 ans" => 0];
  781.         $repAgeM1 = ["moins de 26 ans" => 0"26 à 31ans" => 0"31 à 45 ans" => 0"plus de 45 ans" => 0];
  782.         foreach ($dbAge as $dbs) {
  783.             if ($dbs['tranche'] == 1) {
  784.                 $repAge["moins de 26 ans"] += $dbs['count'];
  785.             }
  786.             if ($dbs['tranche'] == 2) {
  787.                 $repAge["26 à 31ans"] += $dbs['count'];
  788.             }
  789.             if ($dbs['tranche'] == 3) {
  790.                 $repAge["31 à 45 ans"] += $dbs['count'];
  791.             }
  792.             if ($dbs['tranche'] == 4) {
  793.                 $repAge["plus de 45 ans"] += $dbs['count'];
  794.             }
  795.         }
  796.         foreach ($dbAgeM1 as $dbsM1) {
  797.             if ($dbsM1['tranche'] == 1) {
  798.                 $repAgeM1["moins de 26 ans"] += $dbsM1['count'];
  799.             }
  800.             if ($dbsM1['tranche'] == 2) {
  801.                 $repAgeM1["26 à 31ans"] += $dbsM1['count'];
  802.             }
  803.             if ($dbsM1['tranche'] == 3) {
  804.                 $repAgeM1["31 à 45 ans"] += $dbsM1['count'];
  805.             }
  806.             if ($dbsM1['tranche'] == 4) {
  807.                 $repAgeM1["plus de 45 ans"] += $dbsM1['count'];
  808.             }
  809.         }
  810.         $filename 'rapportcons_age.png';
  811.         $this->createDoublePie($filename$repAgeM1$repAge);
  812.         $report->addImage($filename);
  813.         $report->addBr();
  814.         $report->addSeparator();
  815.         $report->addBr();
  816.         $report->addLine('<div style="font-size:12px; color:#606060; text-align:center"><strong>Niveaux de formation</strong></div>');
  817.         $report->addBr();
  818.         // Tableau formation
  819.         $queryFormation "SELECT DISTINCT(formation), count(identrepreneur) FROM entrepreneur
  820.                                         WHERE (datecouve <= '" $endReport->format('d/m/Y') . "')
  821.                                     AND etat <> 4 GROUP BY formation";
  822.         $dbFormation $this->db->fetchAllAssociative($queryFormation);
  823.         $queryFormationM1 "SELECT DISTINCT(formation), count(identrepreneur) FROM entrepreneur
  824.                                         WHERE (datecouve <= '" $moinzunReport->format('d/m/Y') . "')
  825.                                     AND etat <> 4 GROUP BY formation";
  826.         $dbFormationM1 $this->db->fetchAllAssociative($queryFormationM1);
  827.         $qlistFormation "SELECT * FROM formation ORDER by ordre, libelle";
  828.         $listFormation $this->db->fetchAllAssociative($qlistFormation);
  829.         $repFormation = [];
  830.         $totF 0;
  831.         $repFormationM1 = [];
  832.         $totFM1 0;
  833.         foreach ($listFormation as $statut) {
  834.             $repFormation[$statut['libelle']] = 0;
  835.             $repFormationM1[$statut['libelle']] = 0;
  836.             foreach ($dbFormation as $dbs) {
  837.                 if ($dbs['formation'] == $statut['idformation']) {
  838.                     $repFormation[$statut['libelle']] += $dbs['count'];
  839.                     $totF += $dbs['count'];
  840.                 }
  841.             }
  842.             foreach ($dbFormationM1 as $dbsM1) {
  843.                 if ($dbsM1['formation'] == $statut['idformation']) {
  844.                     $repFormationM1[$statut['libelle']] += $dbsM1['count'];
  845.                     $totFM1 += $dbsM1['count'];
  846.                 }
  847.             }
  848.         }
  849.         foreach ($repFormation as $lib => $count) {
  850.             $perc = ($count == 0) ?    $count 100 $totF;
  851.             $repFormation[$lib] = round($perc2);
  852.         }
  853.         foreach ($repFormationM1 as $lib => $count) {
  854.             $perc = ($count == 0) ?    $count 100 $totFM1;
  855.             $repFormationM1[$lib] = round($perc2);
  856.         }
  857.         $report->drawDoubleTab($moinzunReport->format('m/Y'), $endReport->format('m/Y'), $repFormationM1$repFormation);
  858.         $report->addBr();
  859.         $report->addBr();
  860.         $report->addSeparator();
  861.         $report->addBr();
  862.         $report->addLine('<div style="font-size:12px; color:#606060; text-align:center"><strong>5 codes NAF les plus utilisés</strong></div>');
  863.         $report->addBr();
  864.         // Tableau NAF
  865.         $queryNAF "SELECT DISTINCT(codeape), count(identrepreneur), libelle_naf FROM entrepreneur
  866.                                         LEFT JOIN naf ON (naf.code_naf = entrepreneur.codeape)
  867.                                         WHERE (datecouve <= '" $endReport->format('d/m/Y') . "')
  868.                                     AND etat <> 4 GROUP BY codeape, libelle_naf ORDER by count DESC LIMIT 5";
  869.         $dbNAF $this->db->fetchAllAssociative($queryNAF);
  870.         $queryTot "SELECT count(identrepreneur) FROM entrepreneur WHERE (datecouve <= '" $endReport->format('d/m/Y') . "') AND etat <> 4";
  871.         $dbTot $this->db->fetchAssociative($queryTot);
  872.         $queryNAFM1 "SELECT DISTINCT(codeape), count(identrepreneur), libelle_naf FROM entrepreneur
  873.                                         LEFT JOIN naf ON (naf.code_naf = entrepreneur.codeape)
  874.                                         WHERE (datecouve <= '" $moinzunReport->format('d/m/Y') . "')
  875.                                     AND etat <> 4 GROUP BY codeape, libelle_naf ORDER by count DESC LIMIT 5";
  876.         $dbNAFM1 $this->db->fetchAllAssociative($queryNAFM1);
  877.         $queryTotM1 "SELECT count(identrepreneur) FROM entrepreneur WHERE (datecouve <= '" $moinzunReport->format('d/m/Y') . "') AND etat <> 4";
  878.         $dbTotM1 $this->db->fetchAssociative($queryTotM1);
  879.         $repNAF = [];
  880.         $repNAFM1 = [];
  881.         foreach ($dbNAF as $dbs) {
  882.             if ($dbs['codeape'] != 0) {
  883.                 $newLib $dbs['codeape'] . ' - ' $dbs['libelle_naf'];
  884.             } else {
  885.                 $newLib 'Indéfini';
  886.             }
  887.             if (!isset($repNAF[$newLib])) {
  888.                 $repNAF[$newLib] = $dbs['count'];
  889.             }
  890.         }
  891.         foreach ($dbNAFM1 as $dbs) {
  892.             if ($dbs['codeape'] != 0) {
  893.                 $newLib $dbs['codeape'] . ' - ' $dbs['libelle_naf'];
  894.             } else {
  895.                 $newLib 'Indéfini';
  896.             }
  897.             if (!isset($repNAFM1[$newLib])) {
  898.                 $repNAFM1[$newLib] = $dbs['count'];
  899.             }
  900.         }
  901.         foreach ($repNAF as $lib => $count) {
  902.             $perc = ($count == 0) ?    $count 100 $dbTot['count'];
  903.             $repNAF[$lib] = round($perc2);
  904.         }
  905.         foreach ($repNAFM1 as $lib => $count) {
  906.             $perc = ($count == 0) ?    $count 100 $dbTotM1['count'];
  907.             $repNAFM1[$lib] = round($perc2);
  908.         }
  909.         $report->drawDoubleTab($moinzunReport->format('m/Y'), $endReport->format('m/Y'), $repNAFM1$repNAFtrue);
  910.         $report->pageBreak();
  911.         $report->addTitle('CAPE');
  912.         $report->addBr(4);
  913.         $report->addLine('<div style="font-size:12px; color:#606060; text-align:center"><strong>Nombre de CAPE signés pendant la période</strong></div>');
  914.         $report->addBr(2);
  915.         // Tableau CAPE
  916.         $queryCAPE "SELECT count(*) FROM entrepreneur WHERE (debutcape <= '" $endReport->format('d/m/Y') . "') AND etat <> 4";
  917.         $dbCAPE $this->db->fetchAssociative($queryCAPE);
  918.         $queryCAPEM1 "SELECT count(*) FROM entrepreneur WHERE (debutcape <= '" $moinzunReport->format('d/m/Y') . "') AND etat <> 4";
  919.         $dbCAPEM1 $this->db->fetchAssociative($queryCAPEM1);
  920.         $queryAvenant1 "SELECT count(*) FROM entrepreneur WHERE (debutavcape1 <= '" $endReport->format('d/m/Y') . "') AND etat <> 4";
  921.         $dbAvenant1 $this->db->fetchAssociative($queryAvenant1);
  922.         $queryAvenant1M1 "SELECT count(*) FROM entrepreneur WHERE (debutavcape1 <= '" $moinzunReport->format('d/m/Y') . "') AND etat <> 4";
  923.         $dbAvenant1M1 $this->db->fetchAssociative($queryAvenant1M1);
  924.         $queryAvenant2 "SELECT count(*) FROM entrepreneur WHERE (debutavcape2 <= '" $endReport->format('d/m/Y') . "') AND etat <> 4";
  925.         $dbAvenant2 $this->db->fetchAssociative($queryAvenant2);
  926.         $queryAvenant2M1 "SELECT count(*) FROM entrepreneur WHERE (debutavcape2 <= '" $moinzunReport->format('d/m/Y') . "') AND etat <> 4";
  927.         $dbAvenant2M1 $this->db->fetchAssociative($queryAvenant2M1);
  928.         if ($dbCAPE['count'] > $dbCAPEM1['count']) {
  929.             if ($dbCAPEM1['count'] > 0) {
  930.                 $perc = ($dbCAPE['count'] * 100 $dbCAPEM1['count']) - 100;
  931.                 $libPerc '(+' round($perc2) . '%)';
  932.             } else {
  933.                 $libPerc '';
  934.             }
  935.         } elseif ($dbCAPE['count'] < $dbCAPEM1['count']) {
  936.             if ($dbCAPEM1['count'] > 0) {
  937.                 $perc = ($dbCAPE['count'] * 100 $dbCAPEM1['count']) - 100;
  938.                 $libPerc '(-' round($perc2) . '%)';
  939.             } else {
  940.                 $libPerc '';
  941.             }
  942.         } else {
  943.             $libPerc '(=)';
  944.         }
  945.         $dbCAPE['evol'] = $libPerc;
  946.         if ($dbAvenant1['count'] > $dbAvenant1M1['count']) {
  947.             if ($dbAvenant1M1['count'] > 0) {
  948.                 $perc = ($dbAvenant1['count'] * 100 $dbAvenant1M1['count']) - 100;
  949.                 $libPerc '(+' round($perc2) . '%)';
  950.             } else {
  951.                 $libPerc '';
  952.             }
  953.         } elseif ($dbAvenant1['count'] < $dbAvenant1M1['count']) {
  954.             if ($dbAvenant1M1['count'] > 0) {
  955.                 $perc = ($dbAvenant1['count'] * 100 $dbAvenant1M1['count']) - 100;
  956.                 $libPerc '(-' round($perc2) . '%)';
  957.             } else {
  958.                 $libPerc '';
  959.             }
  960.         } else {
  961.             $libPerc '(=)';
  962.         }
  963.         $dbAvenant1['evol'] = $libPerc;
  964.         if ($dbAvenant2['count'] > $dbAvenant2M1['count']) {
  965.             if ($dbAvenant2M1['count'] > 0) {
  966.                 $perc = ($dbAvenant2['count'] * 100 $dbAvenant2M1['count']) - 100;
  967.                 $libPerc '(+' round($perc2) . '%)';
  968.             } else {
  969.                 $libPerc '';
  970.             }
  971.         } elseif ($dbAvenant2['count'] < $dbAvenant2M1['count']) {
  972.             if ($dbAvenant2M1['count'] > 0) {
  973.                 $perc = ($dbAvenant2['count'] * 100 $dbAvenant2M1['count']) - 100;
  974.                 $libPerc '(-' round($perc2) . '%)';
  975.             } else {
  976.                 $libPerc '';
  977.             }
  978.         } else {
  979.             $libPerc '(=)';
  980.         }
  981.         $dbAvenant2['evol'] = $libPerc;
  982.         $tableContainerTop '<table cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td width="25%"></td><td width="50%">';
  983.         $tableTop '<table class="effectifs" cellspacing="0" cellpadding="1" border="0" width="100%" align="center">';
  984.         $tableTitle '
  985.                         <tr>
  986.                             <th width="50%" colspan="3" class="prospects">' $moinzunReport->format('m/Y') . '</th>
  987.                             <th width="50%" colspan="3" class="sortis">' $endReport->format('m/Y') . '</th>
  988.                         </tr>
  989.                 ';
  990.         $tableContent '    <tr><td width="28%" align="left">Cape :</td>
  991.                                     <td width="20%" align="right">' $dbCAPEM1['count'] . '</td>
  992.                                     <td width="2%" align="left" style="border-right:1px solid #808080"></td>';
  993.         $tableContent .= '    <td width="2%"></td>
  994.                                     <td width="28%" align="left"> Cape :</td>
  995.                                     <td width="20%" align="right">' $dbCAPE['count'] . ' <span class="small">' $dbCAPE['evol'] . '</span></td></tr>';
  996.         $tableContent .= '    <tr><td width="28%" align="left">Avenant 1 :</td>
  997.                                     <td width="20%" align="right">' $dbAvenant1M1['count'] . '</td>
  998.                                     <td width="2%" align="left" style="border-right:1px solid #808080"></td>';
  999.         $tableContent .= '    <td width="2%"></td>
  1000.                                     <td width="28%" align="left"> Avenant 1 :</td>
  1001.                                     <td width="20%" align="right">' $dbAvenant1['count'] . ' <span class="small">' $dbAvenant1['evol'] . '</span></td></tr>';
  1002.         $tableContent .= '';
  1003.         $tableContent .= '    <tr><td width="28%" align="left">Avenant 2 :</td>
  1004.                                     <td width="20%" align="right">' $dbAvenant2M1['count'] . '</td>
  1005.                                     <td width="2%" align="left" style="border-right:1px solid #808080"></td>';
  1006.         $tableContent .= '    <td width="2%"></td>
  1007.                                     <td width="28%" align="left"> Avenant 2 :</td>
  1008.                                     <td width="20%" align="right">' $dbAvenant2['count'] . ' <span class="small">' $dbAvenant2['evol'] . '</span></td></tr>';
  1009.         $tableBottom '</table>';
  1010.         $tableContainerBottom '</td><td width="25%"></td></tr></table>';
  1011.         $report->addLine($tableContainerTop $tableTop $tableTitle $tableContent $tableBottom $tableContainerBottom);
  1012.         $report->addBr(4);
  1013.         $report->addSeparator();
  1014.         $report->addBr(2);
  1015.         $report->addLine('<div style="font-size:12px; color:#606060; text-align:center"><strong>Durée moyenne des CAPE et avenants</strong></div>');
  1016.         $report->addBr(2);
  1017.         // Tableau Durees CAPE
  1018.         $queryCAPE "SELECT debutcape, fincape FROM entrepreneur WHERE (debutcape <= '" $endReport->format('d/m/Y') . "') AND etat <> 4";
  1019.         $dbCAPE $this->db->fetchAllAssociative($queryCAPE);
  1020.         $queryCAPEM1 "SELECT debutcape, fincape FROM entrepreneur WHERE (debutcape <= '" $moinzunReport->format('d/m/Y') . "' AND fincape IS NOT NULL ) AND etat <> 4";
  1021.         $dbCAPEM1 $this->db->fetchAllAssociative($queryCAPEM1);
  1022.         $queryAvenant1 "SELECT debutavcape1, finavcape1 FROM entrepreneur WHERE (debutavcape1 <= '" $endReport->format('d/m/Y') . "' AND finavcape1 IS NOT NULL ) AND etat <> 4";
  1023.         $dbAvenant1 $this->db->fetchAllAssociative($queryAvenant1);
  1024.         $queryAvenant1M1 "SELECT debutavcape1, finavcape1 FROM entrepreneur WHERE (debutavcape1 <= '" $moinzunReport->format('d/m/Y') . "' AND finavcape1 IS NOT NULL ) AND etat <> 4";
  1025.         $dbAvenant1M1 $this->db->fetchAllAssociative($queryAvenant1M1);
  1026.         $queryAvenant2 "SELECT debutavcape2, finavcape2 FROM entrepreneur WHERE (debutavcape2 <= '" $endReport->format('d/m/Y') . "' AND finavcape2 IS NOT NULL ) AND etat <> 4";
  1027.         $dbAvenant2 $this->db->fetchAllAssociative($queryAvenant2);
  1028.         $queryAvenant2M1 "SELECT debutavcape2, finavcape2 FROM entrepreneur WHERE (debutavcape2 <= '" $moinzunReport->format('d/m/Y') . "' AND finavcape2 IS NOT NULL ) AND etat <> 4";
  1029.         $dbAvenant2M1 $this->db->fetchAllAssociative($queryAvenant2M1);
  1030.         $totCAPE 0;
  1031.         foreach ($dbCAPE as $cape) {
  1032.             $date1 $cape['debutcape'];
  1033.             $date2 $cape['fincape'];
  1034.             $ts1 strtotime($date1);
  1035.             $ts2 strtotime($date2 ' + 1 day');
  1036.             $year1 date('Y'$ts1);
  1037.             $year2 date('Y'$ts2);
  1038.             $month1 date('m'$ts1);
  1039.             $month2 date('m'$ts2);
  1040.             $dureecape = (($year2 $year1) * 12) + ($month2 $month1);
  1041.             $totCAPE += $dureecape;
  1042.         }
  1043.         $avgCAPE $totCAPE count($dbCAPE);
  1044.         $totCAPEM1 0;
  1045.         foreach ($dbCAPEM1 as $cape) {
  1046.             $date1 $cape['debutcape'];
  1047.             $date2 $cape['fincape'];
  1048.             $ts1 strtotime($date1);
  1049.             $ts2 strtotime($date2 ' + 1 day');
  1050.             $year1 date('Y'$ts1);
  1051.             $year2 date('Y'$ts2);
  1052.             $month1 date('m'$ts1);
  1053.             $month2 date('m'$ts2);
  1054.             $dureecape = (($year2 $year1) * 12) + ($month2 $month1);
  1055.             $totCAPEM1 += $dureecape;
  1056.         }
  1057.         $avgCAPEM1 $totCAPEM1 count($dbCAPEM1);
  1058.         $totAvenant1 0;
  1059.         foreach ($dbAvenant1 as $avenant) {
  1060.             $date1 $avenant['debutavcape1'];
  1061.             $date2 $avenant['finavcape1'];
  1062.             $ts1 strtotime($date1);
  1063.             $ts2 strtotime($date2 ' + 1 day');
  1064.             $year1 date('Y'$ts1);
  1065.             $year2 date('Y'$ts2);
  1066.             $month1 date('m'$ts1);
  1067.             $month2 date('m'$ts2);
  1068.             $dureecape = (($year2 $year1) * 12) + ($month2 $month1);
  1069.             $totAvenant1 += $dureecape;
  1070.         }
  1071.         $avgAvenant1 $totAvenant1 count($dbAvenant1);
  1072.         $totAvenant1M1 0;
  1073.         foreach ($dbAvenant1M1 as $avenant) {
  1074.             $date1 $avenant['debutavcape1'];
  1075.             $date2 $avenant['finavcape1'];
  1076.             $ts1 strtotime($date1);
  1077.             $ts2 strtotime($date2 ' + 1 day');
  1078.             $year1 date('Y'$ts1);
  1079.             $year2 date('Y'$ts2);
  1080.             $month1 date('m'$ts1);
  1081.             $month2 date('m'$ts2);
  1082.             $dureecape = (($year2 $year1) * 12) + ($month2 $month1);
  1083.             $totAvenant1M1 += $dureecape;
  1084.         }
  1085.         $avgAvenant1M1 $totAvenant1M1 count($dbAvenant1M1);
  1086.         $totAvenant2 0;
  1087.         foreach ($dbAvenant2 as $avenant) {
  1088.             $date1 $avenant['debutavcape2'];
  1089.             $date2 $avenant['finavcape2'];
  1090.             $ts1 strtotime($date1);
  1091.             $ts2 strtotime($date2 ' + 1 day');
  1092.             $year1 date('Y'$ts1);
  1093.             $year2 date('Y'$ts2);
  1094.             $month1 date('m'$ts1);
  1095.             $month2 date('m'$ts2);
  1096.             $dureecape = (($year2 $year1) * 12) + ($month2 $month1);
  1097.             $totAvenant2 += $dureecape;
  1098.         }
  1099.         $avgAvenant2 $totAvenant2 count($dbAvenant2);
  1100.         $totAvenant2M1 0;
  1101.         foreach ($dbAvenant2M1 as $avenant) {
  1102.             $date1 $avenant['debutavcape2'];
  1103.             $date2 $avenant['finavcape2'];
  1104.             $ts1 strtotime($date1);
  1105.             $ts2 strtotime($date2 ' + 1 day');
  1106.             $year1 date('Y'$ts1);
  1107.             $year2 date('Y'$ts2);
  1108.             $month1 date('m'$ts1);
  1109.             $month2 date('m'$ts2);
  1110.             $dureecape = (($year2 $year1) * 12) + ($month2 $month1);
  1111.             $totAvenant2M1 += $dureecape;
  1112.         }
  1113.         $avgAvenant2M1 $totAvenant2M1 count($dbAvenant2M1);
  1114.         $tableContainerTop '<table cellspacing="0" cellpadding="0" border="0" width="100%"><tr><td width="25%"></td><td width="50%">';
  1115.         $tableTop '<table class="effectifs" cellspacing="0" cellpadding="1" border="0" width="100%" align="center">';
  1116.         $tableTitle '
  1117.                         <tr>
  1118.                             <th width="50%" colspan="3" class="prospects">' $moinzunReport->format('m/Y') . '</th>
  1119.                             <th width="50%" colspan="3" class="sortis">' $endReport->format('m/Y') . '</th>
  1120.                         </tr>
  1121.                 ';
  1122.         $tableContent '    <tr><td width="28%" align="left">Cape :</td>
  1123.                                     <td width="20%" align="right">' round($avgCAPEM12) . ' mois</td>
  1124.                                     <td width="2%" align="left" style="border-right:1px solid #808080"></td>';
  1125.         $tableContent .= '    <td width="2%"></td>
  1126.                                     <td width="28%" align="left"> Cape :</td>
  1127.                                     <td width="20%" align="right">' round($avgCAPE2) . ' mois</td></tr>';
  1128.         $tableContent .= '    <tr><td width="28%" align="left">Avenant 1 :</td>
  1129.                                     <td width="20%" align="right">' round($avgAvenant1M12) . ' mois</td>
  1130.                                     <td width="2%" align="left" style="border-right:1px solid #808080"></td>';
  1131.         $tableContent .= '    <td width="2%"></td>
  1132.                                     <td width="28%" align="left"> Avenant 1 :</td>
  1133.                                     <td width="20%" align="right">' round($avgAvenant12) . ' mois</td></tr>';
  1134.         $tableContent .= '';
  1135.         $tableContent .= '    <tr><td width="28%" align="left">Avenant 2 :</td>
  1136.                                     <td width="20%" align="right">' round($avgAvenant2M12) . ' mois</td>
  1137.                                     <td width="2%" align="left" style="border-right:1px solid #808080"></td>';
  1138.         $tableContent .= '    <td width="2%"></td>
  1139.                                     <td width="28%" align="left"> Avenant 2 :</td>
  1140.                                     <td width="20%" align="right">' round($avgAvenant22) . ' mois</td></tr>';
  1141.         $tableBottom '</table>';
  1142.         $tableContainerBottom '</td><td width="25%"></td></tr></table>';
  1143.         $report->addLine($tableContainerTop $tableTop $tableTitle $tableContent $tableBottom $tableContainerBottom);
  1144.         // rapports couveuses
  1145.         $qlistCouveuses "SELECT c.idstructure FROM couveuse c, structure s WHERE c.idstructure = s.idstructure ORDER BY s.libelle";
  1146.         $listCouveuses $this->db->fetchAllAssociative($qlistCouveuses);
  1147.         foreach ($listCouveuses as $couv) {
  1148.             $report->pageBreak();
  1149.             $report $this->genReportCouveuse($couv['idstructure'], $startReport$endReport$report);
  1150.         }
  1151.         $report->output('rapport_consolide_' $request->get('monthStart') . '_' date('Y') . '.pdf''D');
  1152.         exit();
  1153.     }
  1154.     public function genReportCouveuseAction(Request $request): Response
  1155.     {
  1156.         $activeStructure $request->getSession()->get('activeStructure');
  1157.         $startReport = \DateTime::createFromFormat('d/m/Y''01/' $request->get('monthStart') . '/' $request->get('yearStart'));
  1158.         $endReport = \DateTime::createFromFormat('d/m/Y''01/' $request->get('monthEnd') . '/' $request->get('yearEnd'));
  1159.         // on ajoute un mois puis on retire un jour à la date de fin pour bien couvrir le dernier mois
  1160.         $endReport date_add($endReportdate_interval_create_from_date_string('1 month'));
  1161.         $endReport date_sub($endReportdate_interval_create_from_date_string('1 day'));
  1162.         $rootUri 'http://' $_SERVER["HTTP_HOST"] . '/';
  1163.         $tmpPath $this->getParameter('kernel.project_dir') . '/public/tmp/';
  1164.         $report = new MydReportCouveuse($startReport$endReport$rootUri$tmpPath);
  1165.         $styles '
  1166.                 <style>
  1167.                         span.h1 { font-size:20pt; margin:2cm;  }
  1168.                         span.h2 { font-size:10pt; color:#808080; margin:0px;  }
  1169.                         table.title { border-color:#404040; }
  1170.                         table.title td { border-color:#404040; background-color:#404040; color:#ffffff; font-weight:bold; padding:1cm; height:0.5cm; line-height:0.5cm; font-size:12px; }
  1171.                         table.effectifs th{ font-weight:bold; font-size:12px; }
  1172.                         table.effectifs td{ font-size:12px; }
  1173.                         span.small { font-size:10px }
  1174.                         .prospects{ color:#003770 }
  1175.                         .candidats{ color:#008bd2 }
  1176.                         .suivis{ color:#f088b6 }
  1177.                         .sortis{ color:#891e82 }
  1178.                 </style>';
  1179.         $report->setStyles($styles);
  1180.         $report $this->genReportCouveuse($activeStructure->getIdstructure(), $startReport$endReport$report);
  1181.         $report->output('rapport_' strtolower($activeStructure->getLibelle()) . '_' $startReport->format('m/Y') . '_' $endReport->format('m/Y') . '.pdf''D');
  1182.         exit();
  1183.     }
  1184.     private function genReportCouveuse($idstructure$startReport$endReport$report)
  1185.     {
  1186.         $filelist = [];
  1187.         $importDir $this->getParameter('import_dir');
  1188.         $couveuse $this->db->fetchAssociative('SELECT * FROM structure s, couveuse c WHERE c.idstructure = s.idstructure AND s.idstructure = ' $idstructure);
  1189.         $logoDir $importDir '/logos/' $couveuse['idstructure'] . '/';
  1190.         $report->setCouveuse($couveuse$logoDir);
  1191.         $report->initPDF();
  1192.         $logoDir $importDir '/logos/' $couveuse['idstructure'] . '/';
  1193.         $tmpPath $this->getParameter('kernel.project_dir') . '/public/tmp/';
  1194.         $qlistStructures "SELECT idstructure FROM structure WHERE idparent = " $idstructure;
  1195.         $listStructures $this->db->fetchAllAssociative($qlistStructures);
  1196.         $listStructuresStr '';
  1197.         foreach ($listStructures as $struc) {
  1198.             $listStructuresStr .= $struc['idstructure'] . ',';
  1199.         }
  1200.         $listStructuresStr .= $idstructure;
  1201.         $qlistStatut "SELECT * FROM statutsocial";
  1202.         $listStatut $this->db->fetchAllAssociative($qlistStatut);
  1203.         // CALCULS EFFECTIFS
  1204.         // Prospects
  1205.         $queryProspect "
  1206.             SELECT count(identrepreneur), SUM(chiffreaff), 0 as tmpetat
  1207.             FROM entrepreneur
  1208.             WHERE idstructure IN (" $listStructuresStr ")
  1209.             AND (dateprospect >= '" $startReport->format('d/m/Y') . "' AND dateprospect <= '" $endReport->format('d/m/Y') . "')
  1210.             AND (datecandidat > '" $endReport->format('d/m/Y') . "' OR datecandidat IS NULL)
  1211.             AND (datecouve > '" $endReport->format('d/m/Y') . "' OR datecouve IS NULL)
  1212.             AND (datesortie > '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  1213.             AND etat <> 4
  1214.         ";
  1215.         $dbProspect $this->db->fetchAllAssociative($queryProspect);
  1216.         // Prospects à l'origine
  1217.         $queryProspectOri "
  1218.             SELECT count(identrepreneur), SUM(chiffreaff), 0 as tmpetat
  1219.             FROM entrepreneur
  1220.             WHERE idstructure IN (" $listStructuresStr ")
  1221.             AND (dateprospect <= '" $endReport->format('d/m/Y') . "')
  1222.             AND (datecandidat > '" $endReport->format('d/m/Y') . "' OR datecandidat IS NULL)
  1223.             AND (datecouve > '" $endReport->format('d/m/Y') . "' OR datecouve IS NULL)
  1224.             AND (datesortie > '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  1225.             AND etat <> 4
  1226.         ";
  1227.         $dbProspectOri $this->db->fetchAllAssociative($queryProspectOri);
  1228.         // Candidats
  1229.         $queryCandi "
  1230.             SELECT count(identrepreneur), SUM(chiffreaff), 1 as tmpetat
  1231.             FROM entrepreneur
  1232.             WHERE idstructure IN (" $listStructuresStr ")
  1233.             AND (datecandidat >= '" $startReport->format('d/m/Y') . "' AND datecandidat <= '" $endReport->format('d/m/Y') . "')
  1234.             AND (datecouve > '" $endReport->format('d/m/Y') . "' OR datecouve IS NULL)
  1235.             AND (datesortie > '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  1236.             AND etat <> 4
  1237.         ";
  1238.         $dbCandi $this->db->fetchAllAssociative($queryCandi);
  1239.         // Candidats à l'origine
  1240.         $queryCandiOri "
  1241.             SELECT count(identrepreneur), SUM(chiffreaff), 1 as tmpetat
  1242.             FROM entrepreneur
  1243.             WHERE idstructure IN (" $listStructuresStr ")
  1244.             AND (datecandidat <= '" $endReport->format('d/m/Y') . "')
  1245.             AND (datecouve > '" $endReport->format('d/m/Y') . "' OR datecouve IS NULL)
  1246.             AND (datesortie > '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  1247.             AND etat <> 4
  1248.         ";
  1249.         $dbCandiOri $this->db->fetchAllAssociative($queryCandiOri);
  1250.         // Suivis
  1251.         $queryCouve "
  1252.             SELECT count(identrepreneur), SUM(chiffreaff), 2 as tmpetat FROM entrepreneur
  1253.             WHERE idstructure IN (" $listStructuresStr ")
  1254.             AND (datecouve >= '" $startReport->format('d/m/Y') . "' AND datecouve <= '" $endReport->format('d/m/Y') . "')
  1255.             AND (datesortie > '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  1256.             AND etat <> 4
  1257.         ";
  1258.         $dbCouve $this->db->fetchAllAssociative($queryCouve);
  1259.         // Suivis à l'origine
  1260.         $queryCouveOri "
  1261.             SELECT count(identrepreneur), SUM(chiffreaff), 2 as tmpetat FROM entrepreneur
  1262.             WHERE idstructure IN (" $listStructuresStr ")
  1263.             AND (datecouve <= '" $endReport->format('d/m/Y') . "')
  1264.             AND (datesortie > '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  1265.             AND etat <> 4
  1266.         ";
  1267.         $dbCouveOri $this->db->fetchAllAssociative($queryCouveOri);
  1268.         // Sortis
  1269.         $querySortie "
  1270.             SELECT count(identrepreneur), SUM(chiffreaff), 3 as tmpetat FROM entrepreneur
  1271.             WHERE idstructure IN (" $listStructuresStr ")
  1272.             AND (datesortie >= '" $startReport->format('d/m/Y') . "' AND datesortie <= '" $endReport->format('d/m/Y') . "')
  1273.             AND etat <> 4
  1274.         ";
  1275.         $dbSortie $this->db->fetchAllAssociative($querySortie);
  1276.         // Sortis à l'origine?.
  1277.         $querySortieOri "
  1278.             SELECT count(identrepreneur), SUM(chiffreaff), 3 as tmpetat FROM entrepreneur
  1279.             WHERE idstructure IN (" $listStructuresStr ")
  1280.             AND (datesortie <= '" $endReport->format('d/m/Y') . "')
  1281.             AND etat <> 4
  1282.         ";
  1283.         $dbSortieOri $this->db->fetchAllAssociative($querySortieOri);
  1284.         $dbeffectifs = [$dbProspect[0], $dbCandi[0], $dbCouve[0], $dbSortie[0]];
  1285.         $dbeffectifsOri = [$dbProspectOri[0], $dbCandiOri[0], $dbCouveOri[0], $dbSortieOri[0]];
  1286.         $effectifs = [];
  1287.         $totalEffect 0;
  1288.         $totalCA 0;
  1289.         foreach ($dbeffectifs as $eff) {
  1290.             $totalEffect += $eff['count'];
  1291.             $effectifs[$eff['tmpetat']] = $eff;
  1292.         }
  1293.         foreach ($effectifs as $k => $eff) {
  1294.             $effectifs[$k]['per'] = ($totalEffect != 0) ? $eff['count'] * 100 $totalEffect 0;
  1295.             $effectifs[$k]['sum'] = ($effectifs[$k]['sum'] != '') ? $effectifs[$k]['sum'] : 0;
  1296.         }
  1297.         for ($i 0$i <= 3$i++) {
  1298.             if (!isset($effectifs[$i])) {
  1299.                 $effectifs[$i] = ["count" => 0"per" => 0"sum" => 0];
  1300.             }
  1301.         }
  1302.         foreach ($dbeffectifs as $eff) {
  1303.             $totalCA += $eff['sum'];
  1304.         }
  1305.         $effectifsOri = [];
  1306.         $totalEffectOri 0;
  1307.         foreach ($dbeffectifsOri as $eff) {
  1308.             $totalEffectOri += $eff['count'];
  1309.             $effectifsOri[$eff['tmpetat']] = $eff;
  1310.         }
  1311.         foreach ($effectifs as $k => $eff) {
  1312.             $effectifsOri[$k]['per'] = ($totalEffectOri != 0) ? $eff['count'] * 100 $totalEffectOri 0;
  1313.             $effectifsOri[$k]['sum'] = ($effectifsOri[$k]['sum'] != '') ? $effectifsOri[$k]['sum'] : 0;
  1314.         }
  1315.         for ($i 0$i <= 3$i++) {
  1316.             if (!isset($effectifsOri[$i])) {
  1317.                 $effectifsOri[$i] = ["count" => 0"per" => 0"sum" => 0];
  1318.             }
  1319.         }
  1320.         // REPARTITIONS
  1321.         $queryHF "
  1322.             SELECT COUNT(civilite), civilite
  1323.             FROM entrepreneur, utilisateur
  1324.             WHERE idstructure IN (" $listStructuresStr ")
  1325.             AND entrepreneur.idutilisateur = utilisateur.id
  1326.             AND (
  1327.                 (dateprospect >= '" $startReport->format('d/m/Y') . "' AND (dateprospect <= '" $endReport->format('d/m/Y') . "' OR dateprospect IS NULL))
  1328.                 OR
  1329.                 (datecandidat >= '" $startReport->format('d/m/Y') . "' AND (datecandidat <= '" $endReport->format('d/m/Y') . "' OR datecandidat IS NULL))
  1330.                 OR
  1331.                 (datecouve >= '" $startReport->format('d/m/Y') . "' AND (datecouve <= '" $endReport->format('d/m/Y') . "' OR datecouve IS NULL))
  1332.                 OR
  1333.                 (datesortie >= '" $startReport->format('d/m/Y') . "' AND (datesortie <= '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL))
  1334.             )
  1335.             AND etat <> 4
  1336.             GROUP BY civilite
  1337.         ";
  1338.         $dbHF $this->db->fetchAllAssociative($queryHF);
  1339.         $queryHFOri "
  1340.             SELECT COUNT(civilite), civilite
  1341.             FROM entrepreneur, utilisateur
  1342.             WHERE idstructure IN (" $listStructuresStr ")
  1343.             AND entrepreneur.idutilisateur = utilisateur.id
  1344.             AND (datesortie <= '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  1345.             AND etat <> 4
  1346.             GROUP BY civilite
  1347.         ";
  1348.         $dbHFOri $this->db->fetchAllAssociative($queryHFOri);
  1349.         $repHF = [];
  1350.         $repHF['m'] = ['ori' => 0'act' => 0];
  1351.         $repHF['mme'] = ['ori' => 0'act' => 0];
  1352.         foreach ($dbHFOri as $arr) {
  1353.             $repHF[$arr['civilite']] = ['ori' => $arr['count'], 'act' => 0];
  1354.         }
  1355.         foreach ($dbHF as $arr) {
  1356.             if (!isset($repHF[$arr['civilite']])) {
  1357.                 $repHF[$arr['civilite']] = ['ori' => 0'act' => $arr['count']];
  1358.             } else {
  1359.                 $repHF[$arr['civilite']]['act'] = $arr['count'];
  1360.             }
  1361.         }
  1362.         $queryRSA "
  1363.             SELECT
  1364.                 COUNT(
  1365.                     CASE
  1366.                         WHEN rsa is null THEN 'non'
  1367.                         WHEN rsa = true THEN 'oui'
  1368.                         ELSE 'non'
  1369.                     END
  1370.                 ), (
  1371.                     CASE
  1372.                         WHEN rsa is null THEN 'non'
  1373.                         WHEN rsa = true THEN 'oui'
  1374.                         ELSE 'non'
  1375.                     END
  1376.                 ) AS rsa
  1377.             FROM entrepreneur, utilisateur
  1378.             WHERE idstructure IN (" $listStructuresStr ")
  1379.             AND entrepreneur.idutilisateur = utilisateur.id
  1380.             AND (
  1381.                 (dateprospect >= '" $startReport->format('d/m/Y') . "' AND (dateprospect <= '" $endReport->format('d/m/Y') . "' OR dateprospect IS NULL))
  1382.                 OR
  1383.                 (datecandidat >= '" $startReport->format('d/m/Y') . "' AND (datecandidat <= '" $endReport->format('d/m/Y') . "' OR datecandidat IS NULL))
  1384.                 OR
  1385.                 (datecouve >= '" $startReport->format('d/m/Y') . "' AND (datecouve <= '" $endReport->format('d/m/Y') . "' OR datecouve IS NULL))
  1386.                 OR
  1387.                 (datesortie >= '" $startReport->format('d/m/Y') . "' AND (datesortie <= '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL))
  1388.             )
  1389.             AND etat <> 4
  1390.             GROUP BY rsa
  1391.         ";
  1392.         $dbRSA $this->db->fetchAllAssociative($queryRSA);
  1393.         $queryRSAOri "
  1394.             SELECT
  1395.                 COUNT(
  1396.                     CASE
  1397.                         WHEN rsa is null THEN 'non'
  1398.                         WHEN rsa = true THEN 'oui'
  1399.                         ELSE 'non'
  1400.                     END
  1401.                 ), (
  1402.                     CASE
  1403.                         WHEN rsa is null THEN 'non'
  1404.                         WHEN rsa = true THEN 'oui'
  1405.                         ELSE 'non'
  1406.                     END
  1407.                 ) AS rsa
  1408.             FROM entrepreneur, utilisateur
  1409.             WHERE idstructure IN (" $listStructuresStr ")
  1410.             AND entrepreneur.idutilisateur = utilisateur.id
  1411.             AND (datesortie <= '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  1412.             AND etat <> 4
  1413.             GROUP BY rsa
  1414.         ";
  1415.         $dbRSAOri $this->db->fetchAllAssociative($queryRSAOri);
  1416.         $repRSA = [];
  1417.         $repRSA['oui'] = ['ori' => 0'act' => 0];
  1418.         $repRSA['non'] = ['ori' => 0'act' => 0];
  1419.         foreach ($dbRSAOri as $arr) {
  1420.             $repRSA[$arr['rsa']] = ['ori' => $arr['count'], 'act' => 0];
  1421.         }
  1422.         foreach ($dbRSA as $arr) {
  1423.             if (!isset($repRSA[$arr['rsa']])) {
  1424.                 $repRSA[$arr['rsa']] = ['ori' => 0'act' => $arr['count']];
  1425.             } else {
  1426.                 $repRSA[$arr['rsa']]['act'] = $arr['count'];
  1427.             }
  1428.         }
  1429.         $queryPol "
  1430.             SELECT
  1431.                 COUNT(
  1432.                     CASE
  1433.                         WHEN politiqueville is null THEN 'non'
  1434.                         WHEN politiqueville = true THEN 'oui'
  1435.                         ELSE 'non'
  1436.                       END
  1437.                 ), (
  1438.                       CASE
  1439.                         WHEN politiqueville is null THEN 'non'
  1440.                         WHEN politiqueville = true THEN 'oui'
  1441.                         ELSE 'non'
  1442.                       END
  1443.                 ) AS politiqueville
  1444.             FROM entrepreneur, utilisateur
  1445.             WHERE idstructure IN (" $listStructuresStr ")
  1446.             AND entrepreneur.idutilisateur = utilisateur.id
  1447.             AND (
  1448.                 (dateprospect >= '" $startReport->format('d/m/Y') . "' AND (dateprospect <= '" $endReport->format('d/m/Y') . "' OR dateprospect IS NULL))
  1449.                 OR
  1450.                 (datecandidat >= '" $startReport->format('d/m/Y') . "' AND (datecandidat <= '" $endReport->format('d/m/Y') . "' OR datecandidat IS NULL))
  1451.                 OR
  1452.                 (datecouve >= '" $startReport->format('d/m/Y') . "' AND (datecouve <= '" $endReport->format('d/m/Y') . "' OR datecouve IS NULL))
  1453.                 OR
  1454.                 (datesortie >= '" $startReport->format('d/m/Y') . "' AND (datesortie <= '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL))
  1455.             )
  1456.             AND etat <> 4
  1457.             GROUP BY politiqueville
  1458.         ";
  1459.         $dbPol $this->db->fetchAllAssociative($queryPol);
  1460.         $queryPolOri "
  1461.             SELECT
  1462.                 COUNT(
  1463.                     CASE
  1464.                         WHEN politiqueville is null THEN 'non'
  1465.                         WHEN politiqueville = true THEN 'oui'
  1466.                         ELSE 'non'
  1467.                     END
  1468.                 ), (
  1469.                     CASE
  1470.                         WHEN politiqueville is null THEN 'non'
  1471.                         WHEN politiqueville = true THEN 'oui'
  1472.                         ELSE 'non'
  1473.                     END
  1474.                 ) AS politiqueville
  1475.             FROM entrepreneur, utilisateur
  1476.             WHERE idstructure IN (" $listStructuresStr ")
  1477.             AND entrepreneur.idutilisateur = utilisateur.id
  1478.             AND (datesortie <= '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  1479.             AND etat <> 4
  1480.             GROUP BY politiqueville
  1481.         ";
  1482.         $dbPolOri $this->db->fetchAllAssociative($queryPolOri);
  1483.         $repPol = [];
  1484.         $repPol['oui'] = ['ori' => 0'act' => 0];
  1485.         $repPol['non'] = ['ori' => 0'act' => 0];
  1486.         foreach ($dbPolOri as $arr) {
  1487.             $repPol[$arr['politiqueville']] = ['ori' => $arr['count'], 'act' => 0];
  1488.         }
  1489.         foreach ($dbPol as $arr) {
  1490.             if (!isset($repPol[$arr['politiqueville']])) {
  1491.                 $repPol[$arr['politiqueville']] = ['ori' => 0'act' => $arr['count']];
  1492.             } else {
  1493.                 $repPol[$arr['politiqueville']]['act'] = $arr['count'];
  1494.             }
  1495.         }
  1496.         $queryStat "
  1497.             SELECT
  1498.                 COUNT(
  1499.                     CASE
  1500.                         WHEN statutsocial is null THEN 0
  1501.                         ELSE statutsocial
  1502.                     END
  1503.                 ), (
  1504.                     CASE
  1505.                         WHEN statutsocial is null THEN 0
  1506.                         ELSE statutsocial
  1507.                     END
  1508.                 ) AS statutsocial
  1509.             FROM entrepreneur, utilisateur
  1510.             WHERE idstructure IN (" $listStructuresStr ")
  1511.             AND entrepreneur.idutilisateur = utilisateur.id
  1512.             AND (
  1513.                 (dateprospect >= '" $startReport->format('d/m/Y') . "' AND (dateprospect <= '" $endReport->format('d/m/Y') . "' OR dateprospect IS NULL))
  1514.                 OR
  1515.                 (datecandidat >= '" $startReport->format('d/m/Y') . "' AND (datecandidat <= '" $endReport->format('d/m/Y') . "' OR datecandidat IS NULL))
  1516.                 OR
  1517.                 (datecouve >= '" $startReport->format('d/m/Y') . "' AND (datecouve <= '" $endReport->format('d/m/Y') . "' OR datecouve IS NULL))
  1518.                 OR
  1519.                 (datesortie >= '" $startReport->format('d/m/Y') . "' AND (datesortie <= '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL))
  1520.             )
  1521.             AND etat <> 4
  1522.             GROUP BY statutsocial
  1523.         ";
  1524.         $dbStat $this->db->fetchAllAssociative($queryStat);
  1525.         $queryStatOri "
  1526.             SELECT
  1527.                 COUNT(
  1528.                     CASE
  1529.                         WHEN statutsocial is null THEN 0
  1530.                         ELSE statutsocial
  1531.                     END
  1532.                 ), (
  1533.                     CASE
  1534.                         WHEN statutsocial is null THEN 0
  1535.                         ELSE statutsocial
  1536.                     END
  1537.                 ) AS statutsocial
  1538.             FROM entrepreneur, utilisateur
  1539.             WHERE idstructure IN (" $listStructuresStr ")
  1540.             AND entrepreneur.idutilisateur = utilisateur.id
  1541.             AND (datesortie <= '" $endReport->format('d/m/Y') . "' OR datesortie IS NULL)
  1542.             AND etat <> 4
  1543.             GROUP BY statutsocial
  1544.         ";
  1545.         $dbStatOri $this->db->fetchAllAssociative($queryStatOri);
  1546.         $repStat = [];
  1547.         foreach ($listStatut as $statut) {
  1548.             $lib $statut['libelle'];
  1549.             $repStat[$lib] = ['ori' => 0'act' => 0];
  1550.         }
  1551.         foreach ($dbStatOri as $arr) {
  1552.             if ($arr['statutsocial'] == 0) {
  1553.                 $lib 'NC';
  1554.             } else {
  1555.                 foreach ($listStatut as $statut) {
  1556.                     if ($arr['statutsocial'] == $statut['idstatut']) {
  1557.                         $lib $statut['libelle'];
  1558.                     }
  1559.                 }
  1560.             }
  1561.             $repStat[$lib] = ['ori' => $arr['count'], 'act' => 0];
  1562.         }
  1563.         foreach ($dbStat as $arr) {
  1564.             if ($arr['statutsocial'] == 0) {
  1565.                 $lib 'NC';
  1566.             } else {
  1567.                 foreach ($listStatut as $statut) {
  1568.                     if ($arr['statutsocial'] == $statut['idstatut']) {
  1569.                         $lib $statut['libelle'];
  1570.                     }
  1571.                 }
  1572.             }
  1573.             if (!isset($repStat[$lib])) {
  1574.                 $repStat[$lib] = ['ori' => 0'act' => $arr['count']];
  1575.             } else {
  1576.                 $repStat[$lib]['act'] = $arr['count'];
  1577.             }
  1578.         }
  1579.         // CALCULS EVOLUTIONS (12 Derniers Mois, indépendant de la période fixée pour le rapport)
  1580.         $completeEvol = [];
  1581.         $completeCape = [];
  1582.         // L'inversion des des dates de début et de fin est voulue car on remonte dans ls temps pour dessiner le graphique
  1583.         $startEvol = clone $endReport;
  1584.         $startEvol->modify('last day of this month');
  1585.         $endEvol = clone $startReport;
  1586.         $endEvol->modify('first day of this month');
  1587.         $diff $endEvol->diff($startEvol); //DateInterval entre les 2 dates
  1588.         $interval = \DateInterval::createFromDateString('-1 month'); // -1 month DateInterval
  1589.         $period = new \DatePeriod($startEvol$interval, ($diff->+ ($diff->12) + 1));
  1590.         foreach ($period as $dt) {
  1591.             $dt->modify('first day of next month');
  1592.             $previousMonth = clone $dt;
  1593.             $previousMonth->add($interval);
  1594.             $queryEvol "
  1595.                 SELECT *
  1596.                 FROM entrepreneur, utilisateur
  1597.                 WHERE idstructure IN (" $listStructuresStr ")
  1598.                 AND entrepreneur.idutilisateur = utilisateur.id
  1599.                 AND dateprospect < '" $dt->format('d/m/Y') . "'
  1600.                 AND (datecandidat < '" $dt->format('d/m/Y') . "' OR datecandidat IS NULL)
  1601.                 AND (datecouve < '" $dt->format('d/m/Y') . "' OR datecouve IS NULL)
  1602.                 AND (datesortie >= '" $previousMonth->format('d/m/Y') . "' OR datesortie IS NULL)
  1603.                 AND etat <> 4
  1604.             ";
  1605.             $resEvol $this->db->fetchAllAssociative($queryEvol);
  1606.             $completeEvol[$previousMonth->format('m/Y')] = $resEvol;
  1607.             $queryCape "
  1608.                 SELECT
  1609.                     SUM(
  1610.                         CASE
  1611.                             WHEN (debutcape < '" $dt->format('d/m/Y') . "' AND debutcape >= '" $previousMonth->format('d/m/Y') . "') THEN 1
  1612.                             ELSE 0
  1613.                         END
  1614.                     ) AS cape,
  1615.                     SUM(
  1616.                         CASE
  1617.                             WHEN (debutavcape1 < '" $dt->format('d/m/Y') . "' AND debutavcape1 >= '" $previousMonth->format('d/m/Y') . "') THEN 1
  1618.                             ELSE 0
  1619.                         END
  1620.                     ) AS capeav1,
  1621.                     SUM(
  1622.                         CASE
  1623.                             WHEN (debutavcape2 < '" $dt->format('d/m/Y') . "' AND debutavcape2 >= '" $previousMonth->format('d/m/Y') . "') THEN 1
  1624.                             ELSE 0
  1625.                         END
  1626.                     ) AS capeav2
  1627.                 FROM entrepreneur, utilisateur
  1628.                 WHERE entrepreneur.idutilisateur = utilisateur.id
  1629.                 AND etat <> 4
  1630.                 AND idstructure IN (" $listStructuresStr ")
  1631.                 AND (
  1632.                     (debutcape < '" $dt->format('d/m/Y') . "' AND debutcape >= '" $previousMonth->format('d/m/Y') . "')
  1633.                     OR
  1634.                     (debutavcape1 < '" $dt->format('d/m/Y') . "' AND debutavcape1 >= '" $previousMonth->format('d/m/Y') . "')
  1635.                     OR
  1636.                     (debutavcape2 < '" $dt->format('d/m/Y') . "' AND debutavcape2 >= '" $previousMonth->format('d/m/Y') . "')
  1637.                 )
  1638.             ";
  1639.             $resCape $this->db->fetchAllAssociative($queryCape);
  1640.             $completeCape[$previousMonth->format('m/Y')] = $resCape;
  1641.         }
  1642.         $repCape = [];
  1643.         foreach ($completeCape as $periode => $entr) {
  1644.             if (!isset($repCape[$periode])) {
  1645.                 $repCape[$periode] = ['Cape' => 0'Avenant 1' => 0'Avenant 2' => 0];
  1646.             }
  1647.             foreach ($entr as $e) {
  1648.                 $repCape[$periode]["Cape"] += $e['cape'];
  1649.                 $repCape[$periode]["Avenant 1"] += $e['capeav1'];
  1650.                 $repCape[$periode]["Avenant 2"] += $e['capeav2'];
  1651.             }
  1652.         }
  1653.         $repCape array_reverse($repCape);
  1654.         $report->setEnteteCouveuse();
  1655.         $report->addBr(4);
  1656.         $report->addTitle('Effectifs');
  1657.         $report->drawEffectifs($effectifs$effectifsOri);
  1658.         $report->addLine('<p style="font-size:12px; color:#606060"><strong>Chiffre d’affaires généré</strong> : ' number_format($totalCA2","" ") . ' €</p>');
  1659.         $report->addBr(6);
  1660.         $report->addTitle('Répartition');
  1661.         $report->addBr(4);
  1662.         $report->drawEffectifsHF($repHF);
  1663.         $report->addBr(4);
  1664.         $report->drawEffectifsStatut($repStat);
  1665.         $report->addBr(4);
  1666.         $report->drawEffectifsRSA($repRSA);
  1667.         $report->pageBreak();
  1668.         $report->addBr(4);
  1669.         $report->drawEffectifsPol($repPol);
  1670.         // GRAPH Cape
  1671.         $filename 'rapportcouv' $idstructure '_cape.png';
  1672.         $filelist[] = $filename;
  1673.         $arrPeriodes = [];
  1674.         $arrVals = [];
  1675.         foreach ($repCape as $periode => $arr) {
  1676.             $arrPeriodes[] = $periode;
  1677.             foreach ($arr as $set => $val) {
  1678.                 $setName $set;
  1679.                 $arrVals[$set][] = $val;
  1680.             }
  1681.         }
  1682.         $MyData = new Data();
  1683.         foreach ($arrVals as $set => $ar) {
  1684.             $MyData->addPoints($ar$set);
  1685.         }
  1686.         $MyData->loadPalette($this->getParameter('kernel.project_dir') . "/uce.color"TRUE);
  1687.         $MyData->setSerieWeight("Probe 1"2);
  1688.         $MyData->setSerieTicks("Probe 2"4);
  1689.         $MyData->setAxisName(0"CAPE");
  1690.         $MyData->addPoints($arrPeriodes"Labels");
  1691.         $MyData->setSerieDescription("Labels""Mois");
  1692.         $MyData->setAbscissa("Labels");
  1693.         $myPicture = new Image(700230$MyData);
  1694.         $myPicture->Antialias FALSE;
  1695.         $myPicture->drawRectangle(00699229, ["R" => 255"G" => 255"B" => 255]);
  1696.         $myPicture->setFontProperties(["FontName" => "pf_arma_five.ttf""FontSize" => 6]);
  1697.         $myPicture->setGraphArea(6020680190);
  1698.         $scaleSettings = ["XMargin" => 10"YMargin" => 10"Floating" => TRUE"GridR" => 200"GridG" => 200"GridB" => 200"DrawSubTicks" => TRUE"CycleBackground" => TRUE];
  1699.         $myPicture->drawScale($scaleSettings);
  1700.         $myPicture->Antialias TRUE;
  1701.         $myPicture->setShadow(TRUE, ["X" => 1"Y" => 1"R" => 0"G" => 0"B" => 0"Alpha" => 10]);
  1702.         $myPicture->drawLineChart();
  1703.         $myPicture->drawPlotChart(["DisplayValues" => TRUE"PlotBorder" => TRUE"BorderSize" => 2"Surrounding" => -60"BorderAlpha" => 80]);
  1704.         $myPicture->drawLegend(540210, ["Style" => LEGEND_NOBORDER"Mode" => LEGEND_HORIZONTAL]);
  1705.         $myPicture->render($tmpPath $filename);
  1706.         $report->addBr(4);
  1707.         $report->addImage($filename'Nombre de CAPE et Avenants'true'15cm');
  1708.         return $report;
  1709.     }
  1710.     private function createDoublePie($filename$set1$set2)
  1711.     {
  1712.         $tmpPath $this->getParameter('kernel.project_dir') . '/public/tmp/';
  1713.         $libs = [];
  1714.         $set = [];
  1715.         foreach ($set1 as $lib => $count) {
  1716.             $libs[] = $lib;
  1717.             $set[] = $count;
  1718.         }
  1719.         $MyData = new Data();
  1720.         $MyData->loadPalette($this->getParameter('kernel.project_dir') . "/uce.color"TRUE);
  1721.         $MyData->addPoints($set"ScoreA");
  1722.         $MyData->addPoints($libs"Labels");
  1723.         $MyData->setAbscissa("Labels");
  1724.         $libs = [];
  1725.         $set = [];
  1726.         foreach ($set2 as $lib => $count) {
  1727.             $libs[] = $lib;
  1728.             $set[] = $count;
  1729.         }
  1730.         $MyData2 = new Data();
  1731.         $MyData2->loadPalette($this->getParameter('kernel.project_dir') . "/uce.color"TRUE);
  1732.         $MyData2->addPoints($set"ScoreA");
  1733.         $MyData2->addPoints($libs"Labels");
  1734.         $MyData2->setAbscissa("Labels");
  1735.         $myPicture = new Image(800340$MyData);
  1736.         $myPicture->setFontProperties(["FontName" => "Forgotte.ttf""FontSize" => 12"R" => 80"G" => 80"B" => 80]);
  1737.         $PieChart = new Pie($myPicture$MyData);
  1738.         $PieChart->draw2DPie(200150, ["WriteValues" => PIE_VALUE_PERCENTAGE"DataGapAngle" => 10"DataGapRadius" => 6"Border" => FALSE"ValueR" => 0"ValueG" => 0"ValueB" => 0"Radius" => 120]);
  1739.         $PieChart = new Pie($myPicture$MyData2);
  1740.         $PieChart->draw2DPie(600150, ["WriteValues" => PIE_VALUE_PERCENTAGE"DataGapAngle" => 10"DataGapRadius" => 6"Border" => FALSE"ValueR" => 0"ValueG" => 0"ValueB" => 0"Radius" => 120]);
  1741.         $myPicture->setFontProperties(["FontName" => "Forgotte.ttf""FontSize" => 11"R" => 80"G" => 80"B" => 80]);
  1742.         $PieChart->drawPieLegend(150320, ["Style" => LEGEND_NOBORDER"Mode" => LEGEND_HORIZONTAL]);
  1743.         $myPicture->render($tmpPath $filename);
  1744.     }
  1745.     public function calculEntrepreneursAction(Request $request): Response
  1746.     {
  1747.         $activeStructure $request->getSession()->get('activeStructure');
  1748.         $mois $request->get('mois');
  1749.         $annee $request->get('annee');
  1750.         $datemois = \DateTime::createFromFormat('d-m-Y''01-' $mois '-' $annee);
  1751.         $plus1mois = \DateTime::createFromFormat('d-m-Y''01-' $mois '-' $annee);
  1752.         $newdate $plus1mois->add(new \DateInterval('P1M'));
  1753.         // On récupère tous les entrepreneurs de la structure
  1754.         $entrepreneurs $this->db->fetchAllAssociative('SELECT u.id, e.debutcape, e.fincape, e.debutavcape1, e.finavcape1, e.debutavcape2, e.finavcape2, e.datesortie FROM entrepreneur e, structure s, utilisateur u  WHERE s.idparent = ' $activeStructure->getIdstructure() . ' AND s.idstructure=e.idstructure AND u.id=e.idutilisateur');
  1755.         $idEntConcernees = [];
  1756.         foreach ($entrepreneurs as $e) {
  1757.             $datesortie =  new \DateTime(date('d-m-Y'strtotime($e['datesortie'])));
  1758.             if (!is_null($e['datesortie']) && $datesortie $datemois) {
  1759.             } else {
  1760.                 // On vérifie pour le cas des capes
  1761.                 if (!is_null($e['debutcape'])) {
  1762.                     $debutcape =  new \DateTime(date('d-m-Y'strtotime($e['debutcape'])));
  1763.                     $fincape =  new \DateTime(date('d-m-Y'strtotime($e['fincape'])));
  1764.                     // On vérifie que la date de fin de cape est bien < au mois sélèctionné
  1765.                     if ($fincape $datemois) {
  1766.                     } else {
  1767.                         // On vérifie que la date de début est bien <= au mois sélectionné
  1768.                         if ($debutcape <= $datemois || $debutcape $newdate) {
  1769.                             // On vérifie que la date de fin est >= au mois sélectionné (1er jour du mois suivant) et qu'aucune date de sortie ne soit renseignée
  1770.                             if (($fincape >= $newdate || is_null($fincape)) || ($fincape <= $newdate && $fincape $datemois) && (is_null($e['datesortie']) || $datesortie $newdate)  && is_null($e['finavcape1']) && is_null($e['finavcape2'])) {
  1771.                                 //On ajoute l'entrepreneur concerné
  1772.                                 $idEntConcernees[] = $e['id'];
  1773.                             } elseif (($fincape >= $newdate || is_null($fincape)) || ($fincape <= $newdate && $fincape $datemois) && !is_null($e['datesortie']) && is_null($e['finavcape1']) && is_null($e['finavcape2'])) {
  1774.                                 // On vérifie que la date de sortie est bien > au mois sélectionné
  1775.                                 if ($datesortie >= $newdate || ($datesortie <= $newdate && $datesortie $datemois)) {
  1776.                                     //On ajoute l'entrepreneur concerné
  1777.                                     $idEntConcernees[] = $e['id'];
  1778.                                 }
  1779.                             } elseif (!is_null($e['datesortie']) && $newdate $datesortie && $datesortie $newdate && is_null($e['finavcape1']) && is_null($e['finavcape2'])) {
  1780.                                 //On ajoute l'entrepreneur concerné
  1781.                                 if (!in_array($e['id'], $idEntConcernees)) {
  1782.                                     $idEntConcernees[] = $e['id'];
  1783.                                 }
  1784.                             }
  1785.                         }
  1786.                     }
  1787.                 }
  1788.                 // On vérifie pour le cas des avenant 1 capes
  1789.                 if (!is_null($e['debutavcape1'])) {
  1790.                     $debutav1cape =  new \DateTime(date('d-m-Y'strtotime($e['debutavcape1'])));
  1791.                     $finav1cape =  new \DateTime(date('d-m-Y'strtotime($e['finavcape1'])));
  1792.                     // On vérifie que la date de fin de cape est bien < au mois sélèctionné
  1793.                     if ($finav1cape $datemois) {
  1794.                     } else {
  1795.                         // On vérifie que la date de début est bien <= au mois sélectionné
  1796.                         if ($debutav1cape <= $datemois || $debutav1cape $newdate) {
  1797.                             // On vérifie que la date de fin est >= au mois sélectionné (1er jour du mois suivant) et qu'aucune date de sortie ne soit renseignée
  1798.                             if (($finav1cape >= $newdate || is_null($finav1cape)) && (is_null($e['datesortie']) || $datesortie $newdate) && is_null($e['finavcape2'])) {
  1799.                                 //On ajoute l'entrepreneur concerné
  1800.                                 if (!in_array($e['id'], $idEntConcernees)) {
  1801.                                     $idEntConcernees[] = $e['id'];
  1802.                                 }
  1803.                             } elseif (($finav1cape >= $newdate || is_null($finav1cape)) && !is_null($e['datesortie']) && is_null($e['finavcape2'])) {
  1804.                                 // On vérifie que la date de sortie est bien > au mois sélectionné
  1805.                                 if ($datesortie >= $newdate) {
  1806.                                     //On ajoute l'entrepreneur concerné
  1807.                                     if (!in_array($e['id'], $idEntConcernees)) {
  1808.                                         $idEntConcernees[] = $e['id'];
  1809.                                     }
  1810.                                 }
  1811.                             } elseif (!is_null($e['datesortie']) && $datemois $datesortie && $datesortie $newdate && is_null($e['finavcape2'])) {
  1812.                                 //On ajoute l'entrepreneur concerné
  1813.                                 if (!in_array($e['id'], $idEntConcernees)) {
  1814.                                     $idEntConcernees[] = $e['id'];
  1815.                                 }
  1816.                             }
  1817.                         }
  1818.                     }
  1819.                 }
  1820.                 // On vérifie pour le cas des avenant 2 capes
  1821.                 if (!is_null($e['debutavcape2'])) {
  1822.                     $debutav2cape =  new \DateTime(date('d-m-Y'strtotime($e['debutavcape2'])));
  1823.                     $finav2cape =  new \DateTime(date('d-m-Y'strtotime($e['finavcape2'])));
  1824.                     // On vérifie que la date de fin de cape est bien < au mois sélèctionné
  1825.                     if ($finav2cape $datemois) {
  1826.                     } else {
  1827.                         // On vérifie que la date de début est bien <= au mois sélectionné
  1828.                         if ($debutav2cape <= $datemois || $debutav2cape $newdate) {
  1829.                             // On vérifie que la date de fin est >= au mois sélectionné (1er jour du mois suivant) et qu'aucune date de sortie ne soit renseignée
  1830.                             if (($finav2cape >= $newdate || is_null($finav2cape)) && (is_null($e['datesortie']) || $datesortie $newdate)) {
  1831.                                 //On ajoute l'entrepreneur concerné
  1832.                                 if (!in_array($e['id'], $idEntConcernees)) {
  1833.                                     $idEntConcernees[] = $e['id'];
  1834.                                 }
  1835.                             } elseif (($finav2cape >= $newdate || is_null($finav2cape)) && !is_null($e['datesortie'])) {
  1836.                                 // On vérifie que la date de sortie est bien > au mois sélectionné
  1837.                                 if ($datesortie >= $newdate) {
  1838.                                     //On ajoute l'entrepreneur concerné
  1839.                                     if (!in_array($e['id'], $idEntConcernees)) {
  1840.                                         $idEntConcernees[] = $e['id'];
  1841.                                     }
  1842.                                 }
  1843.                             } elseif (!is_null($e['datesortie']) && $datemois $datesortie && $datesortie $newdate) {
  1844.                                 //On ajoute l'entrepreneur concerné
  1845.                                 if (!in_array($e['id'], $idEntConcernees)) {
  1846.                                     $idEntConcernees[] = $e['id'];
  1847.                                 }
  1848.                             }
  1849.                         }
  1850.                     }
  1851.                 }
  1852.             }
  1853.         }
  1854.         return $this->json($idEntConcernees);
  1855.     }
  1856.     public function listEntrepreneursAction(Request $request): Response
  1857.     {
  1858.         $list $request->get('list');
  1859.         $queryEnt 'SELECT u.nom, u.prenom, e.identrepreneur FROM entrepreneur e, utilisateur u
  1860.                 WHERE e.idutilisateur=u.id AND u.id IN (' $list ') ORDER BY u.nom, u.prenom';
  1861.         $ent $this->db->fetchAllAssociative($queryEnt);
  1862.         $html '    <div class="modal-header">
  1863.                         <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  1864.                         <h4><i class="fa fa-graduation-cap"></i>Liste des entrepreneurs concernés</h4>
  1865.                     </div>';
  1866.         $html .= '<div class="modal-body sidebar-inner scrollable-sidebar">';
  1867.         $arrayIds '';
  1868.         foreach ($ent as $e) {
  1869.             if ($arrayIds != '') {
  1870.                 $arrayIds .= ',' $e['identrepreneur'];
  1871.             } else {
  1872.                 $arrayIds .= $e['identrepreneur'];
  1873.             }
  1874.             $html .= '<div class="group group-1">';
  1875.             $url $this->generateUrl('admin_entrepreneur_edit', ['id' => $e['identrepreneur']]);
  1876.             $html .= '<a href="' $url '" ><h4 style="padding-left:10px;">' $e['nom'] . ' ' $e['prenom'] . '</h4></a>';
  1877.             $html .= '</div>';
  1878.         }
  1879.         $urlExport $this->generateUrl('admin_entrepreneurs_export', ['ids' => $arrayIds]);
  1880.         $html .= '<div class="padding-md clearfix text-center">';
  1881.         $html .= '<a class="btn btn-info pull-right" style="padding:4px 7px;" data-placement="left" data-toggle="tooltip" data-original-title="Exporter les entrepreneurs" href="' $urlExport '">';
  1882.         $html .= '<i class="fa fa-arrow-circle-o-down fa-2x"></i>';
  1883.         $html .= '</a>';
  1884.         $html .= '</div>';
  1885.         $html .= '</div>';
  1886.         $response = new Response();
  1887.         $response->setContent($html);
  1888.         $response->headers->set('Content-Type''text/plain');
  1889.         return $response;
  1890.     }
  1891.     public function calculEntrepreneursFincapeAction(Request $request): Response
  1892.     {
  1893.         $activeStructure $request->getSession()->get('activeStructure');
  1894.         $nbmois $request->get('nbmois');
  1895.         $t date('m-Y');
  1896.         $datemois = \DateTime::createFromFormat('d-m-Y''01-' $t);
  1897.         $plusNmois = \DateTime::createFromFormat('d-m-Y''01-' $t);
  1898.         $moissuiv $nbmois 1;
  1899.         $findate $plusNmois->add(new \DateInterval('P' $moissuiv 'M'));
  1900.         // On récupère tous les entrepreneurs de la structure
  1901.         $entrepreneurs $this->db->fetchAllAssociative('SELECT u.id, e.debutcape, e.fincape, e.debutavcape1, e.finavcape1, e.debutavcape2, e.finavcape2, e.datesortie FROM entrepreneur e, structure s, utilisateur u  WHERE s.idparent = ' $activeStructure->getIdstructure() . ' AND s.idstructure=e.idstructure AND u.id=e.idutilisateur ');
  1902.         $idEntConcernees = [];
  1903.         foreach ($entrepreneurs as $e) {
  1904.             $datesortie =  new \DateTime(date('d-m-Y'strtotime($e['datesortie'])));
  1905.             if (!is_null($e['datesortie']) && $datesortie $datemois) {
  1906.             } else {
  1907.                 // On vérifie pour le cas des capes
  1908.                 if (!is_null($e['fincape'])  && is_null($e['finavcape1']) && is_null($e['finavcape2'])) {
  1909.                     $fincape =  new \DateTime(date('d-m-Y'strtotime($e['fincape'])));
  1910.                     if (!is_null($e['datesortie'])) {
  1911.                         if ($datemois <= $datesortie && $datesortie $findate) {
  1912.                             //On ajoute l'entrepreneur concerné
  1913.                             if (!in_array($e['id'], $idEntConcernees)) {
  1914.                                 $idEntConcernees[] = $e['id'];
  1915.                             }
  1916.                         }
  1917.                     } else {
  1918.                         // On vérifie que la date de fin est <= au nombre de mois sélectionné
  1919.                         if (($fincape $findate && $fincape >= $datemois)) {
  1920.                             //On ajoute l'entrepreneur concerné
  1921.                             if (!in_array($e['id'], $idEntConcernees)) {
  1922.                                 $idEntConcernees[] = $e['id'];
  1923.                             }
  1924.                         }
  1925.                     }
  1926.                 }
  1927.                 // On vérifie pour le cas des avenants 1 capes
  1928.                 if (!is_null($e['finavcape1']) && is_null($e['finavcape2'])) {
  1929.                     $finavcape1 =  new \DateTime(date('d-m-Y'strtotime($e['finavcape1'])));
  1930.                     if (!is_null($e['datesortie'])) {
  1931.                         if ($datemois <= $datesortie && $datesortie $findate) {
  1932.                             //On ajoute l'entrepreneur concerné
  1933.                             if (!in_array($e['id'], $idEntConcernees)) {
  1934.                                 $idEntConcernees[] = $e['id'];
  1935.                             }
  1936.                         }
  1937.                     } else {
  1938.                         // On vérifie que la date de fin est <= au nombre de mois sélectionné
  1939.                         if (($finavcape1 $findate && $finavcape1 >= $datemois)) {
  1940.                             //On ajoute l'entrepreneur concerné
  1941.                             if (!in_array($e['id'], $idEntConcernees)) {
  1942.                                 $idEntConcernees[] = $e['id'];
  1943.                             }
  1944.                         }
  1945.                     }
  1946.                 }
  1947.                 // On vérifie pour le cas des avenants 2 capes
  1948.                 if (!is_null($e['finavcape2'])) {
  1949.                     $finavcape2 =  new \DateTime(date('d-m-Y'strtotime($e['finavcape2'])));
  1950.                     if (!is_null($e['datesortie'])) {
  1951.                         if ($datemois <= $datesortie && $datesortie $findate) {
  1952.                             //On ajoute l'entrepreneur concerné
  1953.                             if (!in_array($e['id'], $idEntConcernees)) {
  1954.                                 $idEntConcernees[] = $e['id'];
  1955.                             }
  1956.                         }
  1957.                     } else {
  1958.                         // On vérifie que la date de fin est <= au nombre de mois sélectionné
  1959.                         if ($finavcape2 $findate && $finavcape2 >= $datemois) {
  1960.                             //On ajoute l'entrepreneur concerné
  1961.                             if (!in_array($e['id'], $idEntConcernees)) {
  1962.                                 $idEntConcernees[] = $e['id'];
  1963.                             }
  1964.                         }
  1965.                     }
  1966.                 }
  1967.             }
  1968.         }
  1969.         return $this->json($idEntConcernees);
  1970.     }
  1971.     public function listEntrepreneursFincapeAction(Request $request): Response
  1972.     {
  1973.         $list $request->get('list');
  1974.         $queryEnt 'SELECT u.nom, u.prenom, e.identrepreneur FROM entrepreneur e, utilisateur u
  1975.                 WHERE e.idutilisateur=u.id AND u.id IN (' $list ') ORDER BY u.nom, u.prenom';
  1976.         $ent $this->db->fetchAllAssociative($queryEnt);
  1977.         $html '    <div class="modal-header">
  1978.                         <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  1979.                         <h4><i class="fa fa-graduation-cap"></i>Liste des entrepreneurs concernés</h4>
  1980.                     </div>';
  1981.         $html .= '<div class="modal-body sidebar-inner scrollable-sidebar">';
  1982.         $arrayIds '';
  1983.         foreach ($ent as $e) {
  1984.             if ($arrayIds != '') {
  1985.                 $arrayIds .= ',' $e['identrepreneur'];
  1986.             } else {
  1987.                 $arrayIds .= $e['identrepreneur'];
  1988.             }
  1989.             $html .= '<div class="group group-1">';
  1990.             $url $this->generateUrl('admin_entrepreneur_edit', ['id' => $e['identrepreneur']]);
  1991.             $html .= '<a href="' $url '" ><h4 style="padding-left:10px;">' $e['nom'] . ' ' $e['prenom'] . '</h4></a>';
  1992.             $html .= '</div>';
  1993.         }
  1994.         $urlExport $this->generateUrl('admin_entrepreneurs_export', ['ids' => $arrayIds]);
  1995.         $html .= '<div class="padding-md clearfix text-center">';
  1996.         $html .= '<a class="btn btn-info pull-right" style="padding:4px 7px;" data-placement="left" data-toggle="tooltip" data-original-title="Exporter les entrepreneurs" href="' $urlExport '">';
  1997.         $html .= '<i class="fa fa-arrow-circle-o-down fa-2x"></i>';
  1998.         $html .= '</a>';
  1999.         $html .= '</div>';
  2000.         $html .= '</div>';
  2001.         $response = new Response();
  2002.         $response->setContent($html);
  2003.         $response->headers->set('Content-Type''text/plain');
  2004.         return $response;
  2005.     }
  2006.     public function pageMentionsAction(Request $request): Response
  2007.     {
  2008.         return $this->render('Admin/Default/mentionsLegales.html.twig', []);
  2009.     }
  2010.     public function changePassFormAction(Request $request): Response
  2011.     {
  2012.         return $this->render('Admin/Default/changePassForm.html.twig', []);
  2013.     }
  2014.     public function changePassSaveAction(Request $requestUserPasswordHasherInterface $passwordHasher): Response
  2015.     {
  2016.         $utilisateur $this->getUser();
  2017.         $utilisateur->setSalt(md5(uniqid(''true)));
  2018.         $password $passwordHasher->hashPassword($utilisateur$_REQUEST['newpass']);
  2019.         $utilisateur->setPassword($password);
  2020.         $this->em->persist($utilisateur);
  2021.         $this->em->flush();
  2022.         return $this->json('ok');
  2023.     }
  2024.     /**
  2025.      * Permet de tester l'envoi d'un simple mail
  2026.      *
  2027.      * @param  MailerInterface $mailer
  2028.      * @return Response
  2029.      */
  2030.     public function testMailAction(MailerInterface $mailer): Response
  2031.     {
  2032.         $debug $this->getParameter('kernel.debug');
  2033.         if ($debug) {
  2034.             $to 'mathieu@mapyourdream.com';
  2035.             $messagemail = (new TemplatedEmail())
  2036.                 ->to($to)
  2037.                 ->subject("UCE : Test d'envoi de Mail")
  2038.                 ->htmlTemplate('Admin/Mail/mailTest.html.twig');
  2039.             $content 'Send OK';
  2040.             try {
  2041.                 $mailer->send($messagemail);
  2042.             } catch (\Exception $e) {
  2043.                 $content 'Send KO : ' $e->getMessage();
  2044.             }
  2045.             $textResponse = new Response($content200);
  2046.             $textResponse->headers->set('Content-Type''text/plain');
  2047.             return $textResponse;
  2048.         }
  2049.         $textResponse = new Response('Vous n\'avez pas accès à cette page.'403);
  2050.         $textResponse->headers->set('Content-Type''text/plain');
  2051.         return $textResponse;
  2052.     }
  2053. }