From cfba174f60aa42f1af905de5d8389e0f89f27dcb Mon Sep 17 00:00:00 2001 From: Constantin Simonis Date: Fri, 7 Feb 2025 14:29:20 +0100 Subject: [PATCH] create customer --- .../Admin/CustomerCrudController.php | 12 +++-- src/Entity/Customer.php | 7 ++- src/Entity/Ticket.php | 8 +++- src/Enum/TicketData.php | 2 +- src/Form/TicketType.php | 48 +++++++++++++++++++ src/Security/AdminPanelAuthenticator.php | 1 - 6 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 src/Form/TicketType.php diff --git a/src/Controller/Admin/CustomerCrudController.php b/src/Controller/Admin/CustomerCrudController.php index 3b4797a..f0526d5 100644 --- a/src/Controller/Admin/CustomerCrudController.php +++ b/src/Controller/Admin/CustomerCrudController.php @@ -4,16 +4,19 @@ namespace App\Controller\Admin; use App\Entity\Customer; use App\Entity\Payment; +use App\Enum\TicketData; use Doctrine\Common\Collections\Collection; use EasyCorp\Bundle\EasyAdminBundle\Config\Action; use EasyCorp\Bundle\EasyAdminBundle\Config\Actions; use EasyCorp\Bundle\EasyAdminBundle\Config\Crud; use EasyCorp\Bundle\EasyAdminBundle\Controller\AbstractCrudController; use EasyCorp\Bundle\EasyAdminBundle\Field\AssociationField; +use EasyCorp\Bundle\EasyAdminBundle\Field\ChoiceField; use EasyCorp\Bundle\EasyAdminBundle\Field\CollectionField; use EasyCorp\Bundle\EasyAdminBundle\Field\EmailField; use EasyCorp\Bundle\EasyAdminBundle\Field\TelephoneField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; +use App\Form\TicketType; class CustomerCrudController extends AbstractCrudController { @@ -33,8 +36,11 @@ class CustomerCrudController extends AbstractCrudController ->formatValue(fn(?Payment $payment) => ($payment?->getTotal() ?? 0.0) . ' €') ->hideOnIndex() ->hideOnForm(); - yield CollectionField::new('tickets', 'Tickets') - ->setTemplatePath('admin/customer_tickets.html.twig') + yield CollectionField::new('tickets') + ->allowAdd() + ->allowDelete() + ->setEntryType(TicketType::class) + ->setFormTypeOptions(['by_reference' => false]) ->hideOnIndex(); } @@ -44,7 +50,7 @@ class CustomerCrudController extends AbstractCrudController return $actions ->add(Crud::PAGE_INDEX, Action::DETAIL) ->disable(Action::DELETE) - ->disable(Action::NEW) + ->setPermission(Action::NEW, 'ROLE_SUPER_ADMIN') ->setPermission(Action::EDIT, 'ROLE_SUPER_ADMIN'); } diff --git a/src/Entity/Customer.php b/src/Entity/Customer.php index 525fdeb..0101701 100644 --- a/src/Entity/Customer.php +++ b/src/Entity/Customer.php @@ -8,7 +8,7 @@ use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: CustomerRepository::class)] -class Customer +class Customer implements \Stringable { #[ORM\Id] #[ORM\GeneratedValue] @@ -149,4 +149,9 @@ class Customer return $this; } + + public function __toString(): string + { + return $this->firstname . ' ' . $this->lastname; + } } diff --git a/src/Entity/Ticket.php b/src/Entity/Ticket.php index 1bb91de..914c208 100644 --- a/src/Entity/Ticket.php +++ b/src/Entity/Ticket.php @@ -2,11 +2,12 @@ namespace App\Entity; +use App\Enum\TicketData; use App\Repository\TicketRepository; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: TicketRepository::class)] -class Ticket +class Ticket implements \Stringable { #[ORM\Id] #[ORM\GeneratedValue] @@ -78,4 +79,9 @@ class Ticket return $this; } + + public function __toString(): string + { + return TicketData::TICKET_DATA[$this->type]['name']; + } } diff --git a/src/Enum/TicketData.php b/src/Enum/TicketData.php index d91b407..2f6e1d5 100644 --- a/src/Enum/TicketData.php +++ b/src/Enum/TicketData.php @@ -24,7 +24,7 @@ class TicketData ]; public const TYPES = [ - 'Ticket' => 1, + 'All-Inclusive Ticket' => 1, 'After-Show Ticket' => 2, 'Kind (6-12 Jahre)' => 3, 'Kind (0-6 Jahre)' => 4, diff --git a/src/Form/TicketType.php b/src/Form/TicketType.php new file mode 100644 index 0000000..2a740fb --- /dev/null +++ b/src/Form/TicketType.php @@ -0,0 +1,48 @@ +add('type', ChoiceType::class, [ + 'label' => 'Ticket Type', + 'choices' => TicketData::TYPES, + 'row_attr' => [ + 'style' => 'flex: 1;', + ], + ]) + ->add('foodType', ChoiceType::class, [ + 'label' => 'Ernährung', + 'choices' => FoodData::TYPES, + 'row_attr' => [ + 'style' => 'flex: 1;', + ], + ]) + ->add('note', TextType::class, [ + 'label' => 'Notiz', + 'required' => false, + 'row_attr' => [ + 'style' => 'flex: 2;', + ], + ]); + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + 'data_class' => Ticket::class, + ]); + } +} \ No newline at end of file diff --git a/src/Security/AdminPanelAuthenticator.php b/src/Security/AdminPanelAuthenticator.php index cceb699..09a18ad 100644 --- a/src/Security/AdminPanelAuthenticator.php +++ b/src/Security/AdminPanelAuthenticator.php @@ -27,7 +27,6 @@ class AdminPanelAuthenticator extends AbstractAuthenticator $data = LoginData::fromRequest($request); if ($request->isMethod(Request::METHOD_POST) && (!$data->password || !$data->username)) { - dd($data); throw new CustomUserMessageAuthenticationException(); }