<?php
 
namespace App\Controller;
 
use App\Calendar\Calendar;
use App\Entity\Appartement;
 
use App\Entity\Reservation;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
 
 
class CalendarController extends AbstractController
{
    /**
     * @Route("/calendar", name="calendar")
     */
    public function index(Request $request)
    {
        $getMonth = $request->query->get('month'); //Récupère le mois et l'année passés en $_post via les liens mois précédent/suivant
        $getYear = $request->query->get('year');
 
        $calendar = new Calendar($getMonth ?? null, $getYear ?? null); //Créer une vue du mois sélectionné. Si le controller n'a pas reçu de mois/année en paramètre, il prend le mois actuel.
 
        $weeks = $calendar->getWeeks(); //Nombre de semaines dans le mois
 
        $startingDay = $calendar->getStartingDay(); //Premier jour de la vue du mois.
        $startingDay = $startingDay->format('N') === '1' ? $startingDay : $calendar->getStartingDay()->modify('last monday'); //Si le premier jours de la vue du mois n'est pas le 1er, prend le lundi de la semaine précédente.
 
        $endingDay = (clone $startingDay)->modify('+' . (6 + 7 * ($weeks - 1)) . ' days'); //Dernier jours de la vue du mois
 
        $em = $this->getDoctrine()->getManager();
        $connection = $em->getConnection();
 
        $start = $startingDay->format('Y-m-d');
        $end = $endingDay->format('Y-m-d');
 
        $query1 = $connection->prepare("SELECT * FROM reservation r WHERE r.appartement_id = 1 AND r.start BETWEEN '$start' AND '$end'");
        $query1->execute();
        $query2 = $connection->prepare("SELECT * FROM reservation r WHERE r.appartement_id = 2 AND r.start BETWEEN '$start' AND '$end'");
        $query2->execute();
        $reservationsView_8 = $query1->fetchAll();
        $reservationsView_9 = $query2->fetchAll();
 
        return $this->render('calendar/index.html.twig', [
            'calendar'=> $calendar,
            'startingDay' => $startingDay,
            'weeks' => $weeks,
            'reservationsView_8' => $reservationsView_8,
            'reservationsView_9' => $reservationsView_9,
        ]);
    }
}