public static function search($query_string, $sf_user, $limit = 12) { $query_string = trim($query_string); if (!is_null($query_string) && !empty($query_string) && '' != $query_string && strlen($query_string) > 3) { $criteria = new Criteria(); $criteria->setIgnoreCase(true); $criteria->setLimit($limit); $criteria->add(SchoolYearStudentPeer::SCHOOL_YEAR_ID, SchoolYearPeer::retrieveCurrent()->getId()); $criteria->addJoin(SchoolYearStudentPeer::STUDENT_ID, self::ID); $criteria->addJoin(self::PERSON_ID, PersonPeer::ID, Criteria::INNER_JOIN); $criteria->addAscendingOrderByColumn(PersonPeer::LASTNAME); if (is_numeric($query_string)) { // Search by identification number $criteria->add(PersonPeer::IDENTIFICATION_NUMBER, $query_string . '%', Criteria::LIKE); } else { // Search by firstname or lastname $criterion = $criteria->getNewCriterion(PersonPeer::FIRSTNAME, $query_string . '%', Criteria::LIKE); $criterion->addOr($criteria->getNewCriterion(PersonPeer::LASTNAME, $query_string . '%', Criteria::LIKE)); $criteria->add($criterion); } if ($sf_user->isPreceptor()) { PersonalPeer::joinWithStudents($criteria, $sf_user->getGuardUser()->getId()); } elseif ($sf_user->isTeacher()) { TeacherPeer::joinWithStudents($criteria, $sf_user->getGuardUser()->getId()); } //FALTA HEAD PRECEPTOR return self::doSelectActive($criteria); } return array(); }
public function buildCriteria(Criteria $criteria = null) { if (null === $criteria) { $criteria = new Criteria(); } $params = $this->getFilterCriteria(); $criteria->setLimit(50); if (isset($params['attendance_subject']) && $params['attendance_subject']) { $criteria->add(StudentAttendancePeer::COURSE_SUBJECT_ID, null, Criteria::ISNOTNULL); } if (isset($params['from_date']) && trim($params['from_date']) != '') { $criteria->add(StudentAttendancePeer::DAY, $params['from_date'], Criteria::GREATER_EQUAL); } if (isset($params['to_date']) && trim($params['to_date']) != '') { $criteria->addAnd(StudentAttendancePeer::DAY, $params['to_date'], Criteria::LESS_EQUAL); } if (isset($params['student']) && trim($params['student']) != '') { if (is_numeric($params['student'])) { //si es un nro chequeo documento $criteria->add(PersonPeer::IDENTIFICATION_NUMBER, (int) $params['student']); $criteria->addJoin(StudentPeer::PERSON_ID, PersonPeer::ID); $criteria->addJoin(StudentPeer::ID, StudentAttendancePeer::STUDENT_ID); } else { $criteria->add(PersonPeer::LASTNAME, '%' . $params['student'] . '%', Criteria::LIKE); $criteria->addJoin(StudentPeer::PERSON_ID, PersonPeer::ID); $criteria->addJoin(StudentPeer::ID, StudentAttendancePeer::STUDENT_ID); } } if ($this->getUser()->isPreceptor()) { PersonalPeer::joinWithStudents($criteria, $this->getUser()->getGuardUser()->getId()); $criteria->addJoin(StudentPeer::ID, StudentAttendancePeer::STUDENT_ID); } $school_year = SchoolYearPeer::retrieveCurrent(); //Filtro solo las que son faltas. $criteria->add(StudentAttendancePeer::VALUE, 0, Criteria::GREATER_THAN); $criteria->addJoin(StudentAttendancePeer::CAREER_SCHOOL_YEAR_ID, CareerSchoolYearPeer::ID); $criteria->add(CareerSchoolYearPeer::SCHOOL_YEAR_ID, $school_year->getId()); $criteria->addDescendingOrderByColumn(StudentAttendancePeer::DAY); return $criteria; }
/** * This method filters students with preceptor in the AdminGeneratorFilter * * @param Criteria $criteria * @param integer $user_id */ public function joinPreceptorWithStudents($criteria, $user_id) { return PersonalPeer::joinWithStudents($criteria, $user_id); }