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); }
/** * 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; } }
/** * 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); }