Exemplo n.º 1
0
 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')));
 }
Exemplo n.º 2
0
 public function loadData(User $user)
 {
     $this->setFirstname($user->getFirstname());
     $this->setSurname($user->getSurname());
     $this->setBirthday($user->getBirthday());
     $this->setCountry($user->getCountry());
     return $this;
 }
Exemplo n.º 3
0
 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);
 }
Exemplo n.º 4
0
 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));
 }
Exemplo n.º 5
0
 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();
     }
 }
Exemplo n.º 6
0
 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')));
 }
Exemplo n.º 7
0
 /**
  * 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;
 }
Exemplo n.º 8
0
 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;
 }
Exemplo n.º 9
0
 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');
     }
 }
Exemplo n.º 10
0
 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')));
 }
Exemplo n.º 11
0
 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;
 }