/**
  * @EXT\Route(
  *     "/{workspaceId}/activity/parameters/{activityParametersId}/user/{userId}/past/evaluations/show/{displayType}",
  *     name="claro_workspace_activities_past_evaluations_show",
  *     options = {"expose": true}
  * )
  * @EXT\ParamConverter("currentUser", options={"authenticatedUser" = true})
  * @EXT\ParamConverter(
  *      "user",
  *      class="ClarolineCoreBundle:User",
  *      options={"id" = "userId", "strictId" = true}
  * )
  * @EXT\ParamConverter(
  *      "workspace",
  *      class="ClarolineCoreBundle:Workspace\Workspace",
  *      options={"id" = "workspaceId", "strictId" = true}
  * )
  * @EXT\ParamConverter(
  *      "activityParameters",
  *      class="ClarolineCoreBundle:Activity\ActivityParameters",
  *      options={"id" = "activityParametersId", "strictId" = true}
  * )
  * @EXT\Template("ClarolineCoreBundle:Tool/workspace/analytics:workspaceActivitiesPastEvaluations.html.twig")
  *
  * Displays past evaluations of one activity for one user
  *
  * @return Response
  *
  * @throws \Exception
  */
 public function workspaceActivitiesPastEvaluationsShowAction(User $currentUser, User $user, Workspace $workspace, ActivityParameters $activityParameters, $displayType)
 {
     if (!$this->authorization->isGranted('analytics', $workspace)) {
         throw new AccessDeniedException();
     }
     $roleNames = $currentUser->getRoles();
     $isWorkspaceManager = $this->isWorkspaceManager($workspace, $roleNames);
     if (!$isWorkspaceManager && $currentUser->getId() !== $user->getId()) {
         throw new AccessDeniedException();
     }
     $activity = $activityParameters->getActivity();
     $ruleScore = null;
     $isResultVisible = false;
     if ($activityParameters->getEvaluationType() === AbstractEvaluation::TYPE_AUTOMATIC && count($activityParameters->getRules()) > 0) {
         $rule = $activityParameters->getRules()->first();
         $score = $rule->getResult();
         $scoreMax = $rule->getResultMax();
         if (!is_null($score)) {
             $ruleScore = $score;
             if (!is_null($scoreMax)) {
                 $ruleScore .= ' / ' . $scoreMax;
             }
             $ruleResultVisible = $rule->getIsResultVisible();
             $isResultVisible = !empty($ruleResultVisible);
         }
     }
     $pastEvals = $this->activityManager->getPastEvaluationsByUserAndActivityParams($user, $activityParameters);
     return array('user' => $user, 'activity' => $activity, 'pastEvals' => $pastEvals, 'displayType' => $displayType, 'isWorkspaceManager' => $isWorkspaceManager, 'ruleScore' => $ruleScore, 'isResultVisible' => $isResultVisible);
 }
Esempio n. 2
0
 /**
  * Creates an empty activity evaluation for a user, so that an evaluation
  * is available for display and edition even when the user hasn't actually
  * performed the activity.
  *
  * @param User               $user
  * @param ActivityParameters $activityParams
  *
  * @return Evaluation
  */
 public function createBlankEvaluation(User $user, ActivityParameters $activityParams)
 {
     $evaluationType = $activityParams->getEvaluationType();
     $status = null;
     $nbAttempts = null;
     if ($evaluationType === AbstractEvaluation::TYPE_AUTOMATIC) {
         $status = AbstractEvaluation::STATUS_NOT_ATTEMPTED;
         $nbAttempts = 0;
     }
     $evaluation = new Evaluation();
     $evaluation->setUser($user);
     $evaluation->setActivityParameters($activityParams);
     $evaluation->setType($evaluationType);
     $evaluation->setStatus($status);
     $evaluation->setAttemptsCount($nbAttempts);
     $this->om->persist($evaluation);
     $this->om->flush();
     return $evaluation;
 }