feat: assignable managers for accommodation bookings

This commit is contained in:
Björn Fromme
2026-08-05 13:45:33 +02:00
parent 8e4afc0813
commit 736128476b
9 changed files with 247 additions and 1 deletions
@@ -7,6 +7,7 @@ namespace App\Form\Admin\Groups;
use App\Entity\Groups\AccommodationBooking;
use App\Entity\Groups\AdditionalService;
use App\Entity\Groups\BoardService;
use App\Entity\User;
use App\Enum\Groups\AccommodationBookingStatus;
use Symfony\Bridge\Doctrine\Form\Type\EntityType;
use Symfony\Component\Form\AbstractType;
@@ -121,6 +122,20 @@ class AccommodationBookingType extends AbstractType
]);
}
// Assigning a manager is reserved for the groups admins; the controller leaves the
// choices empty for everyone else, so the field never enters the form tree and a
// plain manager cannot set it by hand-crafting the request either.
if (!empty($options['assignable_managers'])) {
$builder->add('managedBy', EntityType::class, [
'class' => User::class,
'required' => false,
'choices' => $options['assignable_managers'],
'choice_label' => 'email',
'placeholder' => 'keine Zuordnung',
'label' => 'Bearbeiter:in',
]);
}
$builder
->add('status', EnumType::class, [
'label' => 'Status',
@@ -176,11 +191,13 @@ class AccommodationBookingType extends AbstractType
'additional_services' => [],
'current_board_service' => null,
'current_additional_services' => [],
'assignable_managers' => [],
]);
$resolver->setAllowedTypes('max_adolescent_age', 'int');
$resolver->setAllowedTypes('board_services', 'array');
$resolver->setAllowedTypes('additional_services', 'array');
$resolver->setAllowedTypes('current_board_service', ['null', BoardService::class]);
$resolver->setAllowedTypes('current_additional_services', 'array');
$resolver->setAllowedTypes('assignable_managers', 'array');
}
}