/**
  * Save a sessional datesheet
  * 
  * @param  array|Acad_Model_Test_Sessional
  * @return void
  */
 public function save($sessional)
 {
     if ($sessional instanceof Acad_Model_Test_Sessional) {
         $id = $sessional->getTest_info_id();
         if ((string) $id === (string) (int) $id) {
             $data['date_of_conduct'] = $sessional->getDate_of_conduct();
             $data['time'] = $sessional->getTime();
             $data['max_marks'] = $sessional->getMax_marks();
             $data['pass_marks'] = $sessional->getPass_marks();
             return $this->getDbTable()->update($data, "test_info_id = {$id}");
         } else {
             $data['date_of_conduct'] = $sessional->getDate_of_conduct();
             $data['time'] = $sessional->getTime();
             $data['max_marks'] = $sessional->getMax_marks();
             $data['pass_marks'] = $sessional->getPass_marks();
             $data['department_id'] = $sessional->getDepartment_id();
             $data['degree_id'] = $sessional->getDegree_id();
             $data['semester_id'] = $sessional->getSemester_id();
             $data['subject_code'] = $sessional->getSubject_code();
             $data['test_id'] = $sessional->getTest_id();
             $data['test_type_id'] = $sessional->getTest_type_id();
             $today = new Zend_Date();
             $data['date_of_announcemnet'] = $today->toString('YYYY-MM-dd');
             $class = new Acad_Model_Class();
             $class->setDepartment($sessional->getDepartment_id())->setDegree($sessional->getDegree_id())->setSemester($sessional->getSemester_id());
             $studentInfo = $class->getStudents();
             $candidates = array();
             $cols = array('test_info_id', 'student_roll_no');
             $this->getDbTable()->getAdapter()->beginTransaction();
             $this->getDbTable()->insert($data);
             $id = $this->getDbTable()->getAdapter()->lastInsertId('test_info', 'test_info_id');
             foreach ($studentInfo as $key => $student) {
                 $candidates[] = "({$id}, " . $student['student_roll_no'] . ")";
             }
             // build the statement
             $sql = "INSERT INTO " . $this->getDbTable()->getAdapter()->quoteIdentifier('test_marks', true) . ' (' . implode(', ', $cols) . ') ' . 'VALUES ' . implode(', ', $candidates);
             try {
                 $this->getDbTable()->getAdapter()->query($sql);
             } catch (Zend_Exception $e) {
                 $this->getDbTable()->getAdapter()->rollBack();
                 throw new Zend_Exception('Can not get students\' list. Error Msg :' . $e->getMessage(), Zend_Log::ERR);
             }
             $this->getDbTable()->getAdapter()->commit();
             return $id;
         }
     }
 }
Beispiel #2
0
 /**
  * Get students in this period. 
  * @return array $groups
  */
 public function getStudents($periodDate, $faculty = null)
 {
     $class = new Acad_Model_Class();
     $class->setDepartment($this->getDepartment())->setDegree($this->getDegree())->setSemester($this->getSemester());
     $groupWiseStudents = array();
     $groups = self::getGroups($periodDate, $faculty);
     foreach ($groups as $key => $group) {
         $groupWiseStudents[$group['group_id']] = $class->getStudents($group['group_id']);
     }
 }