diff --git a/.ddev/config.yaml b/.ddev/config.yaml index 5e602a8..5c9cef5 100644 --- a/.ddev/config.yaml +++ b/.ddev/config.yaml @@ -1,4 +1,3 @@ -name: myep-next type: php docroot: public php_version: "8.3" diff --git a/assets/controllers/checkbox_toggle_controller.js b/assets/controllers/checkbox_toggle_controller.js new file mode 100644 index 0000000..cfa5a72 --- /dev/null +++ b/assets/controllers/checkbox_toggle_controller.js @@ -0,0 +1,32 @@ +import { Controller } from '@hotwired/stimulus' + +export default class extends Controller { + + static classes = [ 'hidden' ] + static targets = [ 'container', 'checkboxGroup' ] + static values = { visible: Boolean } + + connect() { + this.updateVisibility() + } + + check() { + this.updateVisibility() + } + + updateVisibility() { + if (!this.hasCheckboxGroupTarget) { + return + } + + const checkboxes = this.checkboxGroupTarget.querySelectorAll('input[type="checkbox"]') + const hasChecked = Array.from(checkboxes).some(checkbox => checkbox.checked) + this.visibleValue = hasChecked + } + + visibleValueChanged(visible) { + if (this.hasContainerTarget) { + this.containerTarget.classList.toggle(this.hiddenClass, false === visible) + } + } +} diff --git a/assets/controllers/tooltip_controller.js b/assets/controllers/tooltip_controller.js index b7d9139..9658041 100644 --- a/assets/controllers/tooltip_controller.js +++ b/assets/controllers/tooltip_controller.js @@ -16,14 +16,17 @@ export default class extends Controller { trigger: 'click', allowHTML: true, interactive: true, + appendTo: document.body, } } else { options = { content: this.contentValue, placement, touch: false, + trigger: 'mouseenter focus', allowHTML: true, interactive: true, + appendTo: document.body, } } if (this.hasTriggerTarget) { diff --git a/config/packages/monolog.yaml b/config/packages/monolog.yaml index b39394d..cd9e5b8 100644 --- a/config/packages/monolog.yaml +++ b/config/packages/monolog.yaml @@ -76,7 +76,7 @@ when@prod: type: rotating_file max_files: 7 path: "%kernel.logs_dir%/%kernel.environment%.auth.log" - level: debug + level: info channels: ["auth"] core: type: rotating_file diff --git a/src/BusProNet/XmlParser/BookingsParser.php b/src/BusProNet/XmlParser/BookingsParser.php index abedfec..33eafa2 100644 --- a/src/BusProNet/XmlParser/BookingsParser.php +++ b/src/BusProNet/XmlParser/BookingsParser.php @@ -21,6 +21,7 @@ class BookingsParser extends AbstractParser $booking = new Booking(); $booking->id = $this->getIntOrNullValue($node->filterXPath('//id')); + $booking->applicantId = $this->getIntOrNullValue($node->filterXPath('//idadresse_anmelder')); $booking->bookingNumber = $this->getIntOrNullValue($node->filterXPath('//vorgangsnummer')); $booking->status = $this->getStringOrNullValue($node->filterXPath('//status')); $booking->participantCount = $this->getIntOrNullValue($node->filterXPath('//personen')); diff --git a/src/BusProNet/XmlParser/ServicesParser.php b/src/BusProNet/XmlParser/ServicesParser.php index 2634fe2..1cbb619 100644 --- a/src/BusProNet/XmlParser/ServicesParser.php +++ b/src/BusProNet/XmlParser/ServicesParser.php @@ -35,6 +35,9 @@ class ServicesParser extends AbstractParser $service->direction = $node->attr('richtung'); } + $service->ageFrom = $this->getIntOrNullValue($node->filterXPath('//altervon')); + $service->ageTo = $this->getIntOrNullValue($node->filterXPath('//alterbis')); + $services[$service->id] = $service; }); diff --git a/src/Security/Voter/BookingVoter.php b/src/Security/Voter/BookingVoter.php index 75c47c9..8072be2 100644 --- a/src/Security/Voter/BookingVoter.php +++ b/src/Security/Voter/BookingVoter.php @@ -42,7 +42,7 @@ class BookingVoter extends Voter /** @var Booking $booking */ $booking = $subject; - if ($booking->applicant->personId !== $user->getPersonId()) { + if ($booking->applicant->addressId !== $user->getAddressId()) { return false; }