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