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