<?php
namespace App\Controller;
use App\Entity\Room;
use App\Form\RoomType;
use DateTimeImmutable;
use App\Repository\RoomRepository;
use App\Repository\CenterRepository;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
/**
* @Route("/room")
*/
class RoomController extends AbstractController
{
/**
* @Route("/", name="app_room_index", methods={"GET"})
*/
public function index(RoomRepository $roomRepository): Response
{
return $this->render('room/index.html.twig', [
'rooms' => $roomRepository->findAll(),
]);
}
/**
* @Route("/new", name="app_room_new", methods={"GET", "POST"})
*/
public function new(Request $request, RoomRepository $roomRepository , CenterRepository $centerRepository): Response
{
$room = new Room();
$form = $this->createForm(RoomType::class, $room);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$room->setCreatedAt(new DateTimeImmutable());
$room->setUpdateAt(new DateTimeImmutable());
//pour le moment le centre par défaut est celui du maroc
$center = $centerRepository->find('1');
$room->setCenter($center);
//récupératuion des photos de la chambre
$room->setPrincipalImage($request->request->get('principal_image'));
$room->setImages($request->request->get('images'));
$roomRepository->add($room, true);
return $this->redirectToRoute('app_room_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('room/new.html.twig', [
'room' => $room,
'form' => $form,
]);
}
/**
* @Route("/{id}", name="app_room_show", methods={"GET"})
*/
public function show(Room $room): Response
{
return $this->render('room/show.html.twig', [
'room' => $room,
]);
}
/**
* @Route("/{id}/edit", name="app_room_edit", methods={"GET", "POST"})
*/
public function edit(Request $request, Room $room, RoomRepository $roomRepository): Response
{
$form = $this->createForm(RoomType::class, $room);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$room->setUpdateAt(new DateTimeImmutable());
$roomRepository->add($room, true);
return $this->redirectToRoute('app_room_index', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('room/edit.html.twig', [
'room' => $room,
'form' => $form,
]);
}
/**
* @Route("/{id}", name="app_room_delete", methods={"POST"})
*/
public function delete(Request $request, Room $room, RoomRepository $roomRepository): Response
{
if ($this->isCsrfTokenValid('delete'.$room->getId(), $request->request->get('_token'))) {
$roomRepository->remove($room, true);
}
return $this->redirectToRoute('app_room_index', [], Response::HTTP_SEE_OTHER);
}
}