RoomCateryBedType - API and admin panel improvements.
CI / Docker Lint (push) Successful in 20s

This commit is contained in:
2024-09-12 18:08:33 +02:00
parent 06577df0ad
commit 7475be603c
5 changed files with 65 additions and 17 deletions
@@ -55,8 +55,12 @@ class RoomCategoryBedTypeAdminController extends AbstractController
public function createCategoryBedType(Request $request, RoomCategoryBedTypeRepository $repo, string $categoryId): Response
{
$roomCatBedType = new RoomCategoryBedType();
$roomCategoryItem = $this->entityManager->find(RoomCategory::class, $categoryId);
$roomCatBedType->setRoomCategory($roomCategoryItem);
$form = $this->createForm(RoomCategoryBedTypeFormType::class, $roomCatBedType);
$form = $this->createForm(RoomCategoryBedTypeFormType::class, $roomCatBedType, [
'selectRoomCategory' => false,
]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
@@ -76,17 +80,17 @@ class RoomCategoryBedTypeAdminController extends AbstractController
return $this->render('admin/adminEdit.html.twig', [
'form' => $form,
'ElementType' => "Room Categoy Bed Type",
'ElementName' => "Room Categoy - " . $categoryId
'ElementName' => "Room Categoy - " . $roomCategoryItem
]);
}
// Edit a RoomAvailability numAvailable.
// Edit a RoomCategory BedType.
#[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]);
$categoryBedTypeItem = $repo->find(["bedType" => $bedTypeId, "roomCategory" => $categoryId]);
if ($bedTypeItem == null) {
if ($categoryBedTypeItem == null) {
//TODOME: Aquí deberíamos llevar a una página de error o algo.
$url = $this->adminUrlGenerator->setRoute('admin_roomCategoryBedType_category', [
@@ -95,12 +99,14 @@ class RoomCategoryBedTypeAdminController extends AbstractController
return $this->redirect($url);
}
$form = $this->createForm(RoomCategoryBedTypeFormType::class, $bedTypeItem);
$form = $this->createForm(RoomCategoryBedTypeFormType::class, $categoryBedTypeItem, [
'selectRoomCategory' => false,
]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// $form->getData() holds the submitted values
// but, the original `$bedTypeItem` variable has also been updated
// but, the original `$categoryBedTypeItem` variable has also been updated
$this->entityManager->flush();
@@ -114,7 +120,24 @@ class RoomCategoryBedTypeAdminController extends AbstractController
return $this->render('admin/adminEdit.html.twig', [
'form' => $form,
'ElementType' => "Room Categoy Bed Type",
'ElementName' => "Room Categoy - " . $categoryId
'ElementName' => "Room Categoy - " . $categoryBedTypeItem->getRoomCategory()
]);
}
// Remove a RoomCategoryBedType.
#[Route('/admin/roomCategoryBedType/{categoryId}/{bedTypeId}/remove', name: 'admin_roomCategoryBedType_category_remove')]
public function removeCategoryBedType(RoomCategoryBedTypeRepository $repo, string $categoryId, string $bedTypeId) : Response {
$categoryBedTypeItem = $repo->find(["bedType" => $bedTypeId, "roomCategory" => $categoryId]);
if(!$categoryBedTypeItem) {
throw $this->createNotFoundException('Element not found');
}
$this->entityManager->remove($categoryBedTypeItem);
$this->entityManager->flush();
$url = $this->adminUrlGenerator->setRoute('admin_roomCategoryBedType_category', [
'categoryId' => $categoryId,
])->generateUrl();
return $this->redirect($url);
}
}
+11
View File
@@ -12,6 +12,7 @@ class RoomCategoryBedType
#[ORM\Id]
#[ORM\ManyToOne(inversedBy: 'roomCategoryBedTypes')]
#[ORM\JoinColumn(nullable: false, onDelete: "CASCADE")]
#[Ignore]
private ?RoomCategory $roomCategory = null;
#[ORM\Id]
@@ -53,15 +54,25 @@ class RoomCategoryBedType
return $this;
}
#[Ignore]
public function getBedType(): ?BedType
{
return $this->bedType;
}
#[Ignore]
public function setBedType(?BedType $bedType): static
{
$this->bedType = $bedType;
return $this;
}
public function getBedTypeName(): string {
return $this->getBedType()->getName();
}
public function getBedTypeIcon(): string {
return $this->getBedType()->getIconUrl();
}
}
+2
View File
@@ -12,6 +12,7 @@ class RoomCategoryPhoto
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
#[Ignore]
private ?int $id = null;
#[ORM\Column(length: 255, nullable: false)]
@@ -28,6 +29,7 @@ class RoomCategoryPhoto
#[Ignore]
private ?RoomCategory $roomCategory = null;
#[Ignore]
public function getId(): ?int
{
return $this->id;
+16 -9
View File
@@ -8,6 +8,7 @@ use App\Entity\RoomCategoryBedType;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\OptionsResolver\OptionsResolver;
@@ -15,24 +16,30 @@ class RoomCategoryBedTypeFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('amount')
->add('roomCategory', EntityType::class, [
$selectRoomCategory = $options['selectRoomCategory'];
if($selectRoomCategory) {
$builder->add('roomCategory', EntityType::class, [
'class' => RoomCategory::class,
'choice_label' => 'name',
])
->add('bedType', EntityType::class, [
'choice_label' => 'name'
]);
}
$builder->add('bedType', EntityType::class, [
'class' => BedType::class,
'choice_label' => 'name',
])
->add('save', SubmitType::class)
;
]);
$builder->add('amount', IntegerType::class);
$builder->add('save', SubmitType::class);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => RoomCategoryBedType::class,
'selectRoomCategory' => true,
]);
$resolver->setAllowedTypes('selectRoomCategory', 'bool');
}
}
@@ -28,6 +28,11 @@
Edit
</a>
</td>
<td>
<a href="{{ ea_url().setRoute('admin_roomCategoryBedType_category_remove', { bedTypeId: bedType.bedType.id, categoryId: bedType.roomCategory.id }) }}">
Remove
</a>
</td>
</tr>
{% endfor %}
</tbody>