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