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 loadData(User $user) { $this->setFirstname($user->getFirstname()); $this->setSurname($user->getSurname()); $this->setBirthday($user->getBirthday()); $this->setCountry($user->getCountry()); return $this; }
public function getAgegroupByUser(Entity\User $user = null) { $ret = null; if ($user == null) { return $ret; } $birthday = $user->getBirthday(); if ($birthday == null) { return $ret; } return $this->getAgegroupByDate($birthday); }
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)); }
public function sendEticketsAction() { $request = $this->getRequest(); $long_real = (bool) $request->getParam('real', false); $short_real = (bool) $request->getParam('r', false); $isReal = $long_real | $short_real; #$long_count = (int) $request->getParam('count',false); #$short_count = (int) $request->getParam('c',false); #$ticket_count = $long_count + $short_count; $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); # correct package ticket_status $qb = $em->getRepository("ErsBase\\Entity\\Package")->createQueryBuilder('p'); $qb->where('p.ticket_status IS NULL'); $qb->orWhere("p.ticket_status = 'not_send'"); $noStatusPackages = $qb->getQuery()->getResult(); echo count($noStatusPackages) . " packages need to be corrected." . PHP_EOL; foreach ($noStatusPackages as $package) { $productId = array('1' => 0); foreach ($package->getItems() as $item) { if ($item->getStatus() == 'cancelled') { continue; } if ($item->getStatus() == 'transferred') { continue; } if (!isset($productId[$item->getProductId()])) { $productId[$item->getProductId()] = 1; } else { $productId[$item->getProductId()]++; } } if ($productId[1] > 1) { $order = $package->getOrder(); echo "Found more than one week ticket in package " . $package->getCode()->getValue() . " (order: " . $order->getCode()->getValue() . ")." . PHP_EOL; } # if the package status is paid and # there is only one week ticket in this package # or this package doesn't contain no week ticket if ($package->getStatus() == 'paid') { if ($productId[1] == 1 || $productId[1] == 0) { $package->setTicketStatus('can_send'); } else { $package->setTicketStatus('block_send'); } # if the package is not paid } else { $package->setTicketStatus('not_send'); } $em->persist($package); } $em->flush(); $packages = $em->getRepository("ErsBase\\Entity\\Package")->findBy(array('ticket_status' => 'can_send'), array(), 100); echo "Can send out e-tickets for " . count($packages) . " packages." . PHP_EOL; if (!$isReal) { echo "Use -r parameter to really send out all etickets." . PHP_EOL; exit; } echo PHP_EOL; for ($i = 10; $i > 0; $i--) { echo "Really sending out e-tickets in... " . $i . " seconds (ctrl+c to abort) \r"; sleep(1); } echo PHP_EOL; foreach ($packages as $package) { # prepare email (participant, buyer) $emailService = new Service\EmailService(); $emailService->setFrom('*****@*****.**'); $order = $package->getOrder(); $participant = $package->getParticipant(); $buyer = $order->getBuyer(); if ($participant->getEmail() == '') { $emailService->addTo($buyer); } elseif ($participant->getEmail() == $buyer->getEmail()) { $emailService->addTo($buyer); } else { $emailService->addTo($participant); $emailService->addCc($buyer); } /*$user = new Entity\User(); $user->setEmail('*****@*****.**'); $emailService->addTo($user);*/ $bcc = new Entity\User(); $bcc->setEmail('*****@*****.**'); $emailService->addBcc($bcc); $subject = "[EJC 2015] e-Ticket for " . $participant->getFirstname() . " " . $participant->getSurname() . " (order " . $order->getCode()->getValue() . ")"; $emailService->setSubject($subject); $viewModel = new ViewModel(array('package' => $package)); $viewModel->setTemplate('email/eticket-participant.phtml'); $viewRenderer = $this->getServiceLocator()->get('ViewRenderer'); $html = $viewRenderer->render($viewModel); $emailService->setHtmlMessage($html); # generate e-ticket pdf $eticketService = $this->getServiceLocator()->get('ErsBase\\Service\\ETicketService'); $eticketService->setLanguage('en'); $eticketService->setPackage($package); $eticketFile = $eticketService->generatePdf(); echo ob_get_clean(); echo "generated e-ticket " . $eticketFile . "." . PHP_EOL; $emailService->addAttachment($eticketFile); #$terms1 = getcwd().'/public/Terms-and-Conditions-ERS-EN-v4.pdf'; #$terms2 = getcwd().'/public/Terms-and-Conditions-ORGA-EN-v2.pdf'; #$emailService->addAttachment($terms1); #$emailService->addAttachment($terms2); # send out email $emailService->send(); $package->setTicketStatus('send_out'); $em->persist($package); $em->flush(); } }
public function sendPaymentReminderAction() { $logger = $this->getServiceLocator()->get('Logger'); $id = (int) $this->params()->fromRoute('id', 0); if (!$id) { $logger->info('there is no id'); return $this->redirect()->toRoute('admin/order', array()); } $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); $order = $em->getRepository("ErsBase\\Entity\\Order")->findOneBy(array('id' => $id)); $forrest = new Service\BreadcrumbService(); if (!$forrest->exists('order')) { $forrest->set('order', 'admin/order'); } $request = $this->getRequest(); if ($request->isPost()) { $ret = $request->getPost('del', 'No'); if ($ret == 'Yes') { $id = (int) $request->getPost('id'); $order = $em->getRepository("ErsBase\\Entity\\Order")->findOneBy(array('id' => $id)); # prepare email (participant, buyer) $emailService = new Service\EmailService(); $emailService->setFrom('*****@*****.**'); $buyer = $order->getBuyer(); $emailService->addTo($buyer); $bcc = new Entity\User(); $bcc->setEmail('*****@*****.**'); $emailService->addBcc($bcc); $subject = "[EJC 2015] Payment reminder for your order: " . $order->getCode()->getValue(); $emailService->setSubject($subject); $viewModel = new ViewModel(array('order' => $order)); $viewModel->setTemplate('email/payment-reminder.phtml'); $viewRender = $this->getServiceLocator()->get('ViewRenderer'); $html = $viewRender->render($viewModel); $emailService->setHtmlMessage($html); $emailService->send(); $breadcrumb = $forrest->get('order'); return $this->redirect()->toRoute($breadcrumb->route, $breadcrumb->params, $breadcrumb->options); } } return new ViewModel(array('order' => $order, 'breadcrumb' => $forrest->get('order'))); }
/** * Add Participant (add new Package and set participant) * * @param \Entity\User $participant * @return \Entity\Order */ public function addParticipant(User $participant) { $package = new Package(); $sessionId = $this->getSessionId('package'); $participant->setSessionId($sessionId); $package->setParticipant($participant); $package->setSessionId($sessionId); $this->packages[] = $package; return $this; }
public function mailEncodingAction() { $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); #$logger = $this->getServiceLocator()->get('Logger'); $order = $em->getRepository("ErsBase\\Entity\\Order")->findOneBy(array('id' => '17')); $viewModel = new ViewModel(array('order' => $order)); #$viewModel->setTemplate('email/purchase-info.phtml'); $viewModel->setTemplate('email/order-confirmation.phtml'); $viewRender = $this->getServiceLocator()->get('ViewRenderer'); $html = $viewRender->render($viewModel); #$logger->info('html: '.$html); $emailService = new Service\EmailFactory(); $emailService->setFrom('*****@*****.**'); $buyer = new Entity\User(); $buyer->setEmail('*****@*****.**'); $emailService->addTo($buyer); $emailService->setSubject('order confirmation'); $emailService->setHtmlMessage($html); #$emailService->setTextMessage('Encoding Test: 42,- €'); $emailService->send(); return true; }
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'); } }
public function sendEticketAction() { $forrest = new Service\BreadcrumbService(); if (!$forrest->exists('package')) { $forrest->set('package', 'admin/order'); } $logger = $this->getServiceLocator()->get('Logger'); $id = (int) $this->params()->fromRoute('id', 0); if (!$id) { $breadcrumb = $forrest->get('package'); return $this->redirect()->toRoute($breadcrumb->route, $breadcrumb->params, $breadcrumb->options); } $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); $package = $em->getRepository("ErsBase\\Entity\\Package")->findOneBy(array('id' => $id)); $request = $this->getRequest(); if ($request->isPost()) { $ret = $request->getPost('del', 'No'); if ($ret == 'Yes') { $id = (int) $request->getPost('id'); $package = $em->getRepository("ErsBase\\Entity\\Package")->findOneBy(array('id' => $id)); if ($package->getStatus() != 'paid') { return $this->redirect()->toRoute('admin/package', array('action' => 'send-eticket')); } # prepare email (participant, buyer) $emailService = new ersService\EmailService(); $emailService->setFrom('*****@*****.**'); $order = $package->getOrder(); $participant = $package->getParticipant(); $buyer = $order->getBuyer(); if ($participant->getEmail() == '') { $emailService->addTo($buyer); } elseif ($participant->getEmail() == $buyer->getEmail()) { $emailService->addTo($buyer); } else { $emailService->addTo($participant); $emailService->addCc($buyer); } $bcc = new Entity\User(); $bcc->setEmail('*****@*****.**'); $emailService->addBcc($bcc); $subject = "[EJC 2015] e-Ticket for " . $participant->getFirstname() . " " . $participant->getSurname() . " (order " . $order->getCode()->getValue() . ")"; $emailService->setSubject($subject); $viewModel = new ViewModel(array('package' => $package)); $viewModel->setTemplate('email/eticket-participant.phtml'); $viewRender = $this->getServiceLocator()->get('ViewRenderer'); $html = $viewRender->render($viewModel); $emailService->setHtmlMessage($html); # generate e-ticket pdf $eticketService = $this->getServiceLocator()->get('ErsBase\\Service\\ETicketService'); $eticketService->setLanguage('en'); $eticketService->setPackage($package); $eticketFile = $eticketService->generatePdf(); # send out email $emailService->addAttachment($eticketFile); #$terms1 = getcwd().'/public/Terms-and-Conditions-ERS-EN-v4.pdf'; #$terms2 = getcwd().'/public/Terms-and-Conditions-ORGA-EN-v2.pdf'; #$emailService->addAttachment($terms1); #$emailService->addAttachment($terms2); $emailService->send(); $package->setTicketStatus('send_out'); $em->persist($package); $em->flush(); /*$eticketService = $this->getServiceLocator()->get('ErsBase\Service\ETicketService'); $eticketService->setPackage($package); $filePath = $eticketService->generatePdf(); $logger->info('filename: '.$filePath);*/ $breadcrumb = $forrest->get('order'); return $this->redirect()->toRoute($breadcrumb->route, $breadcrumb->params, $breadcrumb->options); } } return new ViewModel(array('package' => $package, 'breadcrumb' => $forrest->get('package'))); }
public function sendConfirmationEmail($order_id) { $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager'); #$session_order = new Container('order'); $order = $em->getRepository("ErsBase\\Entity\\Order")->findOneBy(array('id' => $order_id)); $buyer = $order->getBuyer(); $this->setFrom('*****@*****.**'); $this->addTo($buyer); $bcc = new Entity\User(); $bcc->setEmail($this->getFrom()); $this->addBcc($bcc); $subject = "Your registration for EJC 2015 (order " . $order->getCode()->getValue() . ")"; $this->setSubject($subject); $viewModel = new ViewModel(array('order' => $order)); $viewModel->setTemplate('email/order-confirmation.phtml'); $viewRender = $this->getServiceLocator()->get('ViewRenderer'); $html = $viewRender->render($viewModel); $this->setHtmlMessage($html); $terms1 = getcwd() . '/public/Terms-and-Conditions-ERS-EN-v4.pdf'; $terms2 = getcwd() . '/public/Terms-and-Conditions-ORGA-EN-v2.pdf'; $this->addAttachment($terms1); $this->addAttachment($terms2); $this->send(); #$orderStatus = new Entity\OrderStatus(); #$orderStatus->setOrder($order); #$orderStatus->setValue('confirmation sent'); #$em->persist($orderStatus); # TODO: Create log entry that email was sent. $em->flush(); return true; }