private function createCorrection($grade = null, $valid = true, $finished = true)
 {
     $correction = new Correction();
     $correction->setFinished($finished);
     $correction->setValid($valid);
     $correction->setTotalGrade($grade);
 }
 /**
  * @param Wiki $wiki
  * @param Section $section
  * @param Contribution $contribution
  */
 public function __construct(Dropzone $dropzone, Drop $drop, Correction $correction, $roleManager)
 {
     $this->dropzone = $dropzone;
     $this->role_manager = $roleManager;
     $this->details = array('report' => array('drop' => $drop, 'correction' => $correction, 'report_comment' => $correction->getReportComment(), 'dropzoneId' => $dropzone->getId(), 'dropId' => $drop->getId(), 'correctionId' => $correction->getId()));
     parent::__construct($dropzone->getResourceNode(), $this->details);
 }
 /**
  * @param Dropzone   $dropzone
  * @param Drop       $drop
  * @param Correction $correction
  */
 public function __construct(Dropzone $dropzone, Drop $drop, Correction $correction)
 {
     $documentsDetails = array();
     foreach ($drop->getDocuments() as $document) {
         $documentsDetails[] = $document->toArray();
     }
     $details = array('dropzone' => array('id' => $dropzone->getId()), 'drop' => array('id' => $drop->getId(), 'documents' => $documentsDetails, 'owner' => array('id' => $drop->getUser()->getId(), 'lastName' => $drop->getUser()->getLastName(), 'firstName' => $drop->getUser()->getFirstName(), 'username' => $drop->getUser()->getUsername())), 'correction' => $correction->toArray(false));
     parent::__construct($dropzone->getResourceNode(), $details);
 }
 /**
  *  Calculate the grad of a copy
  *
  * @param Dropzone $dropzone
  * @param Correction $correction
  * @return float|int
  */
 public function calculateCorrectionTotalGrade(Dropzone $dropzone, Correction $correction)
 {
     $nbCriteria = count($dropzone->getPeerReviewCriteria());
     $maxGrade = $dropzone->getTotalCriteriaColumn() - 1;
     $sumGrades = 0;
     foreach ($correction->getGrades() as $grade) {
         $grade->getValue() > $maxGrade ? $sumGrades += $maxGrade : ($sumGrades += $grade->getValue());
     }
     $totalGrade = 0;
     if ($nbCriteria != 0) {
         $totalGrade = $sumGrades / $nbCriteria;
         $totalGrade = $totalGrade * 20 / $maxGrade;
     }
     return $totalGrade;
 }
