<?php
namespace App\Controller\Backoffice;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Session\Session;
use Doctrine\Persistence\ManagerRegistry;
use Symfony\Component\String\Slugger\SluggerInterface;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Crypto\DkimSigner;
use Symfony\Component\Mime\Email;
use Symfony\Component\Mime\Address;
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
use Knp\Snappy\Pdf;
use App\Service\Utils;
use App\Service\EvenementInfo;
use App\Entity\Utilisateur;
use App\Entity\Evenement;
use App\Entity\EvenementIntervenant;
use App\Entity\Reponse;
use App\Entity\Message;
use App\Entity\Envoi;
use App\Entity\Intervenant;
use App\Entity\Programme;
use App\Entity\Inscription;
use App\Entity\Galerie;
use App\Entity\Question;
use App\Entity\Contact;
use App\Form\EvenementType;
use App\Form\MessageType;
use DateTime;
use SebastianBergmann\CodeCoverage\Report\Xml\Report;
/**
* @Route("/adminpvmc/evenement", name="app_")
*/
class EvenementController extends AbstractController
{
private $doctrine;
private $slugger;
private $mailer;
public function __construct(ManagerRegistry $doctrine, MailerInterface $mailer, SluggerInterface $slugger)
{
$this->doctrine = $doctrine;
$this->slugger = $slugger;
$this->mailer = $mailer;
}
/**
* @Route("/", name="evenements")
*/
public function evenements(): Response
{
$evenements = $this->doctrine->getRepository(Evenement::class)->findBy(
[],
["date" => "DESC"]
);
return $this->render('application/evenements.html.twig', [
'evenements' => $evenements
]);
}
/**
* @Route("/{idevenement<\d+>}", name="evenement")
*/
public function evenement(int $idevenement, Request $request, SluggerInterface $slugger, Utils $serviceUtils): Response
{
$evenement = $this->doctrine->getRepository(Evenement::class)->find($idevenement);
if(!$evenement) {
$evenement = new Evenement;
}
$form = $this->createForm(EvenementType::class, $evenement);
if($request->request->get('entree_id') !== null
&& $request->request->get('entree_titre') != ""
&& $request->request->get('entree_debut') != ""
) {
if($request->request->get('entree_id')) {
$programme = $this->doctrine->getRepository(Programme::class)->find($request->request->get('entree_id'));
} else {
$programme = new Programme;
}
$programme->setEvenement($evenement);
$programme->setHeureDebut(Datetime::createFromFormat('H:i', $request->request->get('entree_debut')));
if($request->request->get('entree_fin') == "") {
$programme->setHeureFin(null);
} else {
$programme->setHeureFin(Datetime::createFromFormat('H:i', $request->request->get('entree_fin')));
}
$programme->setJour(Datetime::createFromFormat('Y-m-d', $request->request->get('entree_jour')));
$programme->setTitre( $request->request->get('entree_titre') );
$programme->setChapo( $request->request->get('entree_chapo') );
$programme->setTexte( $request->request->get('entree_texte') );
$em = $this->doctrine->getManager();
$em->persist($programme);
$em->flush();
return $this->redirectToRoute('app_evenement', ['idevenement' => $evenement->getId()]);
}
// Ajoute / Modif du titre de la evenement
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$evenement = $form->getData();
if($evenement->getUtilisateur() == null) {
$evenement->setUtilisateur( $this->getUser() );
}
$toUpload = ["infoPratiqueMap", "bandeau", "bandeauFond", "vignette", "emailImage"];
foreach ($toUpload as $file) {
// Upload des images
$map = $form->get($file)->getData();
if ($map) {
$originalFilename = pathinfo($map->getClientOriginalName(), PATHINFO_FILENAME);
$safeFilename = $slugger->slug($originalFilename);
$newFilename = $safeFilename.'-'.uniqid().'.'.$map->guessExtension();
if(!is_dir($this->getParameter('folder.uploadsite'))) {
mkdir($this->getParameter('folder.uploadsite'), 0775);
}
try {
$map->move(
$this->getParameter('folder.uploadsite'),
$newFilename
);
} catch (FileException $e) {
}
$method = "set".ucfirst($file);
if(method_exists($evenement, $method)) {
$evenement->{$method}($newFilename);
}
}
}
// Enregistre l'évènement en base
$em = $this->doctrine->getManager();
$em->persist($evenement);
$em->flush();
// Message FLash
$session = new Session();
$session->getFlashBag()->add(
'success',
'L\'événement '.$evenement->getTitre().' a bien été ajouté/modifié.'
);
return $this->redirectToRoute('app_evenement', ['idevenement' => $evenement->getId()]);
}
// Calcul des stats
$stats = [];
foreach($evenement->getMessages() as $message) {
$stats[$message->getId()] = ["nonenvoyes" => 0, "envoyes" => 0, "ouverts" => 0];
foreach($message->getEnvois() as $envoi) {
if($envoi->getDateEnvoi() == null) {
$stats[$message->getId()]["nonenvoyes"]++;
} else {
$stats[$message->getId()]["envoyes"]++;
if($envoi->getDateOuverture() != null) $stats[$message->getId()]["ouverts"]++;
}
}
}
// Stats mail pour inscrits
$statInscrits = [
"total" => count($evenement->getInscriptions()),
"recap" => 0,
"satisfaction" => 0,
];
foreach ($evenement->getInscriptions() as $inscription) {
if($inscription->getEnvoiRecap() !== null) {
$statInscrits['recap']++;
}
if($inscription->getEnvoiSatisfaction() !== null) {
$statInscrits['satisfaction']++;
}
}
// Questionnaires de statisfaction
$reponses = [];
if($evenement->getId() !== null) {
$satisfaction = $this->doctrine->getRepository(Reponse::class)->getSatisfactionForEvent($evenement);
foreach($satisfaction as $reponse) {
$keyQuestion = $reponse->getQuestion()->getOrdre()."_".$reponse->getQuestion()->getId();
$reponses[$keyQuestion]["question"] = $reponse->getQuestion();
$reponses[$keyQuestion]["liste"][] = $reponse;
if($reponse->getQuestion()->getType() == "note4") {
if( !isset($reponses[$keyQuestion]["notes"][$reponse->getContenu()]) ) {
$reponses[$keyQuestion]["notes"][$reponse->getContenu()] = 1;
} else {
$reponses[$keyQuestion]["notes"][$reponse->getContenu()]++;
}
ksort( $reponses[$keyQuestion]["notes"] );
}
if($reponse->getQuestion()->getType() == "radio" || $reponse->getQuestion()->getType() == "checkbox") {
// Si c'est une question QCM, on augmente le nombre pour la réponse 1, 2, 3 ou 4
for($i=1; $i<=4; $i++) {
if($reponse->getContenu() == $reponse->getQuestion()->{"getReponse".$i}()) {
if(!isset($reponses[$keyQuestion]["detail"]["reponse".$i])) $reponses[$keyQuestion]["detail"]["reponse".$i] = 0;
$reponses[$keyQuestion]["detail"]["reponse".$i]++;
}
}
}
// compteur du nombre total de réponse
if(!isset($reponses[$keyQuestion]["compteur"])) $reponses[$keyQuestion]["compteur"]=0;
$reponses[$keyQuestion]["compteur"]++;
}
}
// Gestion du questionnaire
if( $request->request->get('questionnaire') ) {
if($request->request->get('questionnaire')['id_modif'] != "") {
// Modif d'une question
$question = $this->doctrine->getRepository(Question::class)->find($request->request->get('questionnaire')['id_modif']);
$ordre = $question->getOrdre();
} else {
// AJout d'une question
$questionLast = $this->doctrine->getRepository(Question::class)->findBy(
['evenement'=> $evenement],
['ordre' => 'DESC'],
1
);
$ordre = 1;
if($questionLast && count($questionLast)) {
$ordre = $questionLast[0]->getOrdre() +1;
}
$question = new Question;
}
if($request->request->get('questionnaire')['type'] == "radio") {
$question->setReponse1( $request->request->get('questionnaire')['qcm_1'] );
$question->setReponse2( $request->request->get('questionnaire')['qcm_2'] );
$question->setReponse3( $request->request->get('questionnaire')['qcm_3'] );
$question->setReponse4( $request->request->get('questionnaire')['qcm_4'] );
}
$question->setIntitule($request->request->get('questionnaire')['question']);
$question->setEvenement($evenement);
$question->setOrdre($ordre);
$question->setType($request->request->get('questionnaire')['type']);
$em = $this->doctrine->getManager();
$em->persist($question);
$em->flush();
}
$galerie = null;
$questionnaire = null;
$participants = null;
if($evenement) {
$galerie = $this->doctrine->getRepository(Galerie::class)->findBy(
['evenement'=> $evenement],
['ordre' => 'ASC']
);
$questionnaire = $this->doctrine->getRepository(Question::class)->findBy(
['evenement'=> $evenement],
['ordre' => 'ASC']
);
// Récup du nombre de participants
$participants = $this->doctrine->getRepository(Inscription::class)->findBy(
[
'evenement' => $evenement,
'participation' => true
],
[]
);
}
return $this->renderForm('application/evenement.html.twig', [
'form' => $form,
'stats' => $stats,
'statInscrits' => $statInscrits,
'participants' => $participants,
'evenement' => $evenement,
'galerie' => $galerie,
'questionnaire' => $questionnaire,
'reponses' => $reponses,
'intervenantsDispo' => $this->doctrine->getRepository(Intervenant::class)->findBy([], ['nom' => 'ASC']),
'intervenantsEvt' => $this->doctrine->getRepository(EvenementIntervenant::class)->findBy(['evenement' => $evenement]),
]);
}
/**
* @Route("/envoimaj-{idevenement<\d+>}", name="evenement_envoimaj")
*/
public function evenementEnvoimaj(int $idevenement): Response
{
$evenement = $this->doctrine->getRepository(Evenement::class)->find($idevenement);
$em = $this->doctrine->getManager();
///////// Mise à jour des envois
$envoiProgrammes = $this->doctrine->getRepository(Envoi::class)->findForEvent($evenement);
$idContactProgrammes = [];
foreach($envoiProgrammes as $envoi) {
if(!in_array($envoi->getContact()->getId(), $idContactProgrammes)) {
$idContactProgrammes[] = $envoi->getContact()->getId();
}
}
$now = new \DateTime();
$now = intval( $now->format('Ymd') );
foreach($evenement->getListe() as $liste) {
foreach($liste->getContacts() as $contact) {
// Pour chaque contact, ajoute un envoi par message
if(!in_array($contact->getId(), $idContactProgrammes) && !$contact->isDesactiver()) {
foreach($evenement->getMessages() as $message) {
$prog = intval( $message->getDateEnvoi()->format('Ymd') );
if($now-$prog <= 2
&& $message->getType() != "j-1"
&& $message->getType() != "j+1"
&& $message->getType() != "confirmation"
&& $message->getType() != ""
) {
// N'ajoute pas l'envoi sur la date du message est dépassée de 2 jours
$envoi = new Envoi;
$envoi->setProg($message->getDateEnvoi());
$envoi->setContact($contact);
$envoi->setMessage($message);
$em->persist($envoi);
}
if(
$now-$prog > 2
&& $message->getType() == "invitation"
&& $now < intval($evenement->getDate()->format('Ymd'))
) {
$envoi = new Envoi;
$envoi->setProg(new \DateTime);
$envoi->setContact($contact);
$envoi->setMessage($message);
$em->persist($envoi);
}
}
}
// Supprime de la liste des envois programmés
$position = array_search($contact->getId(), $idContactProgrammes);
if($position !== false) {
unset($idContactProgrammes[$position]);
}
}
}
// Supprime les envois programmé, non envoyés, dans les listes non sélectionnées
foreach($evenement->getMessages() as $message) {
foreach($idContactProgrammes as $idContact) {
$envois = $this->doctrine->getRepository(Envoi::class)->findNonEnvoyes($idContact, $message);
foreach($envois as $envoi) {
$em->remove($envoi);
}
}
}
$em->flush();
// Message FLash
$session = new Session();
$session->getFlashBag()->add(
'success',
'Les envois de l\'événement '.$evenement->getTitre().' ont été mis à jour.'
);
return $this->redirectToRoute('app_evenement', ['idevenement' => $idevenement]);
}
/**
* @Route("/exportsatisfaction-{idevenement<\d+>}", name="exportsatisfaction")
*/
public function exportsatisfaction(int $idevenement): Response
{
$evenement = $this->doctrine->getRepository(Evenement::class)->find($idevenement);
$spreadsheet = new Spreadsheet();
$spreadsheet->getProperties()->setCreator($this->getUser()->getPrenom()." ".$this->getUser()->getNom())
->setLastModifiedBy($this->getUser()->getPrenom()." ".$this->getUser()->getNom())
->setTitle('['.date('d-m-Y').'] - Satisfaction '.$evenement->getTitre())
->setSubject('['.date('d-m-Y').'] - Satisfaction '.$evenement->getTitre())
->setDescription('Export des questionnaires')
;
$reponses = [];
$satisfaction = $this->doctrine->getRepository(Reponse::class)->getSatisfactionForEvent($evenement);
foreach($satisfaction as $reponse) {
$keyQuestion = $reponse->getQuestion()->getOrdre()."_".$reponse->getQuestion()->getId();
$reponses[$keyQuestion]["question"] = $reponse->getQuestion();
$reponses[$keyQuestion]["liste"][] = $reponse;
if($reponse->getQuestion()->getType() == "note4") {
if( !isset($reponses[$keyQuestion]["notes"][$reponse->getContenu()]) ) {
$reponses[$keyQuestion]["notes"][$reponse->getContenu()] = 1;
} else {
$reponses[$keyQuestion]["notes"][$reponse->getContenu()]++;
}
ksort( $reponses[$keyQuestion]["notes"] );
}
if($reponse->getQuestion()->getType() == "radio" || $reponse->getQuestion()->getType() == "checkbox") {
// Si c'est une question QCM, on augmente le nombre pour la réponse 1, 2, 3 ou 4
for($i=1; $i<=4; $i++) {
if($reponse->getContenu() == $reponse->getQuestion()->{"getReponse".$i}()) {
if(!isset($reponses[$keyQuestion]["detail"]["reponse".$i])) $reponses[$keyQuestion]["detail"]["reponse".$i] = 0;
$reponses[$keyQuestion]["detail"]["reponse".$i]++;
}
}
}
// compteur du nombre total de réponse
if(!isset($reponses[$keyQuestion]["compteur"])) $reponses[$keyQuestion]["compteur"]=0;
$reponses[$keyQuestion]["compteur"]++;
}
// Créé la worksheet de récap
$newWorksheet = new Worksheet($spreadsheet, "RECAP");
$spreadsheet->addSheet($newWorksheet, 0);
$spreadsheet->setActiveSheetIndexByName("RECAP");
$indexLine = 1;
foreach ($reponses as $key => $current) {
$spreadsheet->getActiveSheet()->setCellValue( 'A'.$indexLine+1, $current['question']->getIntitule());
if($current['question']->getType() == "note4") {
$spreadsheet->getActiveSheet()->setCellValue( 'B'.$indexLine, "1 étoile");
$spreadsheet->getActiveSheet()->setCellValue( 'C'.$indexLine, "2 étoiles");
$spreadsheet->getActiveSheet()->setCellValue( 'D'.$indexLine, "3 étoiles");
$spreadsheet->getActiveSheet()->setCellValue( 'E'.$indexLine, "4 étoiles");
$spreadsheet->getActiveSheet()->setCellValue( 'F'.$indexLine, "TOTAL");
$spreadsheet->getActiveSheet()->setCellValue( 'B'.$indexLine+1, isset($current['notes'][1]) ? $current['notes'][1] : 0);
$spreadsheet->getActiveSheet()->setCellValue( 'C'.$indexLine+1, isset($current['notes'][2]) ? $current['notes'][2] : 0);
$spreadsheet->getActiveSheet()->setCellValue( 'D'.$indexLine+1, isset($current['notes'][3]) ? $current['notes'][3] : 0);
$spreadsheet->getActiveSheet()->setCellValue( 'E'.$indexLine+1, isset($current['notes'][4]) ? $current['notes'][4] : 0);
$spreadsheet->getActiveSheet()->setCellValue( 'F'.$indexLine+1, $current['compteur']);
$indexLine += 3;
}
if($current['question']->getType() == "text") {
$indexLine ++;
foreach ($current['liste'] as $value) {
if($value->getContenu() != "") {
$spreadsheet->getActiveSheet()->setCellValue( 'B'.$indexLine, $value->getContenu() );
$indexLine ++;
}
}
$indexLine ++;
}
}
$currentQuestion = 1;
foreach ($reponses as $key => $current) {
// Créé la worksheet de la question
$newWorksheet = new Worksheet($spreadsheet, "QUESTION ".$currentQuestion);
$spreadsheet->addSheet($newWorksheet, $currentQuestion);
$spreadsheet->setActiveSheetIndexByName("QUESTION ".$currentQuestion);
$indexLine = 1;
$spreadsheet->getActiveSheet()->setCellValue( 'A'.$indexLine, $current['question']->getIntitule());
$indexLine += 2;
if( $current['question']->getType() == "note4") {
$spreadsheet->getActiveSheet()->setCellValue( 'A'.$indexLine, "NOTE");
$spreadsheet->getActiveSheet()->setCellValue( 'B'.$indexLine, "COMMENTAIRE");
$spreadsheet->getActiveSheet()->setCellValue( 'C'.$indexLine, "NOM");
$spreadsheet->getActiveSheet()->setCellValue( 'D'.$indexLine, "PRENOM");
$indexLine++;
}
if( $current['question']->getType() == "text") {
$spreadsheet->getActiveSheet()->setCellValue( 'A'.$indexLine, "COMMENTAIRE");
$spreadsheet->getActiveSheet()->setCellValue( 'B'.$indexLine, "NOM");
$spreadsheet->getActiveSheet()->setCellValue( 'C'.$indexLine, "PRENOM");
$indexLine++;
}
foreach($current['liste'] as $reponse) {
if( $current['question']->getType() == "note4") {
$spreadsheet->getActiveSheet()->setCellValue( 'A'.$indexLine, $reponse->getContenu());
$spreadsheet->getActiveSheet()->setCellValue( 'B'.$indexLine, ($reponse->getCommentaire()!=null ? $reponse->getCommentaire() :'') );
$spreadsheet->getActiveSheet()->setCellValue( 'C'.$indexLine, $reponse->getContact()->getNom());
$spreadsheet->getActiveSheet()->setCellValue( 'D'.$indexLine, $reponse->getContact()->getPrenom());
} elseif( $current['question']->getType() == "text") {
$spreadsheet->getActiveSheet()->setCellValue( 'A'.$indexLine, $reponse->getContenu() );
$spreadsheet->getActiveSheet()->setCellValue( 'B'.$indexLine, $reponse->getContact()->getNom());
$spreadsheet->getActiveSheet()->setCellValue( 'C'.$indexLine, $reponse->getContact()->getPrenom());
}
$indexLine++;
}
$currentQuestion++;
}
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
ob_start();
$writer->save('php://output');
$content = ob_get_clean();
$response = new Response();
$response->setStatusCode(200);
$response->setContent($content);
$response->headers->set('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/force-download');
$response->headers->set('Content-Disposition','attachment; filename=Export-'.date('Y-m-d-His').'.xlsx');
return $response;
// $newWorksheet = new Worksheet($spreadsheet, 'EPREUVE '.$epreuve['numero']);
// $spreadsheet->addSheet($newWorksheet, intval($epreuve['id']));
}
/**
* @Route("/exportinscription-{idevenement<\d+>}", name="exportinscription")
*/
public function exportinscription(int $idevenement): Response
{
$evenement = $this->doctrine->getRepository(Evenement::class)->find($idevenement);
$spreadsheet = new Spreadsheet();
$spreadsheet->getProperties()->setCreator($this->getUser()->getPrenom()." ".$this->getUser()->getNom())
->setLastModifiedBy($this->getUser()->getPrenom()." ".$this->getUser()->getNom())
->setTitle('['.date('d-m-Y').'] - Inscriptions '.$evenement->getTitre())
->setSubject('['.date('d-m-Y').'] - Inscriptions '.$evenement->getTitre())
->setDescription('Export des inscriptions')
;
$spreadsheet->setActiveSheetIndex(0)
->setCellValue('A1', 'Nom')
->setCellValue('B1', 'Prénom')
->setCellValue('C1', 'Email')
->setCellValue('D1', 'Entité')
->setCellValue('E1', 'Fonction')
->setCellValue('F1', 'Date d\'inscription')
->setCellValue('G1', 'Message d\'origine')
->setCellValue('H1', 'Hébergement')
->setCellValue('I1', 'Droit à l\'image')
->setCellValue('J1', 'Invitant - Nom')
->setCellValue('K1', 'Invitant - Prénom')
->setCellValue('L1', 'Invitant - Email')
->setCellValue('M1', 'Invitant - Territoire')
->setCellValue('N1', 'Invitant - Agence')
->setCellValue('O1', 'Statut')
;
if($idevenement== 5) {
$spreadsheet->setActiveSheetIndex(0)
->setCellValue('P1', 'Intégralité de l\'événement')
->setCellValue('Q1', 'Visite uniquement')
->setCellValue('R1', 'Navette')
->setCellValue('S1', 'Uniquement 22 février')
;
}
if($idevenement== 7) {
$spreadsheet->setActiveSheetIndex(0)
->setCellValue('P1', 'Nom de l\'invité')
->setCellValue('Q1', 'Préom de l\'invité')
;
}
$i = 2;
foreach ($evenement->getInscriptions() as $inscription) {
$spreadsheet->setActiveSheetIndex(0)
->setCellValue('A'.$i, $inscription->getContact()->getNom())
->setCellValue('B'.$i, $inscription->getContact()->getPrenom())
->setCellValue('C'.$i, $inscription->getContact()->getEmail())
->setCellValue('D'.$i, $inscription->getContact()->getSociete()!= null ? $inscription->getContact()->getSociete() : '')
->setCellValue('E'.$i, $inscription->getContact()->getFonction()!= null ? $inscription->getContact()->getFonction() : '')
->setCellValue('F'.$i, $inscription->getDateInscription()->format('d-m-Y H:i'))
->setCellValue('G'.$i, $inscription->getMessage()!= null ? ucfirst($inscription->getMessage()->getType()) : '')
->setCellValue('H'.$i, $inscription->isHebergement() == true ? 'Oui' : 'Non')
->setCellValue('I'.$i, $inscription->isAccordImage() == true ? 'Oui' : 'Non')
->setCellValue('J'.$i, $inscription->getContact()->getInvitantNom()!= null ? $inscription->getContact()->getInvitantNom() : '')
->setCellValue('K'.$i, $inscription->getContact()->getInvitantPrenom()!= null ? $inscription->getContact()->getInvitantPrenom() : '')
->setCellValue('L'.$i, $inscription->getContact()->getInvitantEmail()!= null ? $inscription->getContact()->getInvitantEmail() : '')
->setCellValue('M'.$i, $inscription->getContact()->getInvitantTerritoire()!= null ? $inscription->getContact()->getInvitantTerritoire() : '')
->setCellValue('N'.$i, $inscription->getContact()->getInvitantAgence()!= null ? $inscription->getContact()->getInvitantAgence() : '')
->setCellValue('O'.$i, $inscription->isParticipation() ? 'PARTICIPANT' : 'Inscrit')
;
if($idevenement== 5) {
$spreadsheet->setActiveSheetIndex(0)
->setCellValue('P'.$i, $inscription->isIntegralite() == true ? 'Oui' : 'Non' )
->setCellValue('Q'.$i, $inscription->isVisite() == true ? 'Oui' : 'Non' )
->setCellValue('R'.$i, $inscription->isNavette() == true ? 'Oui' : 'Non' )
->setCellValue('S'.$i, $inscription->isDeuxieme() == true ? 'Oui' : 'Non' )
;
}
if($idevenement== 7) {
$spreadsheet->setActiveSheetIndex(0)
->setCellValue('P'.$i, $inscription->getInviteNom() != null ? $inscription->getInviteNom() : '' )
->setCellValue('Q'.$i, $inscription->getInvitePrenom() != null ? $inscription->getInvitePrenom() : '' )
;
}
$i++;
}
if($idevenement== 7) {
$spreadsheet->setActiveSheetIndex(0)->removeColumn('H', 1);
}
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
ob_start();
$writer->save('php://output');
$content = ob_get_clean();
$response = new Response();
$response->setStatusCode(200);
$response->setContent($content);
$response->headers->set('Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/force-download');
$response->headers->set('Content-Disposition','attachment; filename=Export-'.date('Y-m-d-His').'.xlsx');
return $response;
}
/**
* @Route("/supprimer-donneesperso-{idevenement<\d+>}-{hash}", name="supprimer_donneesperso")
*/
public function supprimerDonneesperso(int $idevenement, string $hash): Response
{
if($hash == sha1($idevenement.$this->getParameter('app.salt'))) {
$evenement = $this->doctrine->getRepository(Evenement::class)->find($idevenement);
$satisfaction = $this->doctrine->getRepository(Reponse::class)->getSatisfactionForEvent($evenement);
$em = $this->doctrine->getManager();
// Suppression des réponses de questionnaire de satisfaction
foreach($satisfaction as $reponse) {
$reponse->setInscription(null);
$reponse->setContact(null);
$em->persist($reponse);
}
// Suppression des réponses de questionnaire de satisfaction
foreach($evenement->getInscriptions() as $inscription) {
$em->remove($inscription);
}
// Suppression des contacts dans les listes de contact
foreach($evenement->getListe() as $liste) {
foreach ($liste->getContacts() as $contact) {
foreach ($contact->getEnvois() as $envoi) {
$em->remove($envoi);
}
foreach ($contact->getInscriptions() as $inscr) {
$em->remove($inscr);
}
$em->remove($contact);
}
}
$em->flush();
return $this->redirectToRoute('app_evenement', ['idevenement' => $idevenement]);
}
return $this->redirectToRoute('app_evenements');
}
/**
* @Route("/message/{idmessage<\d+>}", name="message")
*/
public function message(int $idmessage, Request $request, SluggerInterface $slugger): Response
{
$message = $this->doctrine->getRepository(Message::class)->find($idmessage);
if(!$message) $message = new Evenement;
$form = $this->createForm(MessageType::class, $message);
// Ajoute / Modif un message
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$message = $form->getData();
$date = $message->getDateEnvoi();
if($date->format('Hi') == '0000') {
$date->modify('+ 9 hours');
$message->setDateEnvoi($date);
}
// Upload de la pièce jointe
$map = $form->get('piecejointe')->getData();
if ($map) {
$originalFilename = pathinfo($map->getClientOriginalName(), PATHINFO_FILENAME);
$safeFilename = $slugger->slug($originalFilename);
$newFilename = $safeFilename.'.'.$map->guessExtension();
if(!is_dir($this->getParameter('folder.uploadsite'))) {
mkdir($this->getParameter('folder.uploadsite'), 0775);
}
try {
$map->move(
$this->getParameter('folder.uploadsite'),
$newFilename
);
} catch (FileException $e) {
}
$message->setPiecejointe($newFilename);
}
$em = $this->doctrine->getManager();
$em->persist($message);
$em->flush();
// Mets à jour les dates des envois du message
$envois = $this->doctrine->getRepository(Envoi::class)->findBy(
[
'message' => $message,
'dateEnvoi' => null
]
);
if( $message->getType() != "j-1"
&& $message->getType() != "j+1"
&& $message->getType() != "confirmation"
) {
foreach($envois as $envoi) {
$envoi->setProg($message->getDateEnvoi());
$em->persist($envoi);
}
} else {
foreach($envois as $envoi) {
$em->remove($envoi);
}
}
$em->flush();
// Message FLash
$session = new Session();
$session->getFlashBag()->add(
'success',
'Le message '.$message->getObjet().' a bien été ajouté/modifié.'
);
return $this->redirectToRoute('app_message', ['idmessage' => $message->getId()]);
}
return $this->renderForm('application/message.html.twig', [
'form' => $form,
'message' => $message,
]);
}
/**
* @Route("/creationmessage-{idevenement<\d+>}", name="evenement_creationmessage")
*/
public function evenementCreationmessage(int $idevenement): Response
{
$evenement = $this->doctrine->getRepository(Evenement::class)->find($idevenement);
$dateEvt = clone $evenement->getDate();
$dateInvit = clone $dateEvt;
$dateInvit->modify('- 10 days');
try {
$idmessage = $this->createMessage('relance', 'Plus Vert Moins Cher : Comment faire ?', 'Texte Invitation', $dateInvit, $evenement);
// Message FLash
$session = new Session();
$session->getFlashBag()->add(
'success',
'Nouveau message ajouté. Vous pouvez dès maintenant le configurer.'
);
return $this->redirectToRoute('app_message', ['idmessage' => $idmessage]);
} catch (\Throwable $th) {
throw $this->createNotFoundException('Problème à la création de l\'événement', $th);
}
return $this->redirectToRoute('app_evenement', ['idevenement' => $evenement->getId()]);
}
/**
* @Route("/creationparcours-{idevenement<\d+>}", name="evenement_creationparcours")
*/
public function evenementCreationparcours(int $idevenement): Response
{
$evenement = $this->doctrine->getRepository(Evenement::class)->find($idevenement);
$dateEvt = clone $evenement->getDate();
// Création de l'entrée INVITATION
$dateInvit = clone $dateEvt;
$dateInvit->modify('- 30 days');
$dateInvit->modify('+ 9 hours');
try {
$this->createMessage('invitation', '[INVITATION] Plus Vert Moins Cher : Comment faire ?', 'Texte Invitation', $dateInvit, $evenement);
} catch (\Throwable $th) {
throw $this->createNotFoundException('Problème à la création de l\'événement', $th);
}
// Création de l'entrée RELANCE 1
$dateInvit = clone $dateEvt;
$dateInvit->modify('- 15 days');
$dateInvit->modify('+ 9 hours');
try {
$this->createMessage('relance', '[INVITATION] Plus Vert Moins Cher : Comment faire ?', 'Texte relance 1', $dateInvit, $evenement);
} catch (\Throwable $th) {
throw $this->createNotFoundException('Problème à la création de l\'événement', $th);
}
// Création de l'entrée J-1
$dateInvit = clone $dateEvt;
$dateInvit->modify('- 1 day');
$dateInvit->modify('+ 9 hours');
try {
$this->createMessage('j-1', '[J-1] Plus Vert Moins Cher : Comment faire ?', 'Texte J-1', $dateInvit, $evenement);
} catch (\Throwable $th) {
throw $this->createNotFoundException('Problème à la création de l\'événement', $th);
}
// Création de l'entrée J+1
$dateInvit = clone $dateEvt;
$dateInvit->modify('+ 1 day');
$dateInvit->modify('+ 9 hours');
try {
$this->createMessage('j+1', '[J+1] Plus Vert Moins Cher : Comment faire ?', 'Texte J+1', $dateInvit, $evenement);
} catch (\Throwable $th) {
throw $this->createNotFoundException('Problème à la création de l\'événement', $th);
}
// Création de l'entrée J-1
$dateInvit = clone $dateEvt;
$dateInvit->modify('- 1 day');
$dateInvit->modify('+ 9 hours');
try {
$this->createMessage('confirmation', '[CONFIRMATION] Plus Vert Moins Cher : Comment faire ?', 'Texte confirmation', $dateInvit, $evenement);
} catch (\Throwable $th) {
throw $this->createNotFoundException('Problème à la création de l\'événement', $th);
}
return $this->redirectToRoute('app_evenement', ['idevenement' => $evenement->getId()]);
}
/**
* @Route("/suppr-{idmessage<\d+>}", name="message_suppr")
*/
public function evenementSuppr(int $idmessage): Response
{
$message = $this->doctrine->getRepository(Message::class)->find($idmessage);
$idevenement = $message->getEvenement()->getId();
$em = $this->doctrine->getManager();
$em->remove($message);
$em->flush();
return $this->redirectToRoute('app_evenement', ['idevenement' => $idevenement]);
}
/**
* @Route("/supprinscription-{idinscription<\d+>}", name="inscription_suppr")
*/
public function inscriptionSuppr(int $idinscription): Response
{
$inscription = $this->doctrine->getRepository(Inscription::class)->find($idinscription);
$idevenement = $inscription->getEvenement()->getId();
if($inscription) {
$em = $this->doctrine->getManager();
$em->remove($inscription);
$em->flush();
}
return $this->redirectToRoute('app_evenement', ['idevenement' => $idevenement]);
}
private function createMessage(string $type, string $objet, string $texte, DateTime $dateEnvoi, Evenement $evenement)
{
$message = new Message;
$message->setType($type);
$message->setObjet($objet);
$message->setTexte($texte);
$message->setTitre("Nouveau message");
$message->setDateEnvoi($dateEnvoi);
$message->setEvenement($evenement);
$em = $this->doctrine->getManager();
$em->persist($message);
$em->flush();
$inscriptionsContactId = [];
foreach ($evenement->getInscriptions() as $inscription) {
$inscriptionsContactId[] = $inscription->getContact()->getId();
}
if($type != "j-1" && $type != "j+1" && $type != "confirmation" && $type != "") {
// Programme les envois de l'événement
foreach($evenement->getListe() as $liste) {
foreach($liste->getContacts() as $contact) {
if( !in_array($contact->getId(), $inscriptionsContactId) and !$contact->isDesactiver() ) {
$envoi = new Envoi;
$envoi->setProg($dateEnvoi);
$envoi->setContact($contact);
$envoi->setMessage($message);
$em->persist($envoi);
}
}
}
$em->flush();
}
return $message->getId();
}
/**
* @Route("/programme-suppr-{idevent<\d+>}-{idprog<\d+>}", name="programme_suppr")
*/
public function programmeSuppr(int $idevent, int $idprog): Response
{
$event = $this->doctrine->getRepository(Evenement::class)->find($idevent);
$programme = $this->doctrine->getRepository(Programme::class)->findOneBy(
[
'id' => $idprog,
'evenement' => $event,
]
);
if($programme) {
$em = $this->doctrine->getManager();
$em->remove($programme);
$em->flush();
}
return $this->redirectToRoute('app_evenement', ['idevenement' => $idevent]);
}
/**
* @Route("/programme-edit", name="programme_edit")
*/
public function programmeEdit(Request $request): Response
{
$programme = $this->doctrine->getRepository(Programme::class)->find($request->request->get('programme'));
$result = [
"id"=>$programme->getId(),
"titre"=>$programme->getTitre(),
"debut"=>$programme->getHeureDebut()->format('H:i'),
];
if($programme->getChapo()) $result["chapo"] = $programme->getChapo();
if($programme->getTexte()) $result["texte"] = $programme->getTexte();
if($programme->getHeureFin()) $result["fin"] = $programme->getHeureFin()->format('H:i');
if($programme->getJour()) $result["jour"] = $programme->getJour()->format('Y-m-d');
return new JsonResponse( $result );
}
/**
* @Route("/galerie-suppr-{idevent<\d+>}", name="galerie_suppr")
*/
public function galerieSuppr(int $idevent, Request $request): Response
{
$galerie = $this->doctrine->getRepository(Galerie::class)->findOneBy(
[
'evenement' => $this->doctrine->getRepository(Evenement::class)->find($idevent),
'id' => $request->request->get('galerie')
]
);
$em = $this->doctrine->getManager();
$em->remove($galerie);
$em->flush();
return new JsonResponse( [$galerie->getId()] );
}
/**
* @Route("/question-suppr-{idevent<\d+>}", name="question_suppr")
*/
public function questionSuppr(int $idevent, Request $request): Response
{
$question = $this->doctrine->getRepository(Question::class)->findOneBy(
[
'evenement' => $this->doctrine->getRepository(Evenement::class)->find($idevent),
'id' => $request->request->get('question')
]
);
$em = $this->doctrine->getManager();
$em->remove($question);
$em->flush();
return new JsonResponse( [] );
}
/**
* @Route("/question-get-{idevent<\d+>}", name="question_get")
*/
public function questionGet(int $idevent, Request $request): Response
{
$question = $this->doctrine->getRepository(Question::class)->findOneBy(
[
'evenement' => $this->doctrine->getRepository(Evenement::class)->find($idevent),
'id' => $request->request->get('question')
]
);
return new JsonResponse( [
'id' => $question->getId(),
'intitule' => $question->getIntitule(),
'type' => $question->getType(),
'reponse1' => $question->getReponse1(),
'reponse2' => $question->getReponse2(),
'reponse3' => $question->getReponse3(),
'reponse4' => $question->getReponse4(),
] );
}
/**
* @Route("/galerie-get-{idevent<\d+>}", name="galerie_get")
*/
public function galerieGet(int $idevent, Request $request): Response
{
$galerie = $this->doctrine->getRepository(Galerie::class)->findOneBy(
[
'evenement' => $this->doctrine->getRepository(Evenement::class)->find($idevent),
'id' => $request->request->get('galerie')
]
);
return new JsonResponse( [
'id' => $galerie->getId(),
'titre' => ($galerie->getTitre() ? $galerie->getTitre() : ''),
'lien' => $galerie->getYoutube(),
] );
}
/**
* @Route("/galerie-set-{idevent<\d+>}", name="galerie_set")
*/
public function galerieSet(int $idevent, Request $request): Response
{
$galerie = $this->doctrine->getRepository(Galerie::class)->findOneBy(
[
'evenement' => $this->doctrine->getRepository(Evenement::class)->find($idevent),
'id' => $request->request->get('galerie')
]
);
if($galerie) {
$galerie->setTitre($request->request->get('titre'))
->setYoutube($request->request->get('lien'));
$em = $this->doctrine->getManager();
$em->persist($galerie);
$em->flush();
}
return new JsonResponse( [true] );
}
/**
* @Route("/galerie-order-{idevent<\d+>}", name="evenement_galerie_order")
*/
public function galerieOrder(int $idevent, Request $request): Response
{
$em = $this->doctrine->getManager();
foreach( $request->request->get('order') as $key=>$item) {
$galerie = $this->doctrine->getRepository(Galerie::class)->find(intval($item));
if($galerie) {
$galerie->setOrdre($key+1);
$em->persist($galerie);
}
}
$em->flush();
return new JsonResponse( true );
}
/**
* @Route("/question-order-{idevent<\d+>}", name="evenement_question_order")
*/
public function questionOrder(int $idevent, Request $request): Response
{
$em = $this->doctrine->getManager();
foreach( $request->request->get('order') as $key=>$item) {
$question = $this->doctrine->getRepository(Question::class)->find(intval($item));
if($question) {
$question->setOrdre($key+1);
$em->persist($question);
}
}
$em->flush();
return new JsonResponse( true );
}
/**
* @Route("/intervenant-ajout-{idevent<\d+>}", name="intervenant_ajout")
*/
public function intervenantAjout(int $idevent, Request $request): Response
{
$intervenant = $this->doctrine->getRepository(Intervenant::class)->find($request->request->get('intervenant'));
$evenement = $this->doctrine->getRepository(Evenement::class)->find($idevent);
$relation = new EvenementIntervenant;
$relation->setEvenement($evenement);
$relation->setIntervenant($intervenant);
$em = $this->doctrine->getManager();
$em->persist($relation);
$em->flush();
return new JsonResponse( [$intervenant->getId(), strtoupper($intervenant->getNom())." ".$intervenant->getPrenom()] );
}
/**
* @Route("/intervenant-suppr-{idevent<\d+>}", name="intervenant_suppr")
*/
public function intervenantSuppr(int $idevent, Request $request): Response
{
$intervenant = $this->doctrine->getRepository(Intervenant::class)->find($request->request->get('intervenant'));
$evenement = $this->doctrine->getRepository(Evenement::class)->find($idevent);
$relation = $this->doctrine->getRepository(EvenementIntervenant::class)->findOneBy(
[
'evenement' => $evenement,
'intervenant' => $intervenant
]
);
$em = $this->doctrine->getManager();
$em->remove($relation);
$em->flush();
return new JsonResponse( [$intervenant->getId(), strtoupper($intervenant->getNom())." ".$intervenant->getPrenom()] );
}
/**
* @Route("/toggle-inscription-{idevent<\d+>}", name="toggle_inscription")
*/
public function toggleInscription(int $idevent, Request $request): Response
{
if($request->request->get('idinscription') !== null) {
// On a passé l'ID de l'inscription en paramêtre
$inscription = $this->doctrine->getRepository(Inscription::class)->findOneBy(
[
'id' => $request->request->get('idinscription'),
'evenement' => $idevent,
],
[]
);
} elseif($request->request->get('idcontact') !== null) {
// On a passé l'ID du contact en paramêtre
$inscription = $this->doctrine->getRepository(Inscription::class)->findOneBy(
[
'contact' => $request->request->get('idcontact'),
'evenement' => $idevent,
],
[]
);
}
if($inscription->isParticipation()) {
$inscription->setParticipation(false);
} else {
$inscription->setParticipation(true);
}
$em = $this->doctrine->getManager();
$em->persist($inscription);
$em->flush();
return new JsonResponse( [
$request->request->get('idinscription'),
$inscription->isParticipation(),
$request->request->get('idcontact')
]
);
}
/**
* @Route("/force-inscription-{idevent<\d+>}", name="force_inscription")
*/
public function forceInscription(int $idevent, EvenementInfo $evtInfo, Request $request): Response
{
$evenement = $this->doctrine->getRepository(Evenement::class)->find( $request->request->get('idevent') );
$contact = $this->doctrine->getRepository(Contact::class)->find( $request->request->get('idcontact') );
$message = null;
$inscription = new Inscription;
$inscription->setDateInscription(new \DateTime);
$inscription->setContact($contact);
$inscription->setMessage($message);
$inscription->setEvenement($evenement);
$inscription->setAccordImage( $request->request->get('droitImage')!=null ? 1 : 0 );
$inscription->setHebergement( $request->request->get('hebergement')!=null ? 1 : 0 );
$inscription->setIntegralite( $request->request->get('integralite')!=null ? 1 : 0 );
$inscription->setVisite( $request->request->get('visite')!=null ? 1 : 0 );
$inscription->setDeuxieme( $request->request->get('deuxieme')!=null ? 1 : 0 );
$inscription->setNavette( $request->request->get('navette')!=null ? 1 : 0 );
$em = $this->doctrine->getManager();
// Supprime les mails programmé pour les relances
try {
if($contact && $message) {
$poubelle = $this->doctrine->getRepository(Envoi::class)->findEnvoiASupprimer($contact, $message->getEvenement());
if($poubelle) {
foreach($poubelle as $envoi) {
$em->remove($envoi);
}
}
}
} catch (\Throwable $th) {
//throw $th;
}
// Envoi du mail de confirmation d'inscription
$confirmation = $this->doctrine->getRepository(Message::class)->findOneBy(
[
'evenement' => $evenement,
'type' => 'confirmation',
]
);
if($confirmation) {
$titre = $this->slugger->slug(strtolower($evenement->getTitre()));
$html = $this->renderView('email/email.html.twig', [
'message' => $confirmation,
'titre' => $titre,
]);
$email = (new Email())
->from(new Address('contact@plusvertmoinscherevent.engie.fr', 'Invitation ENGIE Solutions'))
->subject($confirmation->getObjet())
->replyTo('infos.plusvertmoinscherevent@engie.com')
->to(new Address($contact->getEmail(), $contact->getPrenom().' '.$contact->getNom()))
->html($html)
->text(strip_tags($html))
;
$lastProgramme = $this->doctrine->getRepository(Programme::class)->findBy(
['evenement' => $evenement],
['heureDebut' => 'DESC']
);
if($lastProgramme) {
$fin = $lastProgramme[0]->getHeureDebut();
if( $lastProgramme[0]->getHeureFin() != null ) {
$fin = $lastProgramme[0]->getHeureFin();
}
}
$dateStartEnd = $evtInfo->getStartEndEvt($evenement);
// AJout iCal
$ics = "BEGIN:VCALENDAR\n";
$ics .= "VERSION:2.0\n";
$ics .= "PRODID:-//hacksw/handcal//NONSGML v1.0//EN\n";
$ics .= "BEGIN:VEVENT\n";
$ics .= "X-WR-TIMEZONE:Europe/Paris\n";
$ics .= "DTSTART:".$dateStartEnd['debut']['jour']->format('Ymd')."T".$dateStartEnd['debut']['heure']->format('His')."\n";
$ics .= "DTEND:".$dateStartEnd['fin']['jour']->format('Ymd')."T".$dateStartEnd['fin']['heure']->format('His')."\n";
$ics .= "SUMMARY:".$evenement->getTitre()."\n";
$ics .= "LOCATION:".$evenement->getVille()." - ".($evenement->getLieu()!== null ? $evenement->getLieu() : '')."\n";
$ics .= "ORGANIZER:ENGIE Solutions\n";
$ics .= "DESCRIPTION:".html_entity_decode(strip_tags( str_replace(array("\r", "\n"), '', $evenement->getTexte()) ))."\n";
$ics .= "END:VEVENT\n";
$ics .= "END:VCALENDAR\n";
@unlink($this->getParameter('folder.uploadsite').'pvmc.ics');
$fichier = $this->getParameter('folder.uploadsite').'pvmc.ics';
$f = fopen($fichier, 'w+');
fputs($f, $ics);
$email->attachFromPath($this->getParameter('folder.uploadsite').'pvmc.ics');
$signer = new DkimSigner('file:///'.$this->getParameter('folder.key').'/dkimkey.key', 'plusvertmoinscherevent.engie.fr', 'mail');
$signedEmail = $signer->sign($email);
$this->mailer->send($signedEmail);
}
$em->persist($inscription);
$em->flush();
return new JsonResponse( [
$inscription->getId(),
$inscription->getContact()->getPrenom(),
$inscription->getContact()->getNom(),
$evenement->getId(),
$inscription->getContact()->getId()
]
);
}
/**
* @Route("/reponse-home-{idreponse<\d+>}-{idcontact<\d+>}", name="reponse_home")
*/
public function reponseHome(int $idreponse, int $idcontact): Response
{
$reponse = $this->doctrine->getRepository(Reponse::class)->findOneBy(
["id" => $idreponse, "contact" => $idcontact]
);
if($reponse) {
if($reponse->isHome()) {
$reponse->setHome(0);
} else {
$reponse->setHome(1);
}
$em = $this->doctrine->getManager();
$em->persist($reponse);
$em->flush();
return $this->redirectToRoute('app_evenement', ['idevenement' => $reponse->getInscription()->getEvenement()->getId()]);
}
}
/**
* @Route("/ajax-galerie-img", name="ajax_galerie_img")
*/
public function ajaxGalerieImg(Request $request, Utils $serviceUtils): JsonResponse
{
try {
//$data = json_decode($request->getContent(), true);
$evenement = $this->doctrine->getRepository(Evenement::class)->find($request->request->get('galerieEvent'));
$result = [];
if($request->files->get('galerie') !== null) {
foreach ($request->files->get('galerie')['image'] as $image) {
// Ajout dans la galerie
$originalFilename = pathinfo($image->getClientOriginalName(), PATHINFO_FILENAME);
$safeFilename = $this->slugger->slug($originalFilename);
$newFilename = $safeFilename.'-'.uniqid().'.'.$image->guessExtension();
if(!is_dir($this->getParameter('folder.uploadsite'))) {
mkdir($this->getParameter('folder.uploadsite'), 0775);
}
try {
$exif = exif_read_data($image);
$image->move(
$this->getParameter('folder.uploadsite'),
$newFilename
);
$serviceUtils->resizeImage(
$this->getParameter('folder.uploadsite').$newFilename,
$this->getParameter('folder.uploadsite'),
$newFilename,
["width"=>1000, "height"=>1000]
);
// Gère l'orientation si pris depuis un telephone
if (!empty($exif['Orientation'])) {
$edited = imagecreatefromjpeg($this->getParameter('folder.uploadsite').$newFilename);
switch ($exif['Orientation']) {
case 3:
$image = imagerotate($edited, 180, 0);
break;
case 6:
$image = imagerotate($edited, -90, 0);
break;
case 8:
$image = imagerotate($edited, 90, 0);
break;
default:
$image = imagerotate($edited, 0, 0);
break;
}
imagejpeg($image, $this->getParameter('folder.uploadsite').$newFilename);
}
$serviceUtils->resizeImage(
$this->getParameter('folder.uploadsite').$newFilename,
$this->getParameter('folder.uploadsite'),
'mini_'.$newFilename,
["width"=>180]
);
} catch (FileException $e) {
}
$galerieEvt = $this->doctrine->getRepository(Galerie::class)->findBy(
['evenement'=> $evenement],
['ordre' => 'DESC'],
1
);
$ordre = 1;
if($galerieEvt && count($galerieEvt)) {
$ordre = $galerieEvt[0]->getOrdre() +1;
}
$galerie = new Galerie;
$galerie->setPhoto($newFilename);
// if($request->request->get('galerie')) {
// $galerie->setYoutube($request->request->get('galerie')['youtube']);
// $galerie->setTitre($request->request->get('galerie')['titre']);
// }
$galerie->setEvenement($evenement);
$galerie->setOrdre($ordre);
$em = $this->doctrine->getManager();
$em->persist($galerie);
$em->flush();
$result[$galerie->getId()] = $newFilename;
}
}
// if(intval($data['idetude']) != 0) {
// $action = $this->em->getRepository(TalentEtude::class)->find(intval($data['idetude']));
// } else $action = new TalentEtude;
// $action->setDateDebut(\DateTime::createFromFormat('Y-m-d', $data['datedebut']));
// if($data['datefin'] != '') {
// $action->setDateFin(\DateTime::createFromFormat('Y-m-d', $data['datefin']));
// }
// $action->setEcole($data['ecole']);
// $action->setDiplome($data['diplome']);
// $action->setTalent($this->em->getRepository(Talent::class)->find($data['talent']));
// $this->em->persist($action);
// $this->em->flush();
return new JsonResponse([true, $result]);
} catch (FileException $e) {
return new JsonResponse([false]);
}
}
/**
* @Route("/consentement-{idevenement<\d+>}-{idinscription<\d+>}", name="consentement")
*/
public function consentement(Pdf $knpSnappyPdf, int $idevenement, int $idinscription = 0)
{
//$evenement = $this->doctrine->getRepository(Evenement::class)->find($idevenement);
$inscriptions = $this->doctrine->getRepository(Inscription::class)->findConsentement($idevenement, $idinscription);
$html = $this->renderView('pdf/consentement.html.twig', [
'inscriptions' => $inscriptions
]);
return new PdfResponse(
$knpSnappyPdf->getOutputFromHtml($html),
'Consentements.pdf'
);
}
}