public function addAction() { $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); $form = new Form\Participant(); $form->setServiceLocator($this->getServiceLocator()); $optionService = $this->getServiceLocator()->get('ErsBase\\Service\\OptionService'); $form->get('Country_id')->setValueOptions($optionService->getCountryOptions()); $user = new Entity\User(); $user->setActive(false); $form->bind($user); $breadcrumbService = new Service\BreadcrumbService(); $request = $this->getRequest(); if ($request->isPost()) { #$inputFilter = new InputFilter\Participant(); #$inputFilter->setEntityManager($em); #$form->setInputFilter($inputFilter->getInputFilter()); $form->setData($request->getPost()); if ($form->isValid()) { $orderService = $this->getServiceLocator()->get('ErsBase\\Service\\OrderService'); $order = $orderService->getOrder(); $participant = $em->getRepository('ErsBase\\Entity\\User')->findOneBy(array('email' => $user->getEmail(), 'active' => false)); if ($participant) { $participant->loadData($user); $em->persist($participant); $orderService->addParticipant($participant); #$em->persist($participant); } else { $active_user = $em->getRepository('ErsBase\\Entity\\User')->findOneBy(array('email' => $user->getEmail(), 'active' => true)); if ($active_user) { # TODO: flash error message: login is needed } else { #$em->persist($user); $orderService->addParticipant($user); } } $orderService->setCountryId($user->getCountryId()); if ($user->getCountryId() == 0) { $user->setCountryId(null); $user->setCountry(null); } $em->persist($order); $em->flush(); $breadcrumb = $breadcrumbService->get('participant'); if ($breadcrumb->route == 'product' && isset($breadcrumb->params['action']) && ($breadcrumb->params['action'] == 'add' || $breadcrumb->params['action'] == 'edit')) { unset($breadcrumb->params['agegroup_id']); $breadcrumb->options['fragment'] = 'person'; $breadcrumb->options['query']['participant_id'] = $user->getId(); } return $this->redirect()->toRoute($breadcrumb->route, $breadcrumb->params, $breadcrumb->options); } else { $logger = $this->getServiceLocator()->get('Logger'); $logger->warn($form->getMessages()); } } if (!$breadcrumbService->exists('participant')) { $breadcrumbService->set('participant', 'participant'); } return new ViewModel(array('form' => $form, 'breadcrumb' => $breadcrumbService->get('participant'))); }
public function addAction() { $forrest = new Service\BreadcrumbService(); if (!$forrest->exists('user')) { $forrest->set('user', 'admin/user'); } $breadcrumb = $forrest->get('user'); $form = new Form\User(); $form->get('submit')->setValue('Add'); $form->get('Country_id')->setValueOptions($this->getCountryOptions()); $request = $this->getRequest(); if ($request->isPost()) { $user = new Entity\User(); #$form->setInputFilter($user->getInputFilter()); $inputFilter = $this->getServiceLocator()->get('Admin\\InputFilter\\User'); $form->setInputFilter($inputFilter->getInputFilter()); $form->setData($request->getPost()); if ($form->isValid()) { $user->populate($form->getData()); if ($user->getEmail() == '') { $user->setEmail(null); } if ($user->getCountryId() == 0) { $user->setCountry(null); $user->setCountryId(null); } $user->setActive(true); $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); $em->persist($user); $em->flush(); return $this->redirect()->toRoute($breadcrumb->route, $breadcrumb->params, $breadcrumb->options); } else { $logger = $this->getServiceLocator()->get('Logger'); $logger->warn($form->getMessages()); } } return new ViewModel(array('form' => $form)); }