示例#5
0
 /**
  * @Route(
  *      "/{resourceId}/remove/report/{dropId}/{correctionId}/{invalidate}",
  *      name="innova_collecticiel_remove_report",
  *      requirements={"resourceId" = "\d+", "dropId" = "\d+", "correctionId" = "\d+", "invalidate" = "0|1"}
  * )
  * @ParamConverter("dropzone", class="InnovaCollecticielBundle:Dropzone", options={"id" = "resourceId"})
  * @ParamConverter("drop", class="InnovaCollecticielBundle:Drop", options={"id" = "dropId"})
  * @ParamConverter("correction", class="InnovaCollecticielBundle:Correction", options={"id" = "correctionId"})
  * @Template()
  */
 public function removeReportAction(Dropzone $dropzone, Drop $drop, Correction $correction, $invalidate)
 {
     $this->get('innova.manager.dropzone_voter')->isAllowToOpen($dropzone);
     $this->get('innova.manager.dropzone_voter')->isAllowToEdit($dropzone);
     $em = $this->getDoctrine()->getManager();
     $correction->setReporter(false);
     if ($invalidate === 1) {
         $correction->setValid(false);
     }
     $em->persist($correction);
     $em->flush();
     $correctionRepo = $this->getDoctrine()->getRepository('InnovaCollecticielBundle:Correction');
     if ($correctionRepo->countReporter($dropzone, $drop) === 0) {
         $drop->setReported(false);
         $em->persist($drop);
         $em->flush();
     }
     $event = new LogCorrectionUpdateEvent($dropzone, $drop, $correction);
     $this->dispatch($event);
     return $this->redirect($this->generateUrl('innova_collecticiel_drops_detail', ['resourceId' => $dropzone->getId(), 'dropId' => $drop->getId()]));
 }
 /**
  * @Route(
  *      "/{documentId}/add/comments/{userId}/{dropzoneId}/{correctionId}",
  *      name="innova_collecticiel_add_comment",
  *      requirements={"documentId" = "\d+", "userId" = "\d+", "dropzoneId" = "\d+", "correctionId" = "\d+"}
  * )
  * @ParamConverter("document", class="InnovaCollecticielBundle:Document", options={"id" = "documentId"})
  * @ParamConverter("user",class="ClarolineCoreBundle:User",options={"id" = "userId"})
  * @ParamConverter("dropzone", class="InnovaCollecticielBundle:Dropzone", options={"id" = "dropzoneId"})
  * @ParamConverter("correction", class="InnovaCollecticielBundle:Correction", options={"id" = "correctionId"})
  * @Method("POST")
  * @Template()
  */
 public function AddCommentsInnovaAction(Document $document, User $user, Dropzone $dropzone, Correction $correction)
 {
     $em = $this->getDoctrine()->getManager();
     // Valorisation du commentaire
     $comment = new Comment();
     $comment->setDocument($document);
     $comment->setUser($user);
     $form = $this->get('form.factory')->createBuilder(new CommentType(), $comment)->getForm();
     // Récupération de la saisie du commentaire
     $request = $this->get('request');
     if ($request->isMethod('POST')) {
         $form->handleRequest($request);
         if ($form->isValid()) {
             $em = $this->getDoctrine()->getManager();
             // Insertion en base du commentaire
             $em->persist($comment);
             $em->flush();
         }
     }
     // Ajouter la création du log de la création du commentaire. InnovaERV.
     $unitOfWork = $em->getUnitOfWork();
     $unitOfWork->computeChangeSets();
     $dropzoneChangeSet = $unitOfWork->getEntityChangeSet($dropzone);
     $event = new LogCommentCreateEvent($dropzone, $dropzoneChangeSet, $comment);
     $this->dispatch($event);
     // Redirection vers la page des commentaires. InnovaERV.
     return $this->redirect($this->generateUrl('innova_collecticiel_drops_detail_comment', array('resourceId' => $dropzone->getId(), 'state' => 'edit', 'correctionId' => $correction->getId(), 'documentId' => $document->getId())));
 }
 /**
  * @Route(
  *      "/dropzone/comments",
  *      name="innova_collecticiel_add_more_comments",
  *      options={"expose"=true}
  * )
  * @Template()
  *
  * @return \Symfony\Component\HttpFoundation\Response
  */
 public function ajaxDropzoneAddMoreCommentsAction()
 {
     $em = $this->getDoctrine()->getManager();
     // Récupération de l'utilisateur
     $user = $this->get('security.token_storage')->getToken()->getUser();
     // Récupération de l'ID du dropzone choisi
     $dropzoneId = $this->get('request')->query->get('dropzoneId');
     $dropzone = $this->getDoctrine()->getRepository('InnovaCollecticielBundle:Dropzone')->find($dropzoneId);
     $this->get('innova.manager.dropzone_voter')->isAllowToOpen($dropzone);
     // Récupération des documents sélectionnés
     $arrayDocsId = $this->get('request')->query->get('arrayDocsId');
     $arrayDocsToView = [];
     $arrayDropsId = $this->get('request')->query->get('arrayDropsId');
     $arrayDropsToView = [];
     $cpt = 0;
     // Parcours des documents sélectionnés et insertion en base de données
     if (!empty($arrayDocsToView)) {
         foreach ($arrayDocsId as $documentId) {
             // Par le JS, le document est transmis sous la forme "document_id_XX"
             $docIdS = explode('_', $documentId);
             $docId = $docIdS[2];
             if ($docId > 0) {
                 $arrayDocsToView[] = $docId;
                 $dropId = $arrayDropsId[$cpt];
                 $drop = $this->getDoctrine()->getRepository('InnovaCollecticielBundle:Drop')->find($dropId);
                 $arrayDropsToView[] = $dropId;
                 $correction = new Correction();
                 $correction->setUser($user);
                 $correction->setDropzone($dropzone);
                 $correction->setDrop($drop);
                 //Allow admins to edit this correction
                 $correction->setEditable(true);
                 $em->persist($correction);
                 $em->flush();
                 $event = new LogCorrectionStartEvent($dropzone, $drop, $correction);
                 $this->dispatch($event);
             }
             ++$cpt;
         }
     }
     $edit = 'edit';
     $oldData = [];
     $page = 1;
     $pager = $this->getCriteriaPager($dropzone);
     try {
         $pager->setCurrentPage($page);
     } catch (NotValidCurrentPageException $e) {
         throw new NotFoundHttpException();
     }
     $this->createForm(new CommentType(new Comment(), null));
     $this->createForm(new CorrectionCriteriaPageType(), $oldData, ['edit' => $edit, 'criteria' => $pager->getCurrentPageResults(), 'totalChoice' => $dropzone->getTotalCriteriaColumn()]);
     $redirectRoot = $this->generateUrl('innova_collecticiel_add_more_comments_view', ['dropzoneId' => $dropzoneId, 'arrayDocsId' => $arrayDocsId, 'arrayDropsId' => $arrayDropsId]);
     return new JsonResponse(['link' => $redirectRoot]);
 }