pull/6034/merge
christianbeeznest 8 months ago committed by GitHub
commit 98b1879b15
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 19
      public/main/exercise/exercise.class.php
  2. 17
      src/CoreBundle/Repository/TrackEExerciseRepository.php

@ -8792,6 +8792,13 @@ class Exercise
$repo = Container::getQuizRepository();
$trackEExerciseRepo = Container::getTrackEExerciseRepository();
$pendingCorrections = $trackEExerciseRepo->getPendingCorrectionsByExercise($courseId);
$pendingAttempts = [];
foreach ($pendingCorrections as $correction) {
$pendingAttempts[$correction['exerciseId']] = $correction['pendingCount'];
}
// 2. Get query builder from repo.
$qb = $repo->getResourcesByCourse($course, $session);
@ -9027,6 +9034,18 @@ class Exercise
$url .= Display::div($embeddableIcon, ['class' => 'pull-right']);
}
$pendingCount = $pendingAttempts[$exerciseId] ?? 0;
if ($pendingCount > 0) {
$pendingIcon = Display::getMdiIcon(
ActionIcon::ALERT->value,
'ch-tool-icon',
null,
ICON_SIZE_SMALL,
get_lang('Pending Attempts') . ": $pendingCount"
);
$url .= " $pendingIcon";
}
$currentRow['title'] = $url.$lp_blocked;
$rowi = $exerciseEntity->getQuestions()->count();
if ($allowToEditBaseCourse || $allowToEditSession) {

@ -22,4 +22,21 @@ class TrackEExerciseRepository extends ServiceEntityRepository
$this->getEntityManager()->remove($track);
$this->getEntityManager()->flush();
}
/**
* Get exercises with pending corrections grouped by exercise ID.
*/
public function getPendingCorrectionsByExercise(int $courseId): array
{
$qb = $this->createQueryBuilder('te');
$qb->select('IDENTITY(te.quiz) AS exerciseId, COUNT(te.exeId) AS pendingCount')
->where('te.status = :status')
->andWhere('te.course = :courseId')
->setParameter('status', 'incomplete')
->setParameter('courseId', $courseId)
->groupBy('te.quiz');
return $qb->getQuery()->getResult();
}
}

Loading…
Cancel
Save