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)); }
private function addParticipantsToOrder() { $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); if ($this->getUser()) { $orderService = $this->getServiceLocator()->get('ErsBase\\Service\\OrderService'); $countries = array(); /* * add logged in user */ $login_user = $this->getUser(); $newUser = new Entity\User(); $newUser->populate($login_user->getArrayCopy()); if ($newUser->getCountryId()) { if (isset($countries[$newUser->getCountryId()])) { $country = $countries[$newUser->getCountryId()]; } else { $country = $em->getRepository("ErsBase\\Entity\\Country")->findOneBy(array('id' => $newUser->getCountryId())); $countries[$country->getId()] = $country; } $newUser->setCountry($country); } else { $newUser->setCountry(null); $newUser->setCountryId(null); } $package = $orderService->getOrder()->getPackageByParticipantEmail($login_user->getEmail()); if ($package) { $package->setParticipant($newUser); } else { $orderService->addParticipant($newUser); } /* * add users from former orders */ $orders = $em->getRepository("ErsBase\\Entity\\Order")->findBy(array('buyer_id' => $this->getUser()->getId())); foreach ($orders as $order) { $count = 1; foreach ($order->getParticipants() as $user) { $package = $orderService->getOrder()->getPackageByParticipantEmail($user->getEmail()); $newUser = new Entity\User(); $newUser->populate($user->getArrayCopy()); if ($newUser->getCountryId()) { if (isset($countries[$newUser->getCountryId()])) { $country = $countries[$newUser->getCountryId()]; } else { $country = $em->getRepository("ErsBase\\Entity\\Country")->findOneBy(array('id' => $newUser->getCountryId())); $countries[$country->getId()] = $country; } $newUser->setCountry($country); } else { $newUser->setCountry(null); $newUser->setCountryId(null); } if ($package) { $package->setParticipant($newUser); } else { $orderService->getOrder()->addParticipant($newUser); } $count++; } } } else { throw new \Exception('unable to find logged in user'); } }