예제 #1
0
 public function getFinalGrade()
 {
     $c = new Criteria();
     $c->addDescendingOrderByColumn(GradeConversionPeer::GRADE);
     $grade_convs = GradeConversionPeer::doSelect($c);
     $subject_accal = $this->getSubjectAccal();
     $student_scores = $this->getStudentScores();
     if (!$subject_accal) {
         return array('-', 0);
     }
     $subject_gradings = $subject_accal->getSubjectGradings();
     $final_score = 0;
     $final_grade = '-';
     $has_grade = false;
     foreach ($subject_gradings as $sg) {
         $gc = $sg->getGradeComponent();
         $c = new Criteria();
         $c->add(StudentScorePeer::GRADE_COMPONENT_ID, $gc->getId());
         $c->add(StudentScorePeer::STUDENT_COURSE_ID, $this->getId());
         $scores = StudentScorePeer::doSelect($c);
         $score_count = count($scores);
         if ($score_count > 0) {
             $has_grade = true;
         }
         $total_score = 0;
         foreach ($scores as $s) {
             $total_score += $s->getGrade();
         }
         if ($score_count) {
             $score = intval($total_score) / intval($score_count);
             $score = $score * $sg->getPercentage() / 100;
             $final_score += $score;
         }
     }
     foreach ($grade_convs as $gc) {
         if ($final_score >= $gc->getMinValue() && $final_score <= $gc->getMaxValue()) {
             $final_grade = $gc->getName();
             break;
         }
     }
     if ($has_grade) {
         return array($final_grade, $final_score);
     }
     return array('-', 0);
 }
예제 #2
0
 public static function doSelectByStudentCourse()
 {
     $student_score_id = sfContext::getInstance()->getRequest()->getParameter('id');
     $student_score = StudentScorePeer::retrieveByPK($student_score_id);
     $subject_accal = null;
     $objs = array();
     if ($student_score) {
         $subject_accal = $student_score->getStudentCourse()->getSubjectAccal();
     }
     if ($subject_accal == null) {
         return $objs;
     }
     $subject_gradings = $subject_accal->getSubjectGradings();
     foreach ($subject_gradings as $sg) {
         $objs[] = $sg->getGradeComponent();
     }
     return $objs;
 }
예제 #3
0
		<td><?php 
    echo $d->getStudent()->toString();
    ?>
