public function saveCertificateUser(JosCertificateUser $certificate_user)
 {
     $data = array('certificate_id' => $certificate_user->getCertificateId(), 'user_id' => $certificate_user->getUserId(), 'note' => $certificate_user->getNote(), 'level' => $certificate_user->getLevel());
     $this->tableGateway->insert($data);
 }
 public function editCertificateAction()
 {
     $request = $this->getRequest();
     if ($request->isPost()) {
         $post = $request->getPost();
         if (isset($post['id'])) {
             $id = $post['id'];
             unset($post['id']);
             // nếu đã đăng nhập
             $read = $this->getServiceLocator()->get('AuthService')->getStorage()->read();
             if (isset($read['username']) and $read['username']) {
                 // tạo điểm truy cập jos_users table
                 $jos_users_table = $this->getServiceLocator()->get('Permission\\Model\\JosUsersTable');
                 // kiểm tra user đang đăng nhập
                 $user = $jos_users_table->getGiangVienByArrayConditionAndArrayColumns(array('username' => $read['username']));
                 // kiểm tra user có quyền editAllProfile không
                 $white_lists = $read['white_list'];
                 $edit_all_profile = 0;
                 foreach ($white_lists as $key => $white_list) {
                     if ($white_list['action'] == 'editAllProfile') {
                         $edit_all_profile = 1;
                     }
                 }
                 // nếu id cần sửa bằng với user_id đang đăng nhập hoặc có quyền editAllProfile
                 if ($user and $user[0]['id'] == $id or $edit_all_profile == 1) {
                     // lấy year_id default
                     $jos_year_table = $this->getServiceLocator()->get('NamHoc\\Model\\JosYearTable');
                     $year = $jos_year_table->getYearByArrayConditionAndArrayColumn(array('is_active' => 1));
                     if (!$year or !isset($year[0]['year_id'])) {
                         die('Lỗi, Không xác định được năm cần sửa');
                     }
                     $year_id = $year[0]['year_id'];
                     // điểm truy cập csdl
                     $certificate_table_jos_certificate = $this->getServiceLocator()->get('ChungChiKhac\\Model\\JosCertificateTable');
                     $certificate_table_jos_certificate_user = $this->getServiceLocator()->get('ChungChiKhac\\Model\\JosCertificateUserTable');
                     //  lấy tất cả chứng chỉ trong năm đang active
                     $certificate_lists = $certificate_table_jos_certificate->getCertificateByYearActive();
                     // tạo form certificate
                     $certificate_edit_form = new EditCertificateForm($this->getServiceLocator(), $certificate_lists);
                     $certificate_edit_form->setData($post);
                     if ($certificate_edit_form->isValid()) {
                         $error = '';
                         foreach ($certificate_lists as $key => $certificate_list) {
                             // xóa bỏ dữ liệu
                             $certificate_table_jos_certificate_user->deleteCertificateUser(array('certificate_id' => $certificate_list['value_id'], 'user_id' => $id));
                             $certificate_user_new = new JosCertificateUser();
                             if ($certificate_list['name'] == 'Ngoại ngữ') {
                                 $certificate_user_new->setCertificateId($certificate_list['value_id']);
                                 $certificate_user_new->setUserId($id);
                                 $certificate_level = '';
                                 if (isset($post['certificate_level_' . $certificate_list['value_id']])) {
                                     $certificate_level = $post['certificate_level_' . $certificate_list['value_id']];
                                 }
                                 $certificate_user_new->setLevel($certificate_level);
                                 $certificate_note = '';
                                 if (isset($post['certificate_loai_ngoai_ngu_' . $certificate_list['value_id']])) {
                                     $certificate_note = $post['certificate_loai_ngoai_ngu_' . $certificate_list['value_id']];
                                 }
                                 $certificate_user_new->setNote($certificate_note);
                             } else {
                                 $certificate_user_new->setCertificateId($certificate_list['value_id']);
                                 $certificate_user_new->setUserId($id);
                                 $certificate_level = '';
                                 $certificate_user_new->setLevel($certificate_level);
                                 $certificate_note = 0;
                                 if (isset($post['certificate_check_' . $certificate_list['value_id']]) and isset($post['certificate_note_' . $certificate_list['value_id']]) and $post['certificate_check_' . $certificate_list['value_id']] == 1) {
                                     $certificate_note = $post['certificate_note_' . $certificate_list['value_id']];
                                 }
                                 $certificate_user_new->setNote($certificate_note);
                             }
                             $certificate_table_jos_certificate_user->saveCertificateUser($certificate_user_new);
                         }
                         // cập nhật thành công
                         if (!$error) {
                             $this->flashMessenger()->addSuccessMessage('Cập nhật thành công!');
                         } else {
                             $error = 'dữ liệu cột: ' . $error . ' nhập không đúng. Vui lòng kiểm tra lại!';
                             $this->flashMessenger()->addErrorMessage($error);
                         }
                         return $this->redirect()->toRoute('application/crud', array('action' => 'index', 'id' => $id));
                     } else {
                         die(var_dump($certificate_edit_form->getMessages()));
                     }
                 }
             }
         }
         if (isset($id)) {
             $this->flashMessenger()->addErrorMessage('Bạn không có quyền truy cập. Vui lòng kiểm tra lại!');
             return $this->redirect()->toRoute('application/crud', array('action' => 'index', 'id' => $id));
         }
     }
     $this->flashMessenger()->addErrorMessage('Bạn không có quyền truy cập. Vui lòng kiểm tra lại!');
     return $this->redirect()->toRoute('application/crud', array('action' => 'index'));
 }