<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Request;
use Knp\Component\Pager\PaginatorInterface;
use App\Entity\Period;
class AgendaController extends AbstractController
{
/**
* @Route("/agenda", name="agenda")
*/
public function agendaFull(Request $request, PaginatorInterface $paginator, $pageLimit = 30)
{
$date = new \DateTime('now');
$date->modify('-2 hour');
$pageNb = $request->query->getInt('page', 1);
$periodRepository = $this->getDoctrine()->getRepository(Period::class);
$periods = $paginator->paginate(
$periodRepository->getQueryPublishedAfterDate($date), /* query NOT result */
$pageNb, /*page number*/
$pageLimit /*limit per page*/
);
return $this->render('period/list.html.twig', [
'periods' => $periods,
'pageNb' => $pageNb,
'pageLimit' => $pageLimit
]);
}
/**
* @Route("/agenda/step-by-step/{stepNb}/{offset}/{baseDateStr}", name="agendaStepByStep", )
* @param int $stepNb le nombre d'évènements souhaités
* @param int $offset l'offset pour la recherche
* @param string $baseDateTimeStr datetime au format 'Y-m-d_H-i-s', base date. If null or bad format, defaults to now
* @return array Period $periods
*/
public function agendaStepByStep(int $stepNb = 10, int $offset = 0, string $baseDateTimeStr = null)
{
if ($baseDateTimeStr) {
try {
$baseDateTime = \DateTime::createFromFormat('Y-m-d_H-i-s', $baseDateTimeStr);
} catch (\Throwable $th) {
//throw $th;
}
}
if( ! isset($baseDateTime) ) {
$baseDateTime = new \DateTime('now');
}
$periodRepository = $this->getDoctrine()->getRepository(Period::class);
$periods = $periodRepository->getPublishedStepByStep($offset, $baseDateTime, $stepNb);
// dump($offset);
// dump($baseDateTime);
// dump($stepNb);
// exit;
return $this->render('common/agendaStepByStep.html.twig', [
'offset' => $offset,
'baseDateTime' => $baseDateTime,
'stepNb' => $stepNb,
'periods' => $periods,
]);
}
// pas utilisé pour l'instant, le choix a été fait d'afficher 10 par 10 dans la home (donc méthode ci-desssus stepByStep)...
// /**
// * @Route("/agenda/from-to/{agendaFrom}/{agendaTo}", name="agendaFromTo", )
// * @param string $agendaFrom datetime au format 'Y-m-d_H-i-s', if null or bad format, defaults to now -1 day
// * @param string $agendaTo datetime au format 'Y-m-d_H-i-s', if null or bad format, defaults to agendaFrom +1 week
// * @return array Period $periods
// */
// public function agendaFromTo(string $agendaFrom = null, string $agendaTo = null)
// {
// if ($agendaFrom) {
// try {
// $fromDate = \DateTime::createFromFormat('Y-m-d_H-i-s', $agendaFrom);
// } catch (\Throwable $th) {
// //throw $th;
// }
// }
// if( ! isset($fromDate) ) {
// $fromDate = new \DateTime('now');
// $fromDate->modify('-1 day');
// }
// if($agendaTo) {
// try {
// $toDate = \DateTime::createFromFormat('Y-m-d_H-i-s', $agendaTo);
// } catch (\Throwable $th) {
// //throw $th;
// }
// }
// if( ! isset($toDate) ) {
// $toDate = new \DateTime($fromDate->format('Y-m-d H:i:s'));
// $toDate->modify('+1 week');
// }
// $previousFromDate = new \DateTime($fromDate->format('Y-m-d H:i:s'));
// $previousFromDate->modify('-1 week');
// $nextFromDate = new \DateTime($fromDate->format('Y-m-d H:i:s'));
// $nextFromDate->modify('+1 week'); // (= default $toDate)
// $periodRepository = $this->getDoctrine()->getRepository(Period::class);
// $periods = $periodRepository->getPublishedFromTo($fromDate, $toDate);
// return $this->render('common/agendaFromTo.html.twig', [
// 'fromDate' => $fromDate,
// 'toDate' => $toDate,
// 'previousFromDate' => $previousFromDate,
// 'nextFromDate' => $nextFromDate,
// 'periods' => $periods,
// ]);
// }
}