src/Controller/AgendaController.php line 46

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\Routing\Annotation\Route;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Knp\Component\Pager\PaginatorInterface;
  7. use App\Entity\Period;
  8. class AgendaController extends AbstractController
  9. {    
  10.     /**
  11.      * @Route("/agenda", name="agenda")
  12.      */
  13.     public function agendaFull(Request $requestPaginatorInterface $paginator$pageLimit 30)
  14.     {        
  15.         $date = new \DateTime('now');
  16.         $date->modify('-2 hour');
  17.         
  18.         $pageNb $request->query->getInt('page'1);
  19.         $periodRepository $this->getDoctrine()->getRepository(Period::class);
  20.         $periods $paginator->paginate(
  21.             $periodRepository->getQueryPublishedAfterDate($date), /* query NOT result */
  22.             $pageNb/*page number*/
  23.             $pageLimit /*limit per page*/
  24.         );
  25.         return $this->render('period/list.html.twig', [
  26.             'periods' => $periods,
  27.             'pageNb' => $pageNb,
  28.             'pageLimit' => $pageLimit
  29.         ]);
  30.     }
  31.     
  32.     /**
  33.      * @Route("/agenda/step-by-step/{stepNb}/{offset}/{baseDateStr}", name="agendaStepByStep", )
  34.      * @param int $stepNb le nombre d'évènements souhaités 
  35.      * @param int $offset l'offset pour la recherche 
  36.      * @param string $baseDateTimeStr datetime au format 'Y-m-d_H-i-s', base date. If null or bad format, defaults to now
  37.      * @return array Period $periods
  38.      */
  39.     public function agendaStepByStep(int $stepNb 10int $offset 0string $baseDateTimeStr null)
  40.     {
  41.         if ($baseDateTimeStr) {
  42.             try {
  43.                 $baseDateTime \DateTime::createFromFormat('Y-m-d_H-i-s'$baseDateTimeStr);
  44.             } catch (\Throwable $th) {
  45.                 //throw $th;
  46.             }
  47.         }
  48.         if( ! isset($baseDateTime) ) {
  49.             $baseDateTime = new \DateTime('now');
  50.         }
  51.         $periodRepository $this->getDoctrine()->getRepository(Period::class);
  52.         $periods $periodRepository->getPublishedStepByStep($offset$baseDateTime$stepNb);
  53.         // dump($offset);
  54.         // dump($baseDateTime);
  55.         // dump($stepNb);
  56.         // exit;
  57.         
  58.         return $this->render('common/agendaStepByStep.html.twig', [
  59.             'offset' => $offset,
  60.             'baseDateTime' => $baseDateTime,
  61.             'stepNb' => $stepNb,
  62.             'periods' => $periods,
  63.         ]);
  64.     }
  65.     
  66.     // pas utilisé pour l'instant, le choix a été fait d'afficher 10 par 10 dans la home (donc méthode ci-desssus stepByStep)... 
  67.     // /**
  68.     //  * @Route("/agenda/from-to/{agendaFrom}/{agendaTo}", name="agendaFromTo", )
  69.     //  * @param string $agendaFrom datetime au format 'Y-m-d_H-i-s', if null or bad format, defaults to now -1 day
  70.     //  * @param string $agendaTo datetime au format 'Y-m-d_H-i-s', if null or bad format, defaults to agendaFrom +1 week
  71.     //  * @return array Period $periods
  72.     //  */
  73.     // public function agendaFromTo(string $agendaFrom = null, string $agendaTo = null)
  74.     // {
  75.     //     if ($agendaFrom) {
  76.     //         try {
  77.     //             $fromDate = \DateTime::createFromFormat('Y-m-d_H-i-s', $agendaFrom);
  78.     //         } catch (\Throwable $th) {
  79.     //             //throw $th;
  80.     //         }
  81.     //     }
  82.     //     if( ! isset($fromDate) ) {
  83.     //         $fromDate = new \DateTime('now');
  84.     //         $fromDate->modify('-1 day');
  85.     //     }
  86.     //     if($agendaTo) {
  87.     //         try {
  88.     //             $toDate = \DateTime::createFromFormat('Y-m-d_H-i-s', $agendaTo);
  89.     //         } catch (\Throwable $th) {
  90.     //             //throw $th;
  91.     //         }
  92.     //     }
  93.     //     if( ! isset($toDate) ) {
  94.     //         $toDate = new \DateTime($fromDate->format('Y-m-d H:i:s'));
  95.     //         $toDate->modify('+1 week');
  96.     //     }
  97.     //     $previousFromDate = new \DateTime($fromDate->format('Y-m-d H:i:s'));
  98.     //     $previousFromDate->modify('-1 week');
  99.     //     $nextFromDate = new \DateTime($fromDate->format('Y-m-d H:i:s'));
  100.     //     $nextFromDate->modify('+1 week'); // (= default $toDate)
  101.     //     $periodRepository = $this->getDoctrine()->getRepository(Period::class);
  102.     //     $periods = $periodRepository->getPublishedFromTo($fromDate, $toDate);
  103.         
  104.     //     return $this->render('common/agendaFromTo.html.twig', [
  105.     //         'fromDate' => $fromDate,
  106.     //         'toDate' => $toDate,
  107.     //         'previousFromDate' => $previousFromDate,
  108.     //         'nextFromDate' => $nextFromDate,
  109.     //         'periods' => $periods,
  110.     //     ]);
  111.     // }
  112.     
  113. }