コード例 #1
0
 /**
  * @Route(
  *      "/{resourceId}/recalculate/score/{correctionId}",
  *      name="icap_dropzone_recalculate_score",
  *      requirements={"resourceId" = "\d+", "correctionId" = "\d+"}
  * )
  * @ParamConverter("dropzone", class="IcapDropzoneBundle:Dropzone", options={"id" = "resourceId"})
  * @ParamConverter("correction", class="IcapDropzoneBundle:Correction", options={"id" = "correctionId"})
  * @Template()
  */
 public function recalculateScoreAction(Dropzone $dropzone, Correction $correction)
 {
     $this->get('icap.manager.dropzone_voter')->isAllowToOpen($dropzone);
     $this->get('icap.manager.dropzone_voter')->isAllowToEdit($dropzone);
     if (!$dropzone->getPeerReview()) {
         throw new AccessDeniedException();
     }
     $oldTotalGrade = $correction->getTotalGrade();
     $totalGrade = $this->get('icap.manager.correction_manager')->calculateCorrectionTotalGrade($dropzone, $correction);
     $correction->setTotalGrade($totalGrade);
     $em = $this->getDoctrine()->getManager();
     $em->persist($correction);
     $em->flush();
     if ($oldTotalGrade != $totalGrade) {
         $event = new LogCorrectionUpdateEvent($dropzone, $correction->getDrop(), $correction);
         $this->dispatch($event);
     }
     return $this->redirect($this->generateUrl('icap_dropzone_drops_detail', array('resourceId' => $dropzone->getId(), 'dropId' => $correction->getDrop()->getId())));
 }