public function isvaliddurationAction()
 {
     $objPeriod = new Acad_Model_DbTable_Period();
     $request = $this->getRequest();
     $department_id = $request->getParam('department_id');
     $degree_id = $request->getParam('degree_id');
     $semester_id = $request->getParam('semester_id');
     $weekday_number = $request->getParam('weekday_number');
     $period_id = $request->getParam('period_id');
     $period_detail = $objPeriod->getIdPeriod($period_id);
     $period_number = $period_detail['period_number'];
     $tmpperiod_number = $period_number;
     $groups = Acad_Model_DbTable_Groups::getClassGroups($department_id, $degree_id);
     $totalgroups = count($groups);
     array_push($groups, array('group_id' => "ALL"));
     $grpcnt = 0;
     $tmpspan = 0;
     $notavailablegroups = array();
     $cnt = 0;
     while ($tmpperiod_number > 1 && $grpcnt < $totalgroups) {
         $tmpspan++;
         $tmpperiod_number = $tmpperiod_number - 1;
         $tmpperiod_id = $objPeriod->getPeriod($department_id, $degree_id, $semester_id, $weekday_number, $tmpperiod_number);
         $period_id = $tmpperiod_id[0]['period_id'];
         $group_detail = $this->model->groupPeroidDuration($period_id, $groups);
         if (count($group_detail) == 0) {
             continue;
         }
         $grpcnt = $grpcnt + count($group_detail);
         foreach ($group_detail as $key => $value) {
             if ($value['period_duration'] > $tmpspan) {
                 $notavailablegroups[$cnt] = $value['group_id'];
             }
             if ($value['group_id'] == 'ALL') {
                 $grpcnt = $totalgroups;
                 break;
             }
             foreach ($groups as $tmpkey => $tmpvalue) {
                 if ($tmpvalue['group_id'] == $value['group_id']) {
                     unset($groups[$tmpkey]);
                 }
             }
         }
     }
     print_r($notavailablegroups);
 }
Esempio n. 2
0
 /**
  * Get group(s) assigned to this period. 
  * @return array $groups
  */
 public function getGroups($periodDate, $faculty = null)
 {
     $sql = Acad_Model_DbTable_Period::getDefaultAdapter()->select()->from('timetable', array('timetable_id', 'group_id'))->where("period_id = ?  ", $this->_periodId)->where("? between `timetable`.valid_from AND `timetable`.valid_upto", $periodDate);
     if (isset($faculty)) {
         $sql->where("staff_id = ?", $faculty);
     }
     $groups = $sql->query()->fetchAll();
     $resultSet = null;
     $is_all = false;
     $timetable_id = '';
     foreach ($groups as $key => $value) {
         if (strtoupper($value['group_id']) == 'ALL') {
             $is_all = true;
             $timetable_id = $value['timetable_id'];
             break;
         }
     }
     if ($is_all) {
         $all_Groups = Acad_Model_DbTable_Groups::getClassGroups($this->getDepartment(), $this->getDegree());
         foreach ($all_Groups as $key => $value) {
             $resultSet[$key]['group_id'] = $value;
             $resultSet[$key]['timetable_id'] = $timetable_id;
         }
         return $resultSet;
     } else {
         return $groups;
     }
 }
Esempio n. 3
0
 /**
  * Get groups in period.
  * @param $period_id
  * @param $department_id
  * @param $degree_id
  * @param $staff_id
  */
 public static function getGroupsInPeriod($period_id, $department_id, $degree_id, $period_date, $staff_id = NULL)
 {
     $sql = self::getDefaultAdapter()->select()->from('timetable', array('timetable_id', 'group_id'))->where("period_id = ?  ", $period_id)->where("'{$period_date}' between `timetable`.valid_from AND `timetable`.valid_upto");
     if (isset($staff_id)) {
         $sql->where("staff_id = ?", $staff_id);
     }
     self::getDefaultAdapter()->select()->group('group_id')->order('group_id');
     $groups = $sql->query()->fetchAll();
     $resultSet = null;
     $is_all = false;
     $timetable_id = '';
     foreach ($groups as $key => $value) {
         if (strtoupper($value['group_id']) == 'ALL') {
             $is_all = true;
             $timetable_id = $value['timetable_id'];
             break;
         }
     }
     if ($is_all) {
         $all_Groups = Acad_Model_DbTable_Groups::getClassGroups($department_id, $degree_id);
         foreach ($all_Groups as $key => $value) {
             $resultSet[$key]['group_id'] = $value['group_id'];
             $resultSet[$key]['timetable_id'] = $timetable_id;
         }
         return $resultSet;
     } else {
         return $groups;
     }
 }
 public function getstudentsAction()
 {
     $request = $this->getRequest();
     $department_id = $request->getParam('department_id');
     $degree_id = $request->getParam('degree_id');
     $semester_id = $request->getParam('semester_id');
     $group_id = $request->getParam('group_id');
     if ('ALL' == strtoupper($group_id) or !isset($group_id)) {
         $groups = Acad_Model_DbTable_Groups::getClassGroups($department_id, $degree_id);
     } else {
         $groups = array($group_id);
     }
     $studentList = array();
     $resultSet = array();
     $resultSet['totalgroups'] = count($groups);
     $resultSet['group_id'] = $groups;
     $totalrows = 0;
     $totalstudents = 0;
     foreach ($groups as $key => $group_id) {
         $group_number = substr($group_id, strlen($group_id) - 1);
         $class = new Acad_Model_Class();
         $class->setDepartment($department_id)->setDegree($degree_id)->setSemester($semester_id);
         $studentList = Acad_Model_ClassMapper::fetchSemesterStudents($class, $group_id);
         $totalstudents = $totalstudents + count($studentList);
         if ($totalrows < count($studentList)) {
             $totalrows = count($studentList);
         }
         $resultSet[$group_id] = array("group_number" => $group_number, "students" => $studentList);
     }
     $resultSet['totalrows'] = $totalrows;
     $resultSet['totalstudents'] = $totalstudents;
     echo $this->_helper->json($resultSet, false);
 }