Ejemplo n.º 1
0
 /**
  * Computes and logs the progression of a user.
  *
  * @param Evaluation $evaluation
  */
 public function handleEvaluation(Evaluation $evaluation)
 {
     $this->clearCache();
     $activity = $evaluation->getActivityParameters()->getActivity();
     $abilities = $this->abilityRepo->findByActivity($activity);
     $user = $evaluation->getUser();
     foreach ($abilities as $ability) {
         $progress = $this->getAbilityProgress($ability, $user);
         if ($evaluation->isSuccessful() && !$progress->hasPassedActivity($activity)) {
             $progress->addPassedActivity($activity);
             if ($progress->getPassedActivityCount() >= $ability->getMinActivityCount()) {
                 $progress->setStatus(AbilityProgress::STATUS_ACQUIRED);
             } else {
                 $progress->setStatus(AbilityProgress::STATUS_PENDING);
             }
             $this->computeCompetencyProgress($ability, $user);
         }
     }
     $this->om->flush();
 }
Ejemplo n.º 2
0
 private function updatePastEvaluation(Evaluation $evaluation)
 {
     $user = $evaluation->getUser();
     $activityParams = $evaluation->getActivityParameters();
     $log = $evaluation->getLog();
     if (!is_null($log)) {
         $pastEval = $this->pastEvaluationRepo->findPastEvaluationsByUserAndActivityParamsAndLog($user, $activityParams, $log);
         if (!is_null($pastEval)) {
             $pastEval->setScore($evaluation->getScore());
             $pastEval->setComment($evaluation->getComment());
             $this->om->persist($pastEval);
         }
     }
 }
Ejemplo n.º 3
0
 protected function persistEvaluation(Activity $activity, User $user, $status, Evaluation $previous = null, ActivityParameters $parameters = null)
 {
     $params = $parameters ? $parameters : ($previous ? $previous->getActivityParameters() : new ActivityParameters());
     $params->setActivity($activity);
     if ($previous) {
         $pastEval = new PastEvaluation();
         $pastEval->setActivityParameters($params);
         $pastEval->setUser($user);
         $pastEval->setStatus($previous->getStatus());
         $this->om->persist($pastEval);
     }
     $eval = $previous ?: new Evaluation();
     $eval->setActivityParameters($params);
     $eval->setUser($user);
     $eval->setStatus($status);
     $eval->setDate(new \DateTime());
     $this->om->persist($params);
     $this->om->persist($eval);
     return $eval;
 }
Ejemplo n.º 4
0
 /**
  * @Route(
  *     "edit/activity/evaluation/{evaluationId}",
  *     name="claro_activity_evaluation_edit",
  *     options={"expose"=true}
  * )
  * @ParamConverter("currentUser", options={"authenticatedUser" = true})
  * @ParamConverter(
  *      "evaluation",
  *      class="ClarolineCoreBundle:Activity\Evaluation",
  *      options={"id" = "evaluationId", "strictId" = true}
  * )
  * @Template()
  */
 public function editActivityEvaluationAction(User $currentUser, Evaluation $evaluation)
 {
     $isWorkspaceManager = false;
     $activityParams = $evaluation->getActivityParameters();
     $activity = $activityParams->getActivity();
     if (!is_null($activity)) {
         $workspace = $activity->getResourceNode()->getWorkspace();
         $roleNames = $currentUser->getRoles();
         $isWorkspaceManager = $this->isWorkspaceManager($workspace, $roleNames);
     }
     if (!$isWorkspaceManager) {
         throw new AccessDeniedException();
     }
     $form = $this->formFactory->create(new ActivityEvaluationType(), $evaluation);
     $form->handleRequest($this->request);
     if ($form->isValid()) {
         $this->activityManager->editEvaluation($evaluation);
         return new Response('success', 204);
     }
     return array('form' => $form->createView(), 'evaluation' => $evaluation);
 }