public function saveSubject(JosSubject $subject)
 {
     $data = array('name' => $subject->getName(), 'year_id' => $subject->getYearId());
     $value_id = (int) $subject->getValueId();
     if ($value_id == 0) {
         $this->tableGateway->insert($data);
     } else {
         if ($this->getSubjectByArrayConditionAndArrayColumn(array('value_id' => $value_id), array('name'))) {
             $this->tableGateway->update($data, array('value_id' => $value_id));
         } else {
             return false;
         }
     }
     return true;
 }
 public function editAction()
 {
     // edit form
     $edit_form = new EditSubjectForm();
     $request = $this->getRequest();
     if ($request->isPost()) {
         $post = $request->getPost();
         $edit_form->setData($post);
         if ($edit_form->isValid()) {
             // khai báo model bảng jos_year
             $jos_year_table = $this->getServiceLocator()->get('NamHoc\\Model\\JosYearTable');
             // lấy year_id default
             $years = $jos_year_table->getYearByArrayConditionAndArrayColumn(array('is_active'));
             // không tồn tại year default
             if (!$years) {
                 $this->flashMessenger()->addErrorMessage('Lỗi. Bạn muốn thêm "Môn Học" vào năm học nào? Vui lòng kiểm tra lại!');
                 return $this->redirect()->toRoute('mon_hoc/crud', array('action' => 'index'));
             }
             // tạo điểm truy cập csdl jos_subject
             $jos_subject_table = $this->getServiceLocator()->get('MonHoc\\Model\\JosSubjectTable');
             // kiểm tra id vừa post có tồn tại không
             $subject = $jos_subject_table->getSubjectByArrayConditionAndArrayColumn(array('value_id' => $post['value_id']), array('year_id'));
             if (!$subject) {
                 $this->flashMessenger()->addErrorMessage('Lỗi. Môn học cần sửa không tồn tại. Vui lòng kiểm tra lại!');
                 return $this->redirect()->toRoute('mon_hoc/crud', array('action' => 'index'));
             }
             // kiểm tra với năm hiện tại có tồn tại dòng nào có tên như trên chưa
             // nếu có kiểm tra có khác id không
             $jos_subject_exist = $jos_subject_table->getSubjectByArrayConditionAndArrayColumn(array('name' => $post['name'], 'year_id' => $years[0]['year_id']), array('value_id'));
             if ($jos_subject_exist and $post['value_id'] != $jos_subject_exist[0]['value_id']) {
                 $this->flashMessenger()->addErrorMessage('Lỗi. Tên Môn học đã tồn tại. Vui lòng kiểm tra lại!');
                 return $this->redirect()->toRoute('mon_hoc/crud', array('action' => 'index'));
             }
             // luu lại
             $new_subject = new JosSubject();
             $new_subject->exchangeArray($post);
             $new_subject->setYearId($subject[0]['year_id']);
             $jos_subject_table->saveSubject($new_subject);
             // thông báo thành công
             $this->flashMessenger()->addSuccessMessage('Chúc mừng, cập nhật môn học thành công!');
             return $this->redirect()->toRoute('mon_hoc/crud', array('action' => 'index'));
         }
     }
     $this->flashMessenger()->addErrorMessage('Lỗi, thực thi không thành công. Vui lòng kiểm tra lại!');
     return $this->redirect()->toRoute('mon_hoc/crud', array('action' => 'index'));
 }