public function getperiodAction()
 {
     $request = $this->getRequest();
     $format = $request->getParam('format', 'json');
     $department = $request->getParam('department_id');
     $degree = $request->getParam('degree_id');
     $semester = $request->getParam('semester_id');
     $weekday = $request->getParam('weekday_number');
     if (isset($department) and isset($degree) and isset($semester) and isset($weekday)) {
         $result = Acad_Model_DbTable_Period::getPeriod($department, $degree, (int) $semester, (int) $weekday);
         switch (strtolower($format)) {
             case 'json':
                 $this->_helper->json($result);
                 return;
             case 'select':
                 echo '<select>';
                 echo '<option>Select one</option>';
                 foreach ($result as $key => $row) {
                     echo '<option value="' . $row['period_id'] . '">' . $row['period_number'] . '</option>';
                 }
                 echo '</select>';
                 return;
             default:
                 header("HTTP/1.1 400 Bad Request");
                 echo 'Unsupported format';
         }
     } else {
         header("HTTP/1.1 400 Bad Request");
     }
 }
Example #2
0
    public function periodStatus($periodId, $detail = FALSE)
    {
        $period = Acad_Model_DbTable_Period::getIdPeriod($periodId);
        $sql = 'SELECT
  `timetable`.timetable_id,
  `timetable`.subject_code,
  `timetable`.subject_mode_id,
  `timetable`.group_id,
  `timetable`.staff_id,
  `timetable`.period_duration,
  `timetable`.periods_covered,
  `timetable`.valid_from,
  `timetable`.valid_upto
FROM `period`
  JOIN `timetable`
    ON (`period`.`period_id` = `timetable`.`period_id`
       AND ( CURDATE() < `timetable`.valid_upto AND CURDATE() < `timetable`.valid_from))
WHERE (`period`.department_id = ?
       AND `period`.degree_id = ?
       AND `period`.semester_id = ?
       AND `period`.weekday_number = ?
       AND `period`.period_type_id != "BRK")
    AND FIND_IN_SET(?, periods_covered);';
        $params = array($period['department_id'], $period['degree_id'], $period['semester_id'], $period['weekday_number'], $period['period_number']);
        $totalgroups = Acad_Model_DbTable_Groups::getClassGroups($period['department_id'], $period['degree_id'], TRUE);
        $periodStatus = self::getDefaultAdapter()->fetchAll($sql, $params);
        $finalStatus = array();
        if (!$periodStatus) {
            $status = 'EMPTY';
        } elseif ('ALL' == strtoupper($periodStatus[0]['group_id'])) {
            if ($detail) {
                $finalStatus['periodStatus'] = $periodStatus;
            }
            $finalStatus['occupiedGroups'] = 'ALL';
            $status = 'FULL';
        } else {
            $occupiedGroups = array();
            foreach ($periodStatus as $key => $group) {
                $occupiedGroups[] = $group['group_id'];
            }
            $finalStatus['occupiedGroups'] = $occupiedGroups;
            $tmpavailableGroups = array_diff($totalgroups, $occupiedGroups);
            if ($detail) {
                $finalStatus['periodStatus'] = $periodStatus;
            }
            if (count($tmpavailableGroups)) {
                // $tmpavailableGroups has unordered keys so $availableGroups is created.
                foreach ($tmpavailableGroups as $key => $value) {
                    $availableGroups[] = $value;
                }
                $finalStatus['availableGroups'] = $availableGroups;
                $status = 'PARTIAL';
            } else {
                $status = 'FULL';
            }
        }
        $finalStatus['maxGroups'] = $totalgroups;
        $finalStatus['STATUS'] = $status;
        return $finalStatus;
    }
 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);
 }
Example #4
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;
     }
 }