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();
     }
 }