예제 #1
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();
     }
 }
예제 #2
0
 public function requestPasswordAction()
 {
     $form = new Form\RequestPassword();
     $logger = $this->getServiceLocator()->get('Logger');
     $sent = false;
     $request = $this->getRequest();
     if ($request->isPost()) {
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $data = $form->getData();
             #$logger->info($data);
             $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager');
             $user = $em->getRepository("ErsBase\\Entity\\User")->findOneBy(array('email' => $data['email']));
             if ($user) {
                 $user->genHashKey();
                 $em->persist($user);
                 $em->flush();
                 $emailService = new Service\EmailService();
                 #$emailService->setFrom('*****@*****.**');
                 $emailService->addTo($user);
                 $emailService->setSubject('EJC Registration System: Password Request Link');
                 $viewModel = new ViewModel(array('user' => $user));
                 $viewModel->setTemplate('email/request-password.phtml');
                 $viewRender = $this->getServiceLocator()->get('ViewRenderer');
                 $html = $viewRender->render($viewModel);
                 $emailService->setHtmlMessage($html);
                 $emailService->send();
             }
             $sent = true;
             #return $this->redirect()->toRoute('profile', array('action' => 'request-password'));
         } else {
             $logger->warn($form->getMessages());
         }
     }
     return new ViewModel(array('sent' => $sent, 'form' => $form));
 }
예제 #3
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')));
 }
예제 #4
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')));
 }
예제 #5
0
파일: Module.php 프로젝트: odegroot/ers
 public function getServiceConfig()
 {
     return array('factories' => array('ErsBase\\Service\\CodeService' => 'ErsBase\\Service\\Factory\\CodeFactory', 'ErsBase\\Service\\EmailService' => function ($sm) {
         $emailService = new Service\EmailService();
         $emailService->setServiceLocator($sm);
         return $emailService;
     }, 'ErsBase\\Service\\CloneService' => function ($sm) {
         $service = new Service\CloneService();
         $service->setServiceLocator($sm);
         return $service;
     }, 'ErsBase\\Service\\AgegroupService:price' => function ($sm) {
         $agegroupService = new Service\AgegroupService();
         $em = $sm->get('Doctrine\\ORM\\EntityManager');
         $agegroups = $em->getRepository("ErsBase\\Entity\\Agegroup")->findBy(array('price_change' => '1'));
         $agegroupService->setAgegroups($agegroups);
         return $agegroupService;
     }, 'ErsBase\\Service\\AgegroupService:ticket' => function ($sm) {
         $agegroupService = new Service\AgegroupService();
         $em = $sm->get('Doctrine\\ORM\\EntityManager');
         $agegroups = $em->getRepository("ErsBase\\Entity\\Agegroup")->findBy(array('ticket_change' => '1'));
         $agegroupService->setAgegroups($agegroups);
         return $agegroupService;
     }, 'ErsBase\\Service\\DeadlineService:price' => function ($sm) {
         $deadlineService = new Service\DeadlineService();
         $em = $sm->get('Doctrine\\ORM\\EntityManager');
         $deadlines = $em->getRepository("ErsBase\\Entity\\Deadline")->findBy(array('price_change' => '1'));
         $deadlineService->setDeadlines($deadlines);
         return $deadlineService;
     }, 'ErsBase\\Service\\DeadlineService:noprice' => function ($sm) {
         $deadlineService = new Service\DeadlineService();
         $em = $sm->get('Doctrine\\ORM\\EntityManager');
         $deadlines = $em->getRepository("ErsBase\\Entity\\Deadline")->findBy(array('price_change' => '0'));
         $deadlineService->setDeadlines($deadlines);
         return $deadlineService;
     }, 'ErsBase\\Service\\DeadlineService:all' => function ($sm) {
         $deadlineService = new Service\DeadlineService();
         $em = $sm->get('Doctrine\\ORM\\EntityManager');
         $deadlines = $em->getRepository("ErsBase\\Entity\\Deadline")->findAll();
         $deadlineService->setDeadlines($deadlines);
         return $deadlineService;
     }, 'ErsBase\\Service\\TicketCounterService' => function ($sm) {
         $ticketCounterService = new Service\TicketCounterService();
         $ticketCounterService->setServiceLocator($sm);
         return $ticketCounterService;
     }, 'ErsBase\\Service\\ETicketService' => function ($sm) {
         $service = new Service\ETicketService();
         $service->setServiceLocator($sm);
         $em = $sm->get('Doctrine\\ORM\\EntityManager');
         $products = $em->getRepository("ErsBase\\Entity\\Product")->findBy(array('visible' => '1'), array('ordering' => 'ASC'));
         $service->setProducts($products);
         return $service;
     }, 'ErsBase\\Service\\OrderService' => function ($sm) {
         $service = new Service\OrderService();
         $service->setServiceLocator($sm);
         return $service;
     }, 'ErsBase\\Service\\OptionService' => function ($sm) {
         $service = new Service\OptionService();
         $service->setServiceLocator($sm);
         return $service;
     }));
 }