/** * 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(); }
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); } } }
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; }
/** * @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); }