diff --git a/src/Controller/Admin/CustomerCrudController.php b/src/Controller/Admin/CustomerCrudController.php index 9c5c557..ec8a4f2 100644 --- a/src/Controller/Admin/CustomerCrudController.php +++ b/src/Controller/Admin/CustomerCrudController.php @@ -4,11 +4,15 @@ namespace App\Controller\Admin; use App\Entity\Customer; use App\Entity\Payment; +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\CollectionField; +use EasyCorp\Bundle\EasyAdminBundle\Field\EmailField; +use EasyCorp\Bundle\EasyAdminBundle\Field\TelephoneField; use EasyCorp\Bundle\EasyAdminBundle\Field\TextField; class CustomerCrudController extends AbstractCrudController @@ -22,12 +26,15 @@ class CustomerCrudController extends AbstractCrudController { yield TextField::new('firstname', 'Vorname'); yield TextField::new('lastname', 'Nachname'); - yield TextField::new('email', 'E-Mail'); - yield TextField::new('phone', 'Telefon'); - yield AssociationField::new('payment', 'Zahlung') + yield EmailField::new('email', 'E-Mail'); + yield TelephoneField::new('phone', 'Telefon'); + yield AssociationField::new('payment', 'Total') ->setCrudController(PaymentCrudController::class) - ->formatValue(fn(?Payment $payment) => ($payment?->getTotal() ?? 'N/A') . ' €'); - yield + ->formatValue(fn(?Payment $payment) => ($payment?->getTotal() ?? 0.0) . ' €') + ->hideOnIndex(); + yield CollectionField::new('tickets', 'Tickets') + ->setTemplatePath('admin/customer_tickets.html.twig') + ->hideOnIndex(); } @@ -39,4 +46,12 @@ class CustomerCrudController extends AbstractCrudController ->disable(Action::NEW) ->disable(Action::EDIT); } + + public function configureCrud(Crud $crud): Crud + { + return $crud + ->setPageTitle(Crud::PAGE_INDEX, 'Kunden') + ->setPageTitle(Crud::PAGE_DETAIL, 'Kunden') + ->showEntityActionsInlined(); + } } diff --git a/src/Controller/Admin/PaymentCrudController.php b/src/Controller/Admin/PaymentCrudController.php index 08356bc..5e146ea 100644 --- a/src/Controller/Admin/PaymentCrudController.php +++ b/src/Controller/Admin/PaymentCrudController.php @@ -19,10 +19,10 @@ class PaymentCrudController extends AbstractCrudController public function configureFields(string $pageName): iterable { - yield AssociationField::new('customer', 'Customer') + yield AssociationField::new('customer', 'Kunde') ->setCrudController(CustomerCrudController::class) ->formatValue(fn($value, $payment) => $payment->getCustomer()->getEmail()); - yield BooleanField::new('completed', 'Completed')->renderAsSwitch(false); + yield BooleanField::new('completed', 'Bezahlt')->renderAsSwitch(false); } public function configureActions(Actions $actions): Actions @@ -33,4 +33,11 @@ class PaymentCrudController extends AbstractCrudController ->disable(Action::NEW) ->disable(Action::EDIT); } + + public function configureCrud(Crud $crud): Crud + { + return $crud + ->setPageTitle(Crud::PAGE_INDEX, 'Zahlungen') + ->setPageTitle(Crud::PAGE_DETAIL, 'Zahlung'); + } } diff --git a/src/Controller/Admin/TicketCrudController.php b/src/Controller/Admin/TicketCrudController.php index 718208c..b7f462f 100644 --- a/src/Controller/Admin/TicketCrudController.php +++ b/src/Controller/Admin/TicketCrudController.php @@ -42,4 +42,11 @@ class TicketCrudController extends AbstractCrudController ->disable(Action::NEW) ->disable(Action::EDIT); } + + public function configureCrud(Crud $crud): Crud + { + return $crud + ->setPageTitle(Crud::PAGE_INDEX, 'Tickets') + ->setPageTitle(Crud::PAGE_DETAIL, 'Ticket'); + } } diff --git a/src/Enum/FoodData.php b/src/Enum/FoodData.php index 362961c..dba7975 100644 --- a/src/Enum/FoodData.php +++ b/src/Enum/FoodData.php @@ -4,6 +4,12 @@ namespace App\Enum; class FoodData { + public const FOOD_DATA = [ + 1 => 'Mit Fleisch', + 2 => 'Vegetarisch', + 3 => 'Vegan' + ]; + public const TYPES = [ 'Mit Fleisch' => 1, 'Vegetarisch' => 2, diff --git a/src/Twig/Ticket.php b/src/Twig/Ticket.php new file mode 100644 index 0000000..1515c91 --- /dev/null +++ b/src/Twig/Ticket.php @@ -0,0 +1,31 @@ +getFoodName(...)), + new TwigFilter('ticket', $this->getTicket(...)), + + ]; + } + + public function getFoodName(int $id): string + { + return FoodData::FOOD_DATA[$id] ?? 'N/A'; + } + + public function getTicket(int $id): array + { + return TicketData::TICKET_DATA[$id] ?? ['name' => 'N/A', 'price' => 'N/A']; + } +} \ No newline at end of file diff --git a/templates/admin/customer_tickets.html.twig b/templates/admin/customer_tickets.html.twig new file mode 100644 index 0000000..283c731 --- /dev/null +++ b/templates/admin/customer_tickets.html.twig @@ -0,0 +1,29 @@ + + + + + + + + + + + {% for ticket in field.value %} + + + + + + + {% else %} + + + + {% endfor %} + +
NameErnährungPreis
{{ (ticket.type | ticket)['name'] }}{{ ticket.foodType | food }}{{ (ticket.type | ticket)['price'] }}€ + + View + +
No Orders Found