<?php
namespace App\Controller;
use Symfony\Component\HttpFoundation\JsonResponse;
use App\Entity\Event;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Email;
use App\Entity\EventFav;
use App\Entity\NewsLetterUser;
use App\Form\NewsletterType;
use App\Form\SearchEventType;
use App\Repository\CompanyRepository;
use App\Repository\EventRepository;
use App\Repository\NewsRepository;
use App\Repository\SucessStoryRepository;
use App\Repository\CoupDeProjecteurRepository;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
class ActualiteController extends AbstractController
{
/**
* @Route("/{_locale<en|fr|de|it|es>}/actualites", name="actualites")
*/
public function searchevent(
Request $request,
EventRepository $eventRepository,
NewsRepository $NewsRepository,
SucessStoryRepository $sucessStoryRepository,
CoupDeProjecteurRepository $coupDeProjecteurRepository,
CompanyRepository $companyRepository,
EntityManagerInterface $em
) {
$em = $this->getDoctrine()->getManager();
$user = $this->getUser();
$date = (new \DateTime());
$eventsFav = $em->getRepository(EventFav::class)->findBy(['user' => $user]);
$UpcomingeventsFav = new ArrayCollection();
$LastEventsFav = new ArrayCollection();
foreach ($eventsFav as $ev) {
if ($ev->getEvent()->getstartingDate() > $date) {
$UpcomingeventsFav[] = $ev->getEvent();
} else {
$LastEventsFav[] = $ev->getEvent();
}
}
// test
$News = $NewsRepository->findAll();
$sucessStory = $sucessStoryRepository->findAll();
$coupDeProjecteur = $coupDeProjecteurRepository->findAll();
// $company = $companyRepository->findAll();
$events = [];
$output = $eventRepository->findSixComingEvents($date);
$Sixlastevents = array_slice($output, 0, 6);
$SixPassedEvents = $eventRepository->findSixPassedEvents($date);
$x = 0;
$searchEventForm = $this->createForm(SearchEventType::class);
if ($searchEventForm->handleRequest($request)->isSubmitted() && $searchEventForm->isValid()) {
$criteria = $searchEventForm->getData();
$events = $eventRepository->searchEventAdvanced($criteria);
$x = 1;
}
$newLetterUser = new NewsLetterUser();
$newsLettersForm = $this->createForm(NewsletterType::class, $newLetterUser);
$newsLettersForm->handleRequest($request);
return $this->render(
'actualite/actualites.html.twig',
array(
'searchEventForm' => $searchEventForm->createView(),
'newsLettersForm' => $newsLettersForm->createView(),
'SixPassedEvents' => $SixPassedEvents,
'SixUpcomingevents' => $Sixlastevents,
'events' => $events,
'news' => $News,
'sucessStory' => $sucessStory,
'coupDeProjecteur' => $coupDeProjecteur,
'UpcomingeventsFav' => $UpcomingeventsFav,
'LastEventsFav' => $LastEventsFav,
//'x'=>$x,
// 'companies' => $company
)
);
}
/**
* @Route("/{_locale<en|fr|de|it|es>}/subscribe-newsletter", name="subscribe_newsletter", methods={"POST"})
*/
public function subscribeNewsletter(
Request $request,
EntityManagerInterface $em,
MailerInterface $mailer
) {
$newLetterUser = new NewsLetterUser();
$newsLettersForm = $this->createForm(NewsletterType::class, $newLetterUser, [
'csrf_protection' => false
]);
$newsLettersForm->handleRequest($request);
if ($newsLettersForm->isSubmitted() && $newsLettersForm->isValid()) {
$em->persist($newLetterUser);
$em->flush();
$email = (new Email())
->from('contact@sustlivprogram.org')
->to($newLetterUser->getMail())
->subject('Subscription to Newsletter Successful')
->text('Thank you for subscribing to our newsletter!');
$mailer->send($email);
return new JsonResponse(['success' => true]);
}
return new JsonResponse(['success' => false]);
$this->addFlash('error', 'Subscription failed. Please try again.');
return $this->redirect($request->headers->get('referer'));
}
/**
* @Route("/{_locale<en|fr|de|it|es>}/actualites1(Favoris)", name="actualite(Favoris)")
*/
public function searcheventfav(Request $request, EventRepository $eventRepository, NewsRepository $NewsRepository, SucessStoryRepository $sucessStoryRepository, CoupDeProjecteurRepository $coupDeProjecteurRepository)
{
$em = $this->getDoctrine()->getManager();
$user = $this->getUser();
$date = (new \DateTime());
$eventsFav = $em->getRepository(EventFav::class)->findBy(['user' => $user]);
$AllUpcomingeventsFav = new ArrayCollection();
$AllLastEventsFav = new ArrayCollection();
foreach ($eventsFav as $ev) {
if ($ev->getEvent()->getstartingDate() > $date) {
$AllUpcomingeventsFav[] = $ev->getEvent();
} else {
$AllLastEventsFav[] = $ev->getEvent();
}
}
$UpcomingeventsFav = $AllUpcomingeventsFav->slice(0, 5);
$LastEventsFav = $AllLastEventsFav->slice(0, 5);
$News = $NewsRepository->findAll();
$sucessStory = $sucessStoryRepository->findAll();
$coupDeProjecteur = $coupDeProjecteurRepository->findAll();
$events = [];
$output = $em->getRepository(Event::class)->findSixComingEvents($date);
$Sixlastevents = array_slice($output, 0, 6);
$SixPassedEvents = $em->getRepository(Event::class)->findSixPassedEvents($date);
$x = 0;
$searchEventForm = $this->createForm(SearchEventType::class);
if ($searchEventForm->handleRequest($request)->isSubmitted() && $searchEventForm->isValid()) {
$criteria = $searchEventForm->getData();
$events = $eventRepository->searchEventAdvanced($criteria);
$x = 1;
}
return $this->render(
'page/actualitesFav.html.twig',
array(
'searchEventForm' => $searchEventForm->createView(),
'SixPassedEvents' => $SixPassedEvents,
'SixUpcomingevents' => $Sixlastevents,
'events' => $events,
'news' => $News,
'sucessStory' => $sucessStory,
'coupDeProjecteur' => $coupDeProjecteur,
'UpcomingeventsFav' => $UpcomingeventsFav,
'LastEventsFav' => $LastEventsFav,
'x' => $x
)
);
}
/**
* @Route("/{_locale<en|fr|de|it|es>}/actualites/{id}", name="actualites_id")
*/
public function actualites2($id, NewsRepository $NewsRepository)
{
$actualite = $NewsRepository->find($id);
return $this->render('actualite/actualites_page2.html.twig', [
"actualite" => $actualite
]);
}
}