Skip to content

Commit

Permalink
Display trainings on a venue page again
Browse files Browse the repository at this point in the history
This was a regression introduced in #143 in commit f0fc546 when I've converted included pages to a component and forgot there's no variable anymore. They were right, empty() shouldn't be considered harmless.
  • Loading branch information
spaze committed Jul 22, 2023
1 parent c455d80 commit 8dfddd6
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 7 deletions.
34 changes: 29 additions & 5 deletions site/app/Training/DateList/UpcomingTrainingDatesList.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,19 @@

namespace MichalSpacekCz\Training\DateList;

use Countable;
use MichalSpacekCz\Application\UiControl;
use MichalSpacekCz\Training\Dates\UpcomingTraining;
use MichalSpacekCz\Training\Dates\UpcomingTrainingDates;
use MichalSpacekCz\Training\FreeSeats;

class UpcomingTrainingDatesList extends UiControl
class UpcomingTrainingDatesList extends UiControl implements Countable
{

/** @var array<string, UpcomingTraining>|null */
private ?array $upcomingTrainings = null;


public function __construct(
private readonly UpcomingTrainingDates $upcomingTrainingDates,
private readonly FreeSeats $freeSeats,
Expand All @@ -22,13 +28,31 @@ public function __construct(

public function render(): void
{
$upcomingTrainings = $this->venueId ? $this->upcomingTrainingDates->getPublicUpcomingAtVenue($this->venueId) : $this->upcomingTrainingDates->getPublicUpcoming();
if ($this->excludeTraining) {
unset($upcomingTrainings[$this->excludeTraining]);
}
$upcomingTrainings = $this->getUpcomingTrainingDates();
$this->template->lastFreeSeats = $this->showLastFreeSeats && $this->freeSeats->lastFreeSeatsAnyTraining($upcomingTrainings);
$this->template->upcomingTrainings = $upcomingTrainings;
$this->template->render(__DIR__ . '/upcomingTrainingDatesList.latte');
}


/**
* @return array<string, UpcomingTraining>
*/
private function getUpcomingTrainingDates(): array
{
if ($this->upcomingTrainings === null) {
$this->upcomingTrainings = $this->venueId ? $this->upcomingTrainingDates->getPublicUpcomingAtVenue($this->venueId) : $this->upcomingTrainingDates->getPublicUpcoming();
if ($this->excludeTraining) {
unset($this->upcomingTrainings[$this->excludeTraining]);
}
}
return $this->upcomingTrainings;
}


public function count(): int
{
return count($this->getUpcomingTrainingDates());
}

}
5 changes: 4 additions & 1 deletion site/app/Www/Presenters/VenuesPresenter.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ class VenuesPresenter extends BasePresenter
{

private int $venueId;
private UpcomingTrainingDatesList $upcomingTrainingDatesList;


public function __construct(
Expand All @@ -33,15 +34,17 @@ public function actionVenue(string $name): void
throw new BadRequestException("Where in the world is {$name}?", previous: $e);
}
$this->venueId = $venue->getId();
$this->upcomingTrainingDatesList = $this->upcomingTrainingDatesListFactory->createForVenue($this->venueId);

$this->template->pageTitle = $this->texyFormatter->translate('messages.title.venue', [$venue->getName()]);
$this->template->venue = $venue;
$this->template->hasUpcomingTrainings = count($this->upcomingTrainingDatesList) > 0;
}


protected function createComponentUpcomingDatesList(): UpcomingTrainingDatesList
{
return $this->upcomingTrainingDatesListFactory->createForVenue($this->venueId);
return $this->upcomingTrainingDatesList;
}

}
2 changes: 1 addition & 1 deletion site/app/Www/Presenters/templates/Venues/venue.latte
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
</p>

<h3>{_messages.venues.trainingshere}</h3>
{if empty($upcomingTrainings)}
{if !$hasUpcomingTrainings}
<p>{_messages.venues.notraininghere|format:"link:Www:Contact:"}</p>
{else}
{control upcomingDatesList}
Expand Down

0 comments on commit 8dfddd6

Please sign in to comment.