protected function execute($arguments = array(), $options = array())
 {
     // initialize the database connection
     $databaseManager = new sfDatabaseManager($this->configuration);
     $connection = $databaseManager->getDatabase($options['connection'] ? $options['connection'] : null)->getConnection();
     $c = new Criteria();
     foreach (StudentAttendancePeer::doSelect($c) as $student_attendance) {
         $c1 = new Criteria();
         $c1->add(StudentAttendancePeer::ID, $student_attendance->getId(), Criteria::NOT_EQUAL);
         $c1->add(StudentAttendancePeer::STUDENT_ID, $student_attendance->getStudentId());
         $c1->add(StudentAttendancePeer::DAY, $student_attendance->getDay(), Criteria::EQUAL);
         foreach (StudentAttendancePeer::doSelect($c1) as $delete) {
             $delete->delete();
         }
     }
     // add your code here
 }
예제 #2
0
 public function executeIndex(sfWebRequest $request)
 {
     if ($request->getParameter('ids')) {
         $this->forward('attendance_justification', 'justificate');
     }
     $filter_class = SchoolBehaviourFactory::getInstance()->getFormFactory()->getAttendanceJustificationFormFilter();
     $this->form = new $filter_class($this->getFilterCriteria());
     $this->has_subject_attendance = SchoolBehaviourFactory::getInstance()->hasSubjectAttendance();
     if ($request->isMethod('POST')) {
         $params = $request->getParameter('attendance_justification');
         $this->form->bind($params);
         if ($this->form->isValid()) {
             $this->setFilterCriteria($this->form->getValues());
             $criteria = $this->buildCriteria();
             $this->student_attendances = StudentAttendancePeer::doSelect($criteria);
         }
     } else {
         $criteria = $this->buildCriteria();
         $this->student_attendances = StudentAttendancePeer::doSelect($criteria);
     }
 }
 /**
  * This method returns the absences depending of arguments:
  *
  * IF period_id is null, then returns all the absences.
  * IF course_subject_id is null then returns the absences per day.
  * IF include_justificated is null, then excludes the absences justificated.
  *
  * @param type $career_school_year_id
  * @param type $student_id
  * @param type $period_id
  * @param type $course_subject_id
  * @param type $include_justificated
  *
  * @return StudentAttendance array
  */
 public function getAbsences($career_school_year_id, $student_id, $period = null, $course_subject_id = null, $exclude_justificated = true)
 {
     $c = new Criteria();
     $c->add(StudentAttendancePeer::STUDENT_ID, $student_id);
     $c->add(StudentAttendancePeer::CAREER_SCHOOL_YEAR_ID, $career_school_year_id);
     if ($course_subject_id instanceof CourseSubject) {
         $c->add(StudentAttendancePeer::COURSE_SUBJECT_ID, $course_subject_id->getId());
     } else {
         $c->add(StudentAttendancePeer::COURSE_SUBJECT_ID, $course_subject_id);
     }
     $c->add(StudentAttendancePeer::VALUE, 0, Criteria::NOT_EQUAL);
     if (!is_null($period)) {
         $criterion = $c->getNewCriterion(StudentAttendancePeer::DAY, $period->getStartAt(), Criteria::GREATER_EQUAL);
         $criterion->addAnd($c->getNewCriterion(StudentAttendancePeer::DAY, $period->getEndAt(), Criteria::LESS_EQUAL));
         $c->add($criterion);
     }
     return $student_attendances = StudentAttendancePeer::doSelect($c);
 }
 public function getAbsencesReport($career_school_year_id, $student_id)
 {
     $c = new Criteria();
     $c->add(StudentAttendancePeer::STUDENT_ID, $student_id);
     $c->add(StudentAttendancePeer::CAREER_SCHOOL_YEAR_ID, $career_school_year_id);
     $c->add(StudentAttendancePeer::VALUE, 0, Criteria::NOT_EQUAL);
     $c->addAscendingOrderByColumn(StudentAttendancePeer::DAY);
     return $student_attendances = StudentAttendancePeer::doSelect($c);
 }
예제 #5
0
 public function getTotalAbsences()
 {
     $c = new Criteria();
     $c->add(StudentAttendancePeer::STUDENT_ID, $this->getStudentId());
     $c->add(StudentAttendancePeer::COURSE_SUBJECT_ID, $this->getCourseSubjectId());
     $c->add(StudentAttendancePeer::STUDENT_ATTENDANCE_JUSTIFICATION_ID, null, Criteria::ISNULL);
     $student_attendances = StudentAttendancePeer::doSelect($c);
     $total = 0;
     foreach ($student_attendances as $student_attendance) {
         $total += $student_attendance->getAbsenceType() ? $student_attendance->getAbsenceType()->getValue() : $student_attendance->getValue();
     }
     //$total = $this->roundAbsences($total);
     return $total;
 }