</td>
		<?php 
    if ($subject_grading) {
        ?>
				<td>&nbsp;&nbsp;&nbsp;<?php 
        echo $subject_grading->getPercentage();
        ?>
</td>
		<?php 
        $c = new Criteria();
        $c->add(StudentScorePeer::GRADE_COMPONENT_ID, $subject_grading->getGradeComponentId());
        $c->add(StudentScorePeer::STUDENT_COURSE_ID, $d->getStudentCourseId());
        $student_score = StudentScorePeer::doSelectOne($c);
        if ($student_score) {
            ?>
				<td><?php 
            echo input_tag('student_score_update_grade[' . $student_score->getId() . ']', $student_score->getGrade(), array('size' => 5, 'maxlength' => 5));
            ?>
</td>
				<td><?php 
            echo input_tag('student_score_update_remark[' . $student_score->getId() . ']', $student_score->getRemark(), array('size' => 32, 'maxlength' => 255));
            ?>
</td>
				<td><?php 
            echo select_tag('student_score_update_citation[' . $student_score->getId() . ']', options_for_select($citations, $student_score->getCitationId()), array('include_blank' => true, 'multiple' => false, 'size' => 1));
            ?>
</td>
		<?php 
예제 #4
0
 public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME)
 {
     $keys = StudentScorePeer::getFieldNames($keyType);
     if (array_key_exists($keys[0], $arr)) {
         $this->setId($arr[$keys[0]]);
     }
     if (array_key_exists($keys[1], $arr)) {
         $this->setStudentCourseId($arr[$keys[1]]);
     }
     if (array_key_exists($keys[2], $arr)) {
         $this->setGradeComponentId($arr[$keys[2]]);
     }
     if (array_key_exists($keys[3], $arr)) {
         $this->setGrade($arr[$keys[3]]);
     }
     if (array_key_exists($keys[4], $arr)) {
         $this->setCitationId($arr[$keys[4]]);
     }
     if (array_key_exists($keys[5], $arr)) {
         $this->setRemark($arr[$keys[5]]);
     }
 }
예제 #5
0
 public function executeUpdateScore()
 {
     $ss_update_grade = $this->getRequestParameter('student_score_update_grade');
     $ss_update_rem = $this->getRequestParameter('student_score_update_remark');
     $ss_update_cit = $this->getRequestParameter('student_score_update_citation');
     $ss_add_grade = $this->getRequestParameter('student_score_add_grade');
     $ss_add_rem = $this->getRequestParameter('student_score_add_remark');
     $ss_add_cit = $this->getRequestParameter('student_score_add_citation');
     $subject_accal_id = $this->getRequestParameter('subject_accal_id');
     $class_group_id = $this->getRequestParameter('class_group_id');
     $this->forward404Unless($subject_accal_id);
     foreach ($ss_update_grade as $ss_id => $ss_grade) {
         if ($ss_grade) {
             $ss = StudentScorePeer::retrieveByPK($ss_id);
             $ss->setGrade($ss_grade);
             if ($ss_update_rem[$ss_id]) {
                 $ss->setRemark($ss_update_rem[$ss_id]);
             } else {
                 $ss->setRemark('');
             }
             if ($ss_update_cit[$ss_id]) {
                 $ss->setCitationId($ss_update_cit[$ss_id]);
             } else {
                 $ss->setCitationId('');
             }
             $ss->save();
         }
     }
     foreach ($ss_add_grade as $sc_id => $grade_comps) {
         foreach ($grade_comps as $gc_id => $grade) {
             if ($grade > 0) {
                 $ss = new StudentScore();
                 $ss->setStudentCourseId($sc_id);
                 $ss->setGradeComponentId($gc_id);
                 $ss->setGrade($grade);
                 if ($ss_add_rem[$sc_id][$gc_id]) {
                     $ss->setRemark($ss_add_rem[$sc_id][$gc_id]);
                 }
                 if ($ss_add_cit[$sc_id][$gc_id]) {
                     $ss->setCitationId($ss_add_cit[$sc_id][$gc_id]);
                 }
                 $ss->save();
             }
         }
     }
     return $this->redirect('subject_accal_l/editScore?subject_accal_id=' . $subject_accal_id . '&class_group_id=' . $class_group_id);
 }
예제 #6
0
 public function getStudentScoresJoinCitation($criteria = null, $con = null)
 {
     include_once 'lib/model/om/BaseStudentScorePeer.php';
     if ($criteria === null) {
         $criteria = new Criteria();
     } elseif ($criteria instanceof Criteria) {
         $criteria = clone $criteria;
     }
     if ($this->collStudentScores === null) {
         if ($this->isNew()) {
             $this->collStudentScores = array();
         } else {
             $criteria->add(StudentScorePeer::STUDENT_COURSE_ID, $this->getId());
             $this->collStudentScores = StudentScorePeer::doSelectJoinCitation($criteria, $con);
         }
     } else {
         $criteria->add(StudentScorePeer::STUDENT_COURSE_ID, $this->getId());
         if (!isset($this->lastStudentScoreCriteria) || !$this->lastStudentScoreCriteria->equals($criteria)) {
             $this->collStudentScores = StudentScorePeer::doSelectJoinCitation($criteria, $con);
         }
     }
     $this->lastStudentScoreCriteria = $criteria;
     return $this->collStudentScores;
 }
예제 #7
0
 public static function retrieveByPKs($pks, $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(self::DATABASE_NAME);
     }
     $objs = null;
     if (empty($pks)) {
         $objs = array();
     } else {
         $criteria = new Criteria();
         $criteria->add(StudentScorePeer::ID, $pks, Criteria::IN);
         $objs = StudentScorePeer::doSelect($criteria, $con);
     }
     return $objs;
 }