<?php
namespace App\Controller\Front\Core;
use App\Entity\Events\Events;
use App\Form\Front\FilterType;
use App\Form\Front\RegisterType;
use DateTime;
use Doctrine\DBAL\Schema\View;
use Exception;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Output\BufferedOutput;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpKernel\KernelInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
/**
* DashboardController
*
* @author Florian THUBÉ <florian@felix-creation.fr>
*/
class CoreController extends AbstractController
{
/**
* Run socket
*
* @Route("/run-socket", methods={"GET"}, name="run_socket")
*
* @param Request $request
* @param KernelInterface $kernel
* @return RedirectResponse
* @throws Exception
*/
public function runSocket(Request $request, KernelInterface $kernel)
{
$application = new Application($kernel);
$application->setAutoExit(false);
$input = new ArrayInput([
// 'command' => 'fos:js-routing:debug'
'command' => 'run:websocket-server'
]);
// You can use NullOutput() if you don't need the output
$output = new BufferedOutput();
$application->run($input, $output);
// return the output, don't use if you used NullOutput()
$session = new Session();
$session->getFlashBag()->add('command', $output->fetch());
return $this->redirect($request->headers->get('referer'));
}
/**
* @Route("/", methods={"GET", "POST"}, name="homepage") *
*
* @param Request $request
*
* @return Response
*/
public function index(Request $request)
{
$form = $this->createForm(FilterType::class);
return $this->render('front/core/homepage.html.twig', [
'form' => $form->createView(),
]);
}
public function slider(Request $request)
{
$manager = $this->getDoctrine();
$events = $manager->getRepository(Events::class)->findBy(array('popular' => true));
return $this->render('front/core/slider.html.twig', [
'events' => $events
]);
}
public function featured(Request $request)
{
$manager = $this->getDoctrine();
$events = $manager->getRepository(Events::class)->findBy(array('featured' => true));
return $this->render('front/core/featured.html.twig', [
'events' => $events
]);
}
/**
* @Route("/events", methods={"GET", "POST"}, name="page_events")
*
* @param Request $request
*
* @return Response
*/
public function page_events(Request $request)
{
$manager = $this->getDoctrine();
$events = $manager->getRepository(Events::class)->findAll();
$form = $this->createForm(FilterType::class);
return $this->render('front/core/page_events.html.twig', [
'form' => $form->createView(),
'events' => $events
]);
}
/**
* @Route("/events/filter", methods={"GET", "POST"}, name="page_events_list", options={"expose"=true})
*
* @param Request $request
*
* @return JsonResponse
* @throws Exception
*/
public function page_events_list(Request $request)
{
$manager = $this->getDoctrine();
$datas = array();
parse_str($request->get('data'), $datas);
$parsedArray = $datas['filter'];
unset($parsedArray['_token']);
//REMOVE USELESS ELEM
foreach($parsedArray as $key => $elem){
if($elem == ""){
unset($parsedArray[$key]);
}
}
if(isset($parsedArray['date_begin'])){
$parsedArray['date_begin'] = new DateTime($parsedArray['date_begin']);
}
$events = $manager->getRepository(Events::class)->findByFilter($parsedArray);
return new JsonResponse([
'success' => true,
'code' => 202,
'message' => $this->render('front/core/page_events_list.html.twig', [
'events' => $events
])->getContent()
]);
}
}