<?php
namespace App\Controller;
use App\Entity\Formation\Activity;
use App\Entity\Formation\Participant;
use App\Form\ParticipantType;
use App\Repository\Formation\ActivityRepository;
use App\Repository\Formation\CategoryRepository;
use App\Repository\Formation\ParticipantRepository;
use App\Repository\Training\RegistrationRepository;
use App\Repository\Training\TrainingRepository;
use App\Entity\Training\Registration;
use App\Entity\Training\Training;
use App\Form\RegistrationType;
use App\Service\SchoolyearService;
use DateTime;
use Doctrine\Common\Collections\ArrayCollection;
use Ensepar\Html2pdfBundle\Factory\Html2pdfFactory;
use Exception;
use Knp\Component\Pager\Pagination\PaginationInterface;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Yaml\Yaml;
#[Route('/formations', name: 'hs_public_activity_')]
class ActivityController extends AbstractController
{
Public function __construct(){}
#[Route(path: '/{slug}', name: 'index', options: ['expose' => true], defaults: ['slug' => "all"])]
public function indexAction($slug, ActivityRepository $activiteRepository, CategoryRepository $categoryRepository, PaginatorInterface $paginator, Request $request)
{
if($slug=='all'){
$category="all";
$activitys=$activiteRepository->findBy(['published'=>true], ['forder' => 'ASC']);
} else {
$category=$categoryRepository->findOneBySlug($slug);
$activitys=$activiteRepository->findBy(['category'=>$category, 'published'=>true], ['forder' => 'ASC']);
}
$items=$paginator->paginate($activitys, $request->query->get('page',1), 8);
return $this->render('activity/index.html.twig', ['items'=>$items, 'current'=>'activity', 'category'=>$category]);
}
#[Route(path: '/single/{slug}/{position}', name: 'single', options: ['expose' => true], defaults: ['position' => "details"])]
public function singleAction(Activity $activite, $position, ActivityRepository $activiteRepository, ParticipantRepository $participantRepository, SchoolyearService $schoolyearService, Request $request)
{
$item = new Participant();
$form = $this->createForm(ParticipantType::class, $item);
$form->handleRequest($request);
if($activite->getClasseOpned()!==null){
$item->setClasse($activite->getClasseOpned());
if ($form->isSubmitted() && $form->isValid()) {
try {
$participantRepository->save($item, true);
$this->addFlash('success', 'Votre demande sera prise en compte et nous vous répondrons dans les meilleurs délais');
return $this->redirectToRoute('hs_public_activity_single', ['slug' => $activite->getSlug()]);
} catch (Exception $e) {
$this->addFlash('danger', 'Une erreur s\'est produite lors de cette opération');
}
}
}
$otherActivites = $activiteRepository->findBy(['published'=>true, 'featured'=>true], ['forder' => 'ASC']);
return $this->render(
'activity/single.html.twig',
array(
'form' => $form->createView(),
'item' => $item,
'activite' => $activite,
"position" => $position,
'otherActivites' => $otherActivites,
'current' => 'activity'
)
);
}
}