diff --git a/src/ez_lan_manager/components/SeatingPlanInfoBox.py b/src/ez_lan_manager/components/SeatingPlanInfoBox.py index aa6ff2a..e9ee57e 100644 --- a/src/ez_lan_manager/components/SeatingPlanInfoBox.py +++ b/src/ez_lan_manager/components/SeatingPlanInfoBox.py @@ -17,12 +17,21 @@ class SeatingPlanInfoBox(Component): seat_price: Decimal = Decimal("0") is_blocked: bool = False has_user_ticket = False + booking_button_text = "" - @event.on_page_change + @event.on_populate async def check_ticket(self) -> None: if self.session[SessionStorage].user_id: user_ticket = await self.session[TicketingService].get_user_ticket(self.session[SessionStorage].user_id) self.has_user_ticket = not (user_ticket is None) + self.booking_button_text = "Buchen" if self.has_user_ticket else "Ticket kaufen" + self.force_refresh() + + async def purchase_clicked(self): + if self.has_user_ticket: + await self.purchase_cb() + else: + self.session.navigate_to("./buy_ticket") def build(self) -> Component: if not self.show: @@ -47,7 +56,7 @@ class SeatingPlanInfoBox(Component): style=TextStyle(fill=self.session.theme.neutral_color), overflow="wrap", justify="center"), Button( Text( - "Buchen" if self.has_user_ticket else "Ticket kaufen", + text=self.booking_button_text, margin=1, style=TextStyle(fill=self.session.theme.neutral_color, font_size=1.1), overflow="wrap", @@ -59,7 +68,7 @@ class SeatingPlanInfoBox(Component): margin=1, grow_y=False, is_sensitive=not self.is_booking_blocked, - on_press=self.purchase_cb if self.has_user_ticket else partial(self.session.navigate_to, "./buy_ticket") + on_press=self.purchase_clicked ) if self.session[SessionStorage].user_id else Text(f"Du musst eingeloggt sein um einen Sitzplatz zu buchen", margin=1, style=TextStyle(fill=self.session.theme.neutral_color), overflow="wrap", justify="center"), min_height=10