<?php
namespace App\Twig\Runtime\Scholar;
use App\Entity\Exercise\Exercise;
use App\Entity\Exercise\User\ExerciseResult;
use App\Entity\Scholar\Chapter\Chapter;
use App\Entity\Scholar\Lesson\Lesson;
use App\Entity\Scholar\Module\Module;
use App\Entity\Scholar\Training\Training;
use App\Service\Scholar\ScholarNavigationSecurityService;
use App\Service\Scholar\ScholarNavigationService;
use Twig\Extension\RuntimeExtensionInterface;
class ScholarNavigationRuntime implements RuntimeExtensionInterface
{
public function __construct(
private ScholarNavigationService $scholarNavigationService,
private ScholarNavigationSecurityService $scholarNavigationSecurityService,
)
{
}
public function getNavigationLink(?string $label, bool $active = false, ?string $path = null, string $additionalClasses = ''): string
{
if ($label === null) {
return '';
}
$classes = 'w-100 menu-lesson-item';
if ($additionalClasses) {
$classes .= ' ' . $additionalClasses;
}
if ($active) {
$classes .= ' active';
}
if ($path) {
return '<a href="' . $path . '" class="' . $classes . '">' . $label . '</a>';
}
$classes .= ' disabled';
return '<span class="' . $classes . '">' . $label . '</span>';
}
public function getNextInformationsLessonSummary(Training $training, Module $module, Lesson $lesson): array|null
{
return $this->scholarNavigationService->getAfterLessonSummary($training, $module, $lesson);
}
public function getNextInformationsChapter(Training $training, Module $module, Lesson $lesson, Chapter $chapter): array|null
{
return $this->scholarNavigationService->getAfterChapter($training, $module, $lesson, $chapter);
}
public function getNextInformationsExerciseResult(Training $training, Module $module, Lesson $lesson, ?ExerciseResult $exerciseResult): array|null
{
return $this->scholarNavigationService->getAfterExerciseResult($training, $module, $lesson, $exerciseResult);
}
public function getNextInformationsLessonReview(Training $training, Module $module, Lesson $lesson): array|null
{
return $this->scholarNavigationService->getAfterLessonReview($training, $module, $lesson);
}
public function getPreviousInformationsLessonSummary(Training $training, Module $module, Lesson $lesson): array|null
{
return $this->scholarNavigationService->getBeforeLessonSummary($training, $module, $lesson);
}
public function getPreviousInformationsExercise(Training $training, Module $module, Lesson $lesson, Exercise $exercise): array|null
{
return $this->scholarNavigationService->getBeforeExercise($training, $module, $lesson, $exercise);
}
public function getPreviousInformationsChapter(Training $training, Module $module, Lesson $lesson, Chapter $chapter): array|null
{
return $this->scholarNavigationService->getBeforeChapter($training, $module, $lesson, $chapter);
}
public function getPreviousInformationsLessonReview(Training $training, Module $module, Lesson $lesson): array|null
{
return $this->scholarNavigationService->getBeforeLessonReview($training, $module, $lesson);
}
public function getLessonBlockedReason(Training $training, Module $module, Lesson $lesson): int
{
return $this->scholarNavigationSecurityService->lessonBlockedReason($training, $module, $lesson);
}
}