<?php
namespace App\Controller;
use App\Features\Core\Paginator;
use App\Features\Jobs\Form\JobFilterSimpleType;
use App\Features\Jobs\Form\JobFilterType;
use App\Features\Jobs\JobFilter;
use App\Repository\JobsRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class DefaultController extends AbstractController
{
/**
* @Route("/", name="home")
* @return Response
*/
public function index(JobsRepository $repository)
{
$filter= new JobFilter(isEnabled: true);
$qb= $repository->filter($filter);
$paginator= new Paginator($qb, 20);
$paginator->paginate();
return $this->render(
'home.html.twig', [
'paginator' => $paginator,
'form' => $this->createForm(JobFilterSimpleType::class)->createView()
]
);
}
/**
* @Route("/recherche-offres", name="job-search")
* @param Request $request
* @param JobsRepository $repository
* @return Response
*/
public function searchJob(Request $request, JobsRepository $repository): Response
{
$filter= new JobFilter(isEnabled: true);
$form = $this->createForm(JobFilterType::class, $filter);
$form->handleRequest($request);
$form->isSubmitted() && $form->isValid();
$qb= $repository->filter($filter);
$paginator= new Paginator($qb, 20);
$paginator->paginate();
return $this->render(
'Jobs/search-job-page.html.twig', [
'paginator' => $paginator,
'form' => $form->createView(),
'filter' => "Recherche d'offres"
]
);
}
/**
* @Route("/a-propos", name="about")
* @return Response
*/
public function about()
{
return $this->render('about.html.twig', ["title" => "À propos"]);
}
/**
* @Route("/sitemap.xml", name="sitemap", defaults={"xml"=true, "_format"="xml"})
*/
public function menu($activeMenu = null, $isFooter = false, $xml = false): Response
{
return $this->render($xml ? 'Default/sitemap.xml.twig' : ($isFooter ? 'Default/footer.html.twig' : 'Default/menu.html.twig'),[
'activeMenu'=>$activeMenu,
]);
}
}