public function addAction()
 {
     $form = new \Admin\Form\Expert\Expert($this->getServiceLocator());
     if ($this->getRequest()->isPost()) {
         $form->setData($this->getRequest()->getPost());
         if ($form->isValid()) {
             $data = $form->getData();
             /** @var \Expert\Model\Expert $expert */
             $expert = new Expert();
             $expert->exchangeArray($data);
             $expert->setCreatedById($this->user()->getIdentity());
             $expert->setCreatedDateTime(DateBase::getCurrentDateTime());
             $expert->setExtracontent(json_encode($data['subjectName']));
             $user = new User();
             /** @var \User\Model\UserMapper $userMapper */
             $userMapper = $this->getServiceLocator()->get('User\\Model\\UserMapper');
             $user = $userMapper->get($expert->getUserId());
             $user->setRole(User::ROLE_MENTOR);
             $userMapper->updateUser($user);
             /** @var \Expert\Model\ExpertMapper $expertMapper */
             $expertMapper = $this->getServiceLocator()->get('Expert\\Model\\ExpertMapper');
             /** @var \Subject\Model\SubjectMapper $subjectMapper */
             $subjectMapper = $this->getServiceLocator()->get('Subject\\Model\\SubjectMapper');
             $expert = $expertMapper->save($expert);
             $subjectIds = explode(',', $data['subjectId']);
             foreach ($subjectIds as $subjectId) {
                 $subject = new Subject();
                 $subject->setId($subjectId);
                 if ($subjectMapper->get($subject)) {
                     $subjectNames[] = $subject->getName();
                     $expertSubject = new Expert\Subject();
                     $expertSubject->setExpertId($expert->getId());
                     $expertSubject->setSubjectId($subjectId);
                     $expertSubject->setCreatedById($this->user()->getIdentity());
                     $expertSubject->setCreatedDateTime(DateBase::getCurrentDateTime());
                     /** @var \Expert\Model\Expert\SubjectMapper $expertSubjectMapper */
                     $expertSubjectMapper = $this->getServiceLocator()->get('Expert\\Model\\Expert\\SubjectMapper');
                     $expertSubjectMapper->save($expertSubject);
                 }
             }
             $expert->setExtracontent(json_encode(implode(',', $subjectNames)));
             $expertMapper->save($expert);
             if ($form->get('afterSubmit')->getValue()) {
                 return $this->redirect()->toUrl($form->get('afterSubmit')->getValue());
             }
         }
     }
     $this->getViewModel()->setVariable('form', $form);
     return $this->getViewModel();
 }
Esempio n. 2
0
 public function viewAction()
 {
     $subjectId = $this->params()->fromQuery('id');
     /** @var \Subject\Model\SubjectMapper $subjectMapper */
     $subjectMapper = $this->getServiceLocator()->get('Subject\\Model\\SubjectMapper');
     /** @var  \Subject\Model\Subject $subject */
     $subjectExpert = new \Expert\Model\Expert\Subject();
     if (!$subjectId) {
         return $this->page404();
     }
     if (count(explode(',', $subjectId)) > 1) {
         $count = 0;
         foreach (explode(',', $subjectId) as $sId) {
             $subject = new Subject();
             $subject->setId($sId);
             if (!$subjectMapper->get($subject)) {
                 $count++;
             } else {
                 $subjectIds[] = $sId;
             }
         }
         if ($count == count(explode(',', $subjectId))) {
             return $this->page404();
         }
         $subjectExpert->addOption('subjectIds', $subjectIds);
     } else {
         $subject = new Subject();
         $subject->setId($subjectId);
         if (!$subjectMapper->get($subject)) {
             return $this->page404();
         }
         $subjectExpert->setSubjectId($subject->getId());
     }
     /** @var \Expert\Model\Expert\SubjectMapper $subjectExpertMapper */
     $subjectExpertMapper = $this->getServiceLocator()->get('Expert\\Model\\Expert\\SubjectMapper');
     $this->getViewModel()->setVariables(['experts' => $subjectExpertMapper->search($subjectExpert, null)]);
     $this->getViewModel()->setVariables(['subject' => $subject]);
     return $this->getViewModel();
 }
Esempio n. 3
0
 /**
  * @author DuongNQ
  * $return \zend\View\Model\JsonModel
  */
 public function loadsubjectAction()
 {
     if ($this->getRequest()->isPost()) {
         if ($this->getRequest()->getPost()->toArray()['subjectId'] != '') {
             $subjectIds = explode(',', $this->getRequest()->getPost()->toArray()['subjectId']);
         }
         /** @var \Subject\Model\SubjectMapper $subjectMapper */
         $subjectMapper = $this->getServiceLocator()->get('\\Subject\\Model\\SubjectMapper');
         $subjectNames = [];
         if (count($subjectIds) > 0) {
             foreach ($subjectIds as $subjectId) {
                 $subject = new Subject();
                 $subject->setId($subjectId);
                 $subject = $subjectMapper->get($subject);
                 $subjectNames[$subjectId] = $subject->getName();
             }
         }
         return new JsonModel($subjectNames);
     } else {
         return null;
     }
 }
Esempio n. 4
0
 /**
  *
  * @author DuongNQ
  * @return array null
  * @param \Subject\Model\Subject $sub
  */
 public function save($sub)
 {
     $data = array('name' => $sub->getName(), 'categoryId' => $sub->getCategoryId(), 'description' => $sub->getDescription() ?: null, 'createdById' => $sub->getCreatedById(), 'createdDateTime' => $sub->getCreatedDateTime());
     /* @var $dbAdapter \Zend\Db\Adapter\Adapter */
     $dbAdapter = $this->getServiceLocator()->get('dbAdapter');
     /* @var $dbSql \Zend\Db\Sql\Sql */
     $dbSql = $this->getServiceLocator()->get('dbSql');
     if (!$sub->getId()) {
         $insert = $this->getDbSql()->insert(self::TABLE_NAME);
         $insert->values($data);
         $query = $dbSql->buildSqlString($insert);
         /* @var $results \Zend\Db\Adapter\Driver\Pdo\Result */
         $results = $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE);
         $sub->setId($results->getGeneratedValue());
     } else {
         $update = $this->getDbSql()->update(self::TABLE_NAME);
         $update->set($data);
         $update->where(['id' => (int) $sub->getId()]);
         $query = $dbSql->buildSqlString($update);
         $results = $dbAdapter->query($query, $dbAdapter::QUERY_MODE_EXECUTE);
     }
     return $results;
 }