RoomAvailability - Initial implementation

This commit is contained in:
2024-04-28 03:19:19 +02:00
parent 7a56158563
commit 8e7bad7771
9 changed files with 258 additions and 9 deletions
@@ -0,0 +1,57 @@
<?php
namespace App\Controller\Admin;
use App\Repository\RoomAvailabilityRepository;
use App\Repository\RoomCategoryRepository;
use App\Entity\RoomAvailability;
use App\Entity\RoomCategory;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Security\Http\Attribute\IsGranted;
use EasyCorp\Bundle\EasyAdminBundle\Field\{TextField, DateField, AssociationField, NumberField};
#[IsGranted("ROLE_ADMIN")]
class RoomAvailabilityAdminController extends AbstractController
{
#[Route('/admin/roomAvailability', name: 'admin_roomAvailability')]
public function index(RoomAvailabilityRepository $repo, RoomCategoryRepository $catRepo): Response
{
$categoryList = $catRepo->findAll();
return $this->render('admin/room_availability/index.html.twig', [
'roomCategoryList' => $categoryList,
]);
}
#[Route('/admin/roomAvailability/{categoryId}', name: 'admin_roomAvailability_category')]
public function categoryAvailability(RoomAvailabilityRepository $repo, RoomCategoryRepository $catRepo, string $categoryId): Response
{
$category = $catRepo->find($categoryId);
$availabilityList = $repo->findByRoomCategory($categoryId);
return $this->render('admin/room_availability/category_view.html.twig', [
'categoryData' => $category,
'availabilityList' => $availabilityList,
]);
}
#[Route('/admin/roomAvailabilityTEST/', name: 'admin_roomAvailability_test')]
public function availabilityTest(EntityManagerInterface $entityManager): Response
{
$avl = new RoomAvailability();
$avl->setDay(new \DateTime("2024-04-24"));
$avl->setRoomCategory($entityManager->find(RoomCategory::class, 4));
$avl->setNumAvailable(2);
$entityManager->persist($avl);
$entityManager->flush();
return $this->json($avl);
}
}
@@ -4,8 +4,6 @@ namespace App\Controller\Admin;
use App\Entity\RoomCategoryDetails;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\IdField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
class RoomCategoryDetailsCrudController extends AbstractCrudController
@@ -20,7 +18,7 @@ class RoomCategoryDetailsCrudController extends AbstractCrudController
{
return [
TextField::new('detailsSection'),
TextEditorField::new('detailValue'),
TextField::new('detailValue'),
];
}
}
@@ -5,10 +5,7 @@ namespace App\Controller\Admin;
use App\Entity\RoomCategoryPhoto;
use App\Entity\RoomCategoryPhotoKinds;
use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController;
use EasyCorp\Bundle\EasyAdminBundle\Field\IdField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextEditorField;
use EasyCorp\Bundle\EasyAdminBundle\Field\TextField;
use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField;
use EasyCorp\Bundle\EasyAdminBundle\Field\{TextField, ChoiceField};
class RoomCategoryPhotoCrudController extends AbstractCrudController
{
@@ -20,7 +17,7 @@ class RoomCategoryPhotoCrudController extends AbstractCrudController
public function configureFields(string $pageName): iterable
{
yield TextField::new('path');
yield TextEditorField::new('altText');
yield TextField::new('altText');
yield ChoiceField::new('kind')->setChoices(['Main' => 'main', 'Bathroom' => 'bathroom', 'Other' => 'other']);
}
@@ -9,6 +9,8 @@ use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\RoomCategory;
use App\Entity\RoomAvailability;
use App\Entity\User;
use App\Entity\ConfigVariable;
@@ -31,7 +33,8 @@ class SomniaDashboardController extends AbstractDashboardController
yield MenuItem::linkToDashboard('Dashboard', 'fa fa-home');
yield MenuItem::Section('Room Management');
yield MenuItem::linkToCrud('Category', 'fas fa-list', RoomCategory::class);
yield MenuItem::linkToCrud('Category', 'fas fa-door-open', RoomCategory::class);
yield MenuItem::linkToRoute('Room Availability', 'fas fa-calendar-check', 'admin_roomAvailability');
yield MenuItem::Section('App Management');
yield MenuItem::linkToCrud('Config Vars', 'fas fa-gear', ConfigVariable::class);