コード例 #1
0
 private function endCorrection(Request $request, Dropzone $dropzone, Correction $correction, $admin)
 {
     $em = $this->getDoctrine()->getManager();
     $edit = false;
     if ($correction->getFinished() === true) {
         $edit = true;
     }
     $drop = $correction->getDrop();
     $correction->setEndDate(new \DateTime());
     $correction->setFinished(true);
     $totalGrade = $this->get('icap.manager.correction_manager')->calculateCorrectionTotalGrade($dropzone, $correction);
     $correction->setTotalGrade($totalGrade);
     $em->persist($correction);
     $em->flush();
     $event = null;
     if ($edit == true) {
         $event = new LogCorrectionUpdateEvent($dropzone, $correction->getDrop(), $correction);
     } else {
         $event = new LogCorrectionEndEvent($dropzone, $correction->getDrop(), $correction);
     }
     $this->dispatch($event);
     $request->getSession()->getFlashBag()->add('success', $this->get('translator')->trans('Your correction has been saved', array(), 'icap_dropzone'));
     // check if the drop owner can now access to his grade.
     $this->checkUserGradeAvailableByDrop($drop);
     if ($admin === true) {
         return $this->redirect($this->generateUrl('icap_dropzone_drops_detail', array('resourceId' => $dropzone->getId(), 'dropId' => $correction->getDrop()->getId())));
     } else {
         return $this->redirect($this->generateUrl('icap_dropzone_open', array('resourceId' => $dropzone->getId())));
     }
 }