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