示例#1
0
 public function indexAction()
 {
     if (!$this->getRequest()->isPost()) {
         return $this->page404();
     }
     $data = $this->getRequest()->getPost();
     $form = new Search($this->getServiceLocator());
     $form->setData($data);
     if ($form->isValid()) {
         $formSearchDetail = new SearchDetail($this->getServiceLocator());
         $dataSearch = $data['search'];
         $dataSearchs = preg_split('/[\\s,.-]+/', $dataSearch);
         /** @var \Subject\Model\SubjectMapper $subjectMapper */
         $subjectMapper = $this->getServiceLocator()->get('Subject/Model/SubjectMapper');
         $subjects = $subjectMapper->fetchSearch($dataSearchs);
         $subjectIds = [];
         foreach ($subjects as $subject) {
             $subjectIds[] = $subject->getId();
         }
         $expertsub = new Subject();
         $expertsub->addOption('subjectIds', $subjectIds);
         /** @var \Expert\Model\Expert\SubjectMapper $expertSubjectMapper */
         $expertSubjectMapper = $this->getServiceLocator()->get('Expert/Model/Expert/SubjectMapper');
         $mentors = $expertSubjectMapper->search($expertsub);
         $this->getViewModel()->setVariables(['expert' => $mentors]);
         $this->getViewModel()->setVariables(['searchContent' => $dataSearch]);
         $this->getViewModel()->setVariables(['subjects' => $subjects]);
         $this->getViewModel()->setVariables(['form' => $formSearchDetail]);
         return $this->getViewModel();
     }
 }
 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();
 }
示例#3
0
 public function editAction()
 {
     $id = $this->params()->fromQuery('id');
     $user = new User();
     $user->setId($id);
     $user->setRole(User::ROLE_MENTOR);
     /** @var \User\Model\UserMapper $userMapper */
     $userMapper = $this->getServiceLocator()->get('User\\Model\\UserMapper');
     if (!$user->getId() || !$userMapper->getUser($user)) {
         return $this->page404();
     }
     $form = new \Admin\Form\Expert\Expert($this->getServiceLocator(), 'edit');
     $form->remove('afterSubmit');
     $form->setData($user->toFormValues());
     $expertsubject = new Expert\Subject();
     $expertsubject->setExpertId($user->getId());
     /** @var \Expert\Model\Expert\SubjectMapper $subjectExpertmapper */
     $subjectExpertmapper = $this->getServiceLocator()->get('Expert\\Model\\Expert\\SubjectMapper');
     $subjects = $subjectExpertmapper->fetchAllSubject($expertsubject);
     $subjectIdbs = [];
     if ($subjects) {
         $subjectIdbs = array_keys($subjects[$user->getId()]);
     }
     $form->get('subjectId')->setValue(implode(',', $subjectIdbs));
     $form->get('userId')->setValue($user->getId());
     $userName = $user->getFullName() ? $user->getUsername() . ' - ' . $user->getFullName() : $user->getUsername();
     $form->get('userName')->setValue($userName);
     if ($this->getRequest()->isPost()) {
         $form->setData($this->getRequest()->getPost());
         if ($form->isValid()) {
             $data = $form->getData();
             $user->setDescription($data['description']);
             if (!$data['subjectId']) {
                 $es = new Expert\Subject();
                 $es->setExpertId($user->getId());
                 $subjectExpertmapper->delete($es);
             }
             if ($data['subjectId']) {
                 $subjectIdas = explode(',', $data['subjectId']);
                 $subjectIdns = array_diff($subjectIdas, $subjectIdbs);
                 foreach ($subjectIdns as $subjId) {
                     $es = new Expert\Subject();
                     $es->setExpertId($user->getId());
                     $es->setSubjectId($subjId);
                     $es->setCreatedById($this->user()->getIdentity());
                     $es->setCreatedDateTime(DateBase::getCurrentDateTime());
                     $subjectExpertmapper->save($es);
                 }
                 $subjectIdds = array_diff($subjectIdbs, $subjectIdas);
                 foreach ($subjectIdds as $subjId) {
                     $es = new Expert\Subject();
                     $es->setExpertId($user->getId());
                     $es->setSubjectId($subjId);
                     $subjectExpertmapper->delete($es);
                 }
             }
             $userMapper->updateUser($user);
             return $this->redirect()->toUrl('/admin/expert');
         }
     }
     $this->getViewModel()->setVariables(['form' => $form]);
     return $this->getViewModel();
 }
