Added RoomCategory BedType support in AdminPanel
This commit is contained in:
@@ -0,0 +1,120 @@
|
||||
<?php
|
||||
|
||||
namespace App\Controller\Admin;
|
||||
|
||||
use App\Entity\RoomCategory;
|
||||
use App\Entity\RoomCategoryBedType;
|
||||
use App\Repository\RoomCategoryRepository;
|
||||
use App\Repository\RoomCategoryBedTypeRepository;
|
||||
use App\Form\RoomCategoryBedTypeFormType;
|
||||
use Doctrine\ORM\EntityManagerInterface;
|
||||
use EasyCorp\Bundle\EasyAdminBundle\Router\AdminUrlGenerator;
|
||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||
use Symfony\Component\HttpFoundation\Request;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Symfony\Component\Routing\Attribute\Route;
|
||||
use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
|
||||
#[IsGranted("ROLE_ADMIN")]
|
||||
class RoomCategoryBedTypeAdminController extends AbstractController
|
||||
{
|
||||
private $adminUrlGenerator;
|
||||
private EntityManagerInterface $entityManager;
|
||||
|
||||
public function __construct(AdminUrlGenerator $adminUrlGenerator, EntityManagerInterface $em)
|
||||
{
|
||||
$this->adminUrlGenerator = $adminUrlGenerator;
|
||||
$this->entityManager = $em;
|
||||
}
|
||||
|
||||
#[Route('/admin/roomCategoryBedType', name: 'admin_roomCategoryBedType')]
|
||||
public function index(RoomCategoryRepository $catRepo): Response
|
||||
{
|
||||
$categoryList = $catRepo->findAll();
|
||||
|
||||
return $this->render('admin/room_category_bed_type_admin/index.html.twig', [
|
||||
'roomCategoryList' => $categoryList,
|
||||
]);
|
||||
}
|
||||
|
||||
// List BedTypes from category.
|
||||
#[Route('/admin/roomCategoryBedType/{categoryId}', name: 'admin_roomCategoryBedType_category')]
|
||||
public function categoryBedTypes(RoomCategoryRepository $catRepo, RoomCategoryBedTypeRepository $repo, string $categoryId): Response
|
||||
{
|
||||
$category = $catRepo->find($categoryId);
|
||||
$bedTypeList = $repo->findByRoomCategory($categoryId);
|
||||
|
||||
return $this->render('admin/room_category_bed_type_admin/categoryBedTypes.html.twig', [
|
||||
'categoryData' => $category,
|
||||
'bedTypeList' => $bedTypeList,
|
||||
]);
|
||||
}
|
||||
|
||||
// Create a RoomCategory BedType.
|
||||
#[Route('/admin/roomCategoryBedType/{categoryId}/new', name: 'admin_roomCategoryBedType_category_create')]
|
||||
public function createCategoryBedType(Request $request, RoomCategoryBedTypeRepository $repo, string $categoryId): Response
|
||||
{
|
||||
$roomCatBedType = new RoomCategoryBedType();
|
||||
|
||||
$form = $this->createForm(RoomCategoryBedTypeFormType::class, $roomCatBedType);
|
||||
|
||||
$form->handleRequest($request);
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
// $form->getData() holds the submitted values
|
||||
// but, the original `$availabilityItem` variable has also been updated
|
||||
|
||||
$this->entityManager->persist($roomCatBedType);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$url = $this->adminUrlGenerator->setRoute('admin_roomCategoryBedType_category', [
|
||||
'categoryId' => $roomCatBedType->getRoomCategory()->getId(),
|
||||
])->generateUrl();
|
||||
|
||||
return $this->redirect($url);
|
||||
}
|
||||
|
||||
return $this->render('admin/adminEdit.html.twig', [
|
||||
'form' => $form,
|
||||
'ElementType' => "Room Categoy Bed Type",
|
||||
'ElementName' => "Room Categoy - " . $categoryId
|
||||
]);
|
||||
}
|
||||
|
||||
// Edit a RoomAvailability numAvailable.
|
||||
#[Route('/admin/roomCategoryBedType/{categoryId}/{bedTypeId}/edit', name: 'admin_roomCategoryBedType_category_update')]
|
||||
public function updateCategoryBedType(Request $request, RoomCategoryBedTypeRepository $repo, string $categoryId, string $bedTypeId): Response
|
||||
{
|
||||
$bedTypeItem = $repo->find(["bedType" => $bedTypeId, "roomCategory" => $categoryId]);
|
||||
|
||||
if ($bedTypeItem == null) {
|
||||
//TODOME: Aquí deberíamos llevar a una página de error o algo.
|
||||
|
||||
$url = $this->adminUrlGenerator->setRoute('admin_roomCategoryBedType_category', [
|
||||
'categoryId' => $categoryId,
|
||||
])->generateUrl();
|
||||
return $this->redirect($url);
|
||||
}
|
||||
|
||||
$form = $this->createForm(RoomCategoryBedTypeFormType::class, $bedTypeItem);
|
||||
|
||||
$form->handleRequest($request);
|
||||
if ($form->isSubmitted() && $form->isValid()) {
|
||||
// $form->getData() holds the submitted values
|
||||
// but, the original `$bedTypeItem` variable has also been updated
|
||||
|
||||
$this->entityManager->flush();
|
||||
|
||||
$url = $this->adminUrlGenerator->setRoute('admin_roomCategoryBedType_category', [
|
||||
'categoryId' => $categoryId,
|
||||
])->generateUrl();
|
||||
|
||||
return $this->redirect($url);
|
||||
}
|
||||
|
||||
return $this->render('admin/adminEdit.html.twig', [
|
||||
'form' => $form,
|
||||
'ElementType' => "Room Categoy Bed Type",
|
||||
'ElementName' => "Room Categoy - " . $categoryId
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -44,6 +44,7 @@ class SomniaDashboardController extends AbstractDashboardController
|
||||
|
||||
yield MenuItem::Section('Category Configuration');
|
||||
yield MenuItem::linkToCrud('Bed Types', 'fas fa-bed', BedType::class);
|
||||
yield MenuItem::linkToRoute('Bed Type - category', 'fas fa-bed', 'admin_roomCategoryBedType');
|
||||
|
||||
yield MenuItem::Section('App Management');
|
||||
yield MenuItem::linkToCrud('Config Vars', 'fas fa-gear', ConfigVariable::class);
|
||||
|
||||
Reference in New Issue
Block a user