diff --git a/src/Controller/Admin/CheckinAction.php b/src/Controller/Admin/CheckinAction.php new file mode 100644 index 0000000..22f4056 --- /dev/null +++ b/src/Controller/Admin/CheckinAction.php @@ -0,0 +1,36 @@ +query->get('entityId'); + + if (!$entityId || !$ticket = $this->ticketRepository->findOneById($entityId)) { + noty()->error('Ein Fehler ist aufgetreten.'); + + return $this->redirect($request->get('referer')); + } + + $ticket->setCheckedIn(true); + $this->entityManager->flush(); + + return $this->redirect($request->headers->get('referer')); + } +} \ No newline at end of file diff --git a/src/Controller/Admin/TicketCrudController.php b/src/Controller/Admin/TicketCrudController.php index 1b87949..af34e44 100644 --- a/src/Controller/Admin/TicketCrudController.php +++ b/src/Controller/Admin/TicketCrudController.php @@ -34,7 +34,8 @@ class TicketCrudController extends AbstractCrudController ->formatValue(fn(Customer $customer) => $customer->getEmail()) ->hideOnForm(); - yield BooleanField::new('checkedIn', '')->setTemplatePath('admin/checked_in.html.twig'); + yield BooleanField::new('checkedIn', '') + ->setTemplatePath('admin/checked_in.html.twig'); } diff --git a/src/Repository/TicketRepository.php b/src/Repository/TicketRepository.php index cd6e338..3e5a0ce 100644 --- a/src/Repository/TicketRepository.php +++ b/src/Repository/TicketRepository.php @@ -9,6 +9,7 @@ use Doctrine\Persistence\ManagerRegistry; /** * @extends ServiceEntityRepository + * @method Ticket|null findOneById(int $entityId) */ class TicketRepository extends ServiceEntityRepository { diff --git a/src/Twig/Environment.php b/src/Twig/Environment.php index 8f363be..96766ad 100644 --- a/src/Twig/Environment.php +++ b/src/Twig/Environment.php @@ -2,6 +2,7 @@ namespace App\Twig; +use EasyCorp\Bundle\EasyAdminBundle\Dto\FieldDto; use Twig\Extension\AbstractExtension; use Twig\TwigFunction; @@ -9,11 +10,22 @@ class Environment extends AbstractExtension { public function getFunctions(): array { - return [new TwigFunction('env', $this->getVar(...))]; + return [ + new TwigFunction('env', $this->getVar(...)), + new TwigFunction('entityId', $this->getEntityId(...)), + ]; } public function getVar(string $name): string { return $_ENV[$name]; } + + public function getEntityId(FieldDto $field): string + { + $url = $field->getCustomOption('toggleUrl'); + preg_match('/entityId=(\d+)/', $url, $matches); + + return $matches[1]; + } } \ No newline at end of file diff --git a/templates/admin/checked_in.html.twig b/templates/admin/checked_in.html.twig index ca79db0..24a928c 100644 --- a/templates/admin/checked_in.html.twig +++ b/templates/admin/checked_in.html.twig @@ -1,6 +1,7 @@ {% if not field.value %} - - {{ dump(field) }} +
+ +
{% else %} - -{% endif %} \ No newline at end of file + +{% endif %}