示例#4
0
 /**
  * @author DuongNQ
  * @param \Expert\Model\Expert\Subject $exp
  * todo lay tat ca mon hoc ma mentor care
  */
 public function fetchAllSubject($exp)
 {
     $select = $this->getDbSql()->select(['es' => self::TABLE_NAME]);
     $select->join(['s' => \Subject\Model\SubjectMapper::TABLE_NAME], 's.id=es.subjectId', 'name');
     if ($exp->getExpertId()) {
         $select->where(['es.expertId' => $exp->getExpertId()]);
     }
     if ($exp->getOption('expertIds')) {
         $select->where(['es.expertId' => $exp->getOption('expertIds')]);
     }
     $query = $this->getDbSql()->buildSqlString($select);
     $rows = $this->getDbAdapter()->query($query, Adapter::QUERY_MODE_EXECUTE);
     $rows = $rows->toArray();
     $result = [];
     if (count($rows)) {
         foreach ($rows as $r) {
             $result[$r['expertId']][$r['subjectId']] = $r['name'];
         }
     }
     //        vdump($result);die;
     return $result;
 }
 public function viewAction()
 {
     $id = $this->params()->fromQuery('id');
     /** @var \User\Model\UserMapper $userMapper */
     $userMapper = $this->getServiceLocator()->get('\\User\\Model\\UserMapper');
     if (!$id || !$userMapper->get($id)) {
         return $this->page404();
     }
     $user = new User();
     $user = $userMapper->get($id);
     $this->getViewModel()->setVariable('user', $user);
     if ($user->getRole() == User::ROLE_MENTOR) {
         /** @var \Expert\Model\Expert\Subject $ex */
         $exsub = new Subject();
         $exsub->setExpertId($user->getId());
         /** @var \Expert\Model\Expert\SubjectMapper $expertSubjectMapper */
         $expertSubjectMapper = $this->getServiceLocator()->get('Expert\\Model\\Expert\\SubjectMapper');
         $subjects = $expertSubjectMapper->fetchAllSubject($exsub);
         $this->getViewModel()->setVariables(['subjects' => $subjects]);
     }
     return $this->getViewModel();
 }
 /**
  * @author DuongNQ
  * @param \Expert\Model\Expert\Subject $exp
  */
 public function featchAll($exp)
 {
     $select = $this->getDbSql()->select(array('es' => self::TABLE_NAME));
     $select->columns(['subjectId']);
     $select->join(['e' => ExpertMapper::TABLE_NAME], 'e.id=es.expertId', array('id'));
     $select->join(['s' => \Subject\Model\SubjectMapper::TABLE_NAME], 's.id=es.subjectId', ['subjectName' => 'name']);
     $select->order(['e.id' => 'DESC']);
     if ($exp->getOption('subjectIds')) {
         $select->where(['subjectId' => $exp->getOption('subjectIds')]);
     } else {
         $select->where(['subjectId' => $exp->getSubjectId()]);
     }
     $query = $this->getDbSql()->buildSqlString($select);
     $results = $this->getDbAdapter()->query($query, Adapter::QUERY_MODE_EXECUTE);
     $subjects = [];
     if (count($results)) {
         $results = $results->toArray();
         foreach ($results as $r) {
             $subjects[$r['id']][] = $r['subjectName'];
             $expertIds[] = $r['id'];
         }
     }
     unset($select);
     $select = $this->getDbSql()->select(array('e' => ExpertMapper::TABLE_NAME));
     $select->columns(['id', 'description', 'rating', 'rate', 'extraContent']);
     $select->where(['e.id' => $expertIds]);
     $select->join(['u' => UserMapper::TABLE_NAME], 'e.userId = u.id', ['username', 'fullName']);
     $query = $this->getDbSql()->buildSqlString($select);
     $results = $this->getDbAdapter()->query($query, Adapter::QUERY_MODE_EXECUTE);
     if (count($results)) {
         $results = $results->toArray();
         foreach ($results as $r) {
             if (isset($subjects[$r['id']])) {
                 $r['subject'] = $subjects[$r['id']];
             }
             $mentors[] = $r;
         }
     }
     return $mentors;
 }