public function getCourseSubjectStudentResult(CourseSubjectStudent $course_subject_student, PropelPDO $con = null) { if (!$course_subject_student->getConfiguration()->isNumericalMark()) { $letter_average = LetterMarkAveragePeer::getLetterMarkAverageByCourseSubjectStudent($course_subject_student); $average = LetterMarkPeer::getLetterMarkByPk($letter_average->getLetterMarkAverage()); $average = $average->getValue(); } else { $average = $course_subject_student->getMarksAverage($con); } if ($this->isApproved($course_subject_student, $average, $con)) { return $this->createStudentApprovedCourseSubject($course_subject_student, $average, $con); } else { $student_disapproved_course_subject = new StudentDisapprovedCourseSubject(); $student_disapproved_course_subject->setCourseSubjectStudent($course_subject_student); $student_disapproved_course_subject->setExaminationNumber($this->getExaminationNumberFor($average, false, $course_subject_student)); return $student_disapproved_course_subject; } }
public static function getLetterMarkAverageByCourseSubjectStudent($course_subject_student) { for ($i = 1; $i <= $course_subject_student->getConfiguration()->getCourseMarks(); $i++) { $marks[$i] = LetterMarkPeer::getLetterMarkByValue($course_subject_student->getMarkFor($i)->getMark()); } $criteria = new Criteria(); if (array_key_exists(1, $marks) && !is_null($marks[1])) { $criteria->add(LetterMarkAveragePeer::LETTER_MARK_1, $marks[1]->getId()); } else { $criteria->add(LetterMarkAveragePeer::LETTER_MARK_1, null, Criteria::ISNULL); } if (array_key_exists(2, $marks) && !is_null($marks[2])) { $criteria->add(LetterMarkAveragePeer::LETTER_MARK_2, $marks[2]->getId()); } else { $criteria->add(LetterMarkAveragePeer::LETTER_MARK_2, null, Criteria::ISNULL); } if (array_key_exists(3, $marks) && !is_null($marks[3])) { $criteria->add(LetterMarkAveragePeer::LETTER_MARK_3, $marks[3]->getId()); } else { $criteria->add(LetterMarkAveragePeer::LETTER_MARK_3, null, Criteria::ISNULL); } $result = LetterMarkAveragePeer::doSelectOne($criteria); return $result; }
public function getAverageByConfig($config = null) { if (!$this->areAllMarksClosed()) { return ''; } if ($config != null && !$config->isNumericalMark()) { $letter_average = LetterMarkAveragePeer::getLetterMarkAverageByCourseSubjectStudent($this); if (!is_null($letter_average)) { $letter_mark = LetterMarkPeer::getLetterMarkByPk($letter_average->getLetterMarkAverage()); return $letter_mark->getLetter(); } } else { return $this->getMarksAverage(); } }