/** * This method joins the teacher indicated with the corresponing students. * * @return $criteria */ public static function joinWithStudents(Criteria $c, $user_id) { $c1 = new Criteria(); $c1->add(PersonPeer::USER_ID, $user_id); $c1->addJoin(PersonPeer::ID, TeacherPeer::PERSON_ID); $c1->addJoin(CourseSubjectTeacherPeer::TEACHER_ID, TeacherPeer::ID); $c1->addJoin(CourseSubjectTeacherPeer::COURSE_SUBJECT_ID, CourseSubjectPeer::ID); $c1->addJoin(CourseSubjectPeer::ID, CourseSubjectStudentPeer::COURSE_SUBJECT_ID); $c1->addJoin(CourseSubjectStudentPeer::STUDENT_ID, StudentPeer::ID); $c1->clearSelectColumns(); $c1->addSelectColumn(StudentPeer::ID); $c1->setDistinct(); $stmt = StudentPeer::doSelectStmt($c1); $student_ids = $stmt->fetchAll(PDO::FETCH_COLUMN); $c->add(StudentPeer::ID, $student_ids, Criteria::IN); }
/** * Get every student that isnt inscripted in other division. * The inscription depends on the aproval method implemented by each school * * @param Division $division * * @return array Student[] */ public function getAvailableStudentsForDivision(Division $division) { $students_in = array(); foreach ($division->getCourses() as $course) { foreach ($course->getNonOptionCourseSubjects() as $course_subject) { $criteria_course = $this->getAvailableStudentsForCourseSubjectCriteria($course_subject); $criteria_course->clearSelectColumns(); $criteria_course->addSelectColumn(StudentPeer::ID); $stmt = StudentPeer::doSelectStmt($criteria_course); $students_in = array_merge($stmt->fetchAll(PDO::FETCH_COLUMN), $students_in); } } $c = new Criteria(); //$c->addAnd(StudentPeer::ID,$not_in,Criteria::NOT_IN); $c->add(StudentPeer::ID, $students_in, Criteria::IN); return StudentPeer::doSelect($c); }
/** * This methods returns the students available four a course that have a Division * * @see getAvailableStudentsForCourseSubjectCriteria * * @param CourseSubject $course_subject * @param Criteria $criteria * @param Boolean $filter_by_orientation * @return Criteria */ public function getAvailableStudentsForDivisionCourseSubjectCriteria(CourseSubject $course_subject, $criteria = null, $filter_by_orientation = true) { $criteria = is_null($criteria) ? new Criteria() : $criteria; if ($course_subject->getCourse()->getDivision()) { $c = new Criteria(); $c->add(DivisionStudentPeer::DIVISION_ID, $course_subject->getCourse()->getDivisionId()); $c->addJoin(StudentPeer::ID, DivisionStudentPeer::STUDENT_ID); $c->clearSelectColumns(); $c->addSelectColumn(StudentPeer::ID); $stmt = StudentPeer::doSelectStmt($c); $in = $stmt->fetchAll(PDO::FETCH_COLUMN); $criteria->addAnd(StudentPeer::ID, $in, Criteria::IN); } return $this->getAvailableStudentsForCourseSubjectCriteria($course_subject, $criteria, $filter_by_orientation); }
public function addIsMatriculatedColumnCriteria($criteria, $field, $value) { if ($value != '') { $c = new Criteria(); $c->add(SchoolYearPeer::ID, SchoolYearPeer::retrieveCurrent()->getId()); $c->addJoin(SchoolYearPeer::ID, SchoolYearStudentPeer::SCHOOL_YEAR_ID); $c->addJoin(StudentPeer::ID, SchoolYearStudentPeer::STUDENT_ID); $c->clearSelectColumns(); $c->addSelectColumn(StudentPeer::ID); $stmt = StudentPeer::doSelectStmt($c); $ids = $stmt->fetchAll(PDO::FETCH_COLUMN); if ($value == '1') { $criteria->add(StudentPeer::ID, $ids, Criteria::IN); } else { $criteria->add(StudentPeer::ID, $ids, Criteria::NOT_IN); } } }
public function canBeClosed(PropelPDO $con = null) { if ($this->getIsClosed()) { return false; } if ($this->countStudents() == 0) { return false; } //busco los retirados o con reserva de banco $criteria = new Criteria(); $criteria->addJoin(StudentCareerSchoolYearPeer::STUDENT_ID, StudentPeer::ID); $criterion = $criteria->getNewCriterion(StudentCareerSchoolYearPeer::STATUS, StudentCareerSchoolYearStatus::WITHDRAWN, Criteria::EQUAL); $criterion->addOr($criteria->getNewCriterion(StudentCareerSchoolYearPeer::STATUS, StudentCareerSchoolYearStatus::WITHDRAWN_WITH_RESERVE, Criteria::EQUAL)); $criteria->add($criterion); $criteria->clearSelectColumns(); $criteria->addSelectColumn(StudentPeer::ID); $stmt = StudentPeer::doSelectStmt($criteria); $ids = $stmt->fetchAll(PDO::FETCH_COLUMN); $c = new Criteria(); $c->addJoin(CourseSubjectStudentMarkPeer::COURSE_SUBJECT_STUDENT_ID, CourseSubjectStudentPeer::ID); $c->addJoin(CourseSubjectStudentPeer::COURSE_SUBJECT_ID, CourseSubjectPeer::ID); $c->addJoin(CourseSubjectStudentPeer::STUDENT_ID, StudentPeer::ID); $c->add(CourseSubjectStudentPeer::IS_NOT_AVERAGEABLE, false); $c->addJoin(StudentPeer::PERSON_ID, PersonPeer::ID); $c->addJoin(PersonPeer::IS_ACTIVE, true); $c->addJoin(CourseSubjectPeer::COURSE_ID, $this->getId()); $c->add(CourseSubjectStudentMarkPeer::MARK_NUMBER, $this->getCurrentPeriod()); $c->add(CourseSubjectStudentMarkPeer::MARK, null, Criteria::ISNULL); $c->add(StudentPeer::ID, $ids, Criteria::NOT_IN); return CourseSubjectStudentMarkPeer::doCount($c) == 0 && $this->isCurrentSchoolYear(); }
public function getCourseSubjectStudents($criteria = null, PropelPDO $con = null) { if ($criteria === null) { $criteria = new Criteria(); } //busco los retirados o con reserva de banco $c = new Criteria(); $c->addJoin(StudentCareerSchoolYearPeer::STUDENT_ID, StudentPeer::ID); $criterion = $c->getNewCriterion(StudentCareerSchoolYearPeer::STATUS, StudentCareerSchoolYearStatus::WITHDRAWN, Criteria::EQUAL); $criterion->addOr($c->getNewCriterion(StudentCareerSchoolYearPeer::STATUS, StudentCareerSchoolYearStatus::WITHDRAWN_WITH_RESERVE, Criteria::EQUAL)); $c->add($criterion); $c->clearSelectColumns(); $c->addSelectColumn(StudentPeer::ID); $stmt = StudentPeer::doSelectStmt($c); $ids = $stmt->fetchAll(PDO::FETCH_COLUMN); $criteria->addJoin(CourseSubjectStudentPeer::STUDENT_ID, StudentPeer::ID); $criteria->add(CourseSubjectStudentPeer::IS_NOT_AVERAGEABLE, false); $criteria->addJoin(StudentPeer::PERSON_ID, PersonPeer::ID); $criteria->addJoin(CourseSubjectStudentPeer::STUDENT_ID, StudentCareerSchoolYearPeer::STUDENT_ID); $criteria->add(StudentPeer::ID, $ids, Criteria::NOT_IN); $criteria->setDistinct(); $criteria->addAscendingOrderByColumn(PersonPeer::LASTNAME); return parent::getCourseSubjectStudents($criteria); }