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(); }
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(); }
/** * @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; }