예제 #1
0
 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();
 }
예제 #2
0
 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);
 }