Esempio n. 1
0
 public function executeSelectByAccal()
 {
     $student_course_id = $this->getRequestParameter('student_course_id');
     $student_course = StudentCoursePeer::retrieveByPK($student_course_id);
     if (!$student_course) {
         $student_course = new StudentCourse();
     }
     $student_id = $this->getRequestParameter('student_id');
     $student = StudentPeer::retrieveByPK($student_id);
     //		$this->forward404Unless($student);
     $accal_id = $this->getRequestParameter('accal_id');
     $accal = AcademicCalendarPeer::retrieveByPK($accal_id);
     $disabled = array();
     if ($student) {
         $student_courses = $student->getStudentCoursesJoinSubjectAccal();
         foreach ($student_courses as $sc) {
             if ($sc->getSubjectAccal()->getAcademicCalendarId() == $accal->getId() && $student_course->getSubjectAccalId() != $sc->getSubjectAccal()->getId()) {
                 $disabled[] = $sc->getSubjectAccal()->getId();
             }
         }
     }
     $content = array();
     $objs = SubjectAccalPeer::doSelectByAccal();
     if ($student) {
         foreach ($objs as $o) {
             $content[$o->getId()] = $o->toString();
             $c = new Criteria();
             $c->add(SubjectAccalPeer::ID, $o->getId());
             $c->add(SubjectCurrPeer::SUBJECT_ID, $o->getSubjectId());
             $c->addJoin(AcademicCalendarPeer::ID, SubjectAccalPeer::ACADEMIC_CALENDAR_ID);
             $c->addJoin(AcademicCalendarPeer::CURRICULUM_ID, SubjectCurrPeer::CURRICULUM_ID);
             $c->addJoin(SubjectCurrPeer::ID, SubjectPrereqPeer::SUBCURR);
             $sps = SubjectPrereqPeer::doSelect($c);
             foreach ($sps as $sp) {
                 $s = $sp->getSubjectCurrRelatedBySubcurrPrereq()->getSubject();
                 // prereq subject must be in closed state
                 $c = new Criteria();
                 $c->add(SubjectAccalPeer::SUBJECT_ID, $s->getId());
                 $c->add(StudentCoursePeer::STUDENT_ID, $student_id);
                 $c->add(StudentCoursePeer::STATUS, StudentCourse::STATUS_CLOSED);
                 $c->addJoin(StudentCoursePeer::SUBJECT_ACCAL_ID, SubjectAccalPeer::ID);
                 $scs = StudentCoursePeer::doSelect($c);
                 $isPassGrade = false;
                 $isPassCredit = true;
                 $isPassIndex = true;
                 foreach ($scs as $sc) {
                     $grade = $sc->getFinalGrade();
                     $gc = GradeConversionPeer::retrieveByName($grade[0]);
                     // check prereq subject grade
                     if ($gc && $gc->getGrade() >= $sp->getGradeConversion()->getGrade()) {
                         $isPassGrade = true;
                     } else {
                         $isPassGrade = false;
                     }
                     // check credit requirement
                     if ($sp->getTotalCredit() > 0) {
                         if ($sc->getTotalCreditClosed() >= $sp->getTotalCredit()) {
                             $isPassCredit = true;
                         } else {
                             $isPassCredit = false;
                         }
                     }
                     // check index requirement
                     if ($sp->getPerformanceIndex() > 0) {
                         if ($sc->getPerformanceIndex() >= $sp->getPerformanceIndex()) {
                             $isPassIndex = true;
                         } else {
                             $isPassIndex = false;
                         }
                     }
                 }
                 $s0 = $sp->getSubjectCurrRelatedBySubcurrPrereq()->getSubject()->toString();
                 $s1 = $sp->getSubjectCurrRelatedBySubcurr()->getSubject()->toString();
                 //				echo "<div align=left><pre>";
                 //				echo "$s1 -> $s0 | isPassGrade:$isPassGrade isPassCredit:$isPassCredit isPassIndex:$isPassIndex";
                 //				echo "</pre></div>";
                 if (!$isPassGrade || !$isPassCredit || !$isPassIndex) {
                     $disabled[] = $o->getId();
                 }
             }
         }
     } else {
         foreach ($objs as $o) {
             $content[$o->getId()] = $o->toString();
         }
     }
     $this->content = $content;
     $this->disabled = $disabled;
 }