Example #1
0
 /**
  * Set id of this object to null if it's cloned
  */
 public function __clone()
 {
     $this->id = null;
     $this->session_id = null;
     $this->itemPackageRelatedBySurItemIds = new ArrayCollection();
     $this->itemPackageRelatedBySubItemIds = new ArrayCollection();
     #$this->itemVariants = new ArrayCollection();
     $code = new Code();
     $code->genCode();
     $this->setCode($code);
     $this->setPackage(null);
     $itemVariants = new ArrayCollection();
     foreach ($this->getItemVariants() as $variant) {
         $newVariant = clone $variant;
         $newVariant->setItem($this);
         $itemVariants[] = $newVariant;
     }
     $this->itemVariants = $itemVariants;
     /*$itemPackages = $this->getItemPackageRelatedBySurItemIds();
       $this->itemPackageRelatedBySubItemIds = new ArrayCollection();
       foreach($itemPackages as $package) {
           $newPackage = clone $package;
           $newPackage->setSurItem($this);
           #$itemPackageRelatedBySubItemIds[] = $newPackage;
           $this->addItemPackageRelatedBySurItemId($newPackage);
       }*/
     $this->created = null;
 }
Example #2
0
 public function __construct()
 {
     parent::__construct();
     $this->matches = new ArrayCollection();
     $this->packages = new ArrayCollection();
     $this->orderStatus = new ArrayCollection();
     $this->genHash();
     $code = new Code();
     $code->genCode();
     $this->setCode($code);
 }
Example #3
0
 /**
  * Set id of this object to null if it's cloned
  */
 public function __clone()
 {
     $this->id = null;
     #$this->session_id = null;
     $this->items = new ArrayCollection();
     # generate new code for new package
     $code = new Code();
     $code->genCode();
     $this->setCode($code);
     $this->setOrder(null);
     $this->setOrderId(null);
     $this->created = null;
 }
Example #4
0
 public function barcodetestAction()
 {
     $logger = $this->getServiceLocator()->get('Logger');
     $start = microtime(true);
     $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager');
     $codes = array();
     $count = 0;
     $found = 0;
     while (true) {
         $code = new Entity\Code();
         $code->genCode();
         $code = $em->getRepository("ErsBase\\Entity\\Code")->findOneBy(array('value' => $code->getValue()));
         #if(in_array($code->getValue(), $codes)) {
         if ($code) {
             $logger->info('found existing code after ' . $count . ' tries.');
             $logger->info('time spend: ' . (microtime(true) - $start));
             $found++;
             return new ViewModel();
             if ($found >= 5) {
                 return new ViewModel();
             }
         }
         if (!$code->checkCode()) {
             $logger->info('BARCODE IS NOT VALID');
             $logger->info('time spend: ' . (microtime(true) - $start));
             return new ViewModel();
         }
         #$codes[] = $code->getValue();
         #$logger->info('added code: '.$code->getValue().' '.(microtime(true)-$start));
         $em->persist($code);
         $em->flush();
         $count++;
         if ($count % 1000 == 0) {
             $logger->info('time spend: ' . (microtime(true) - $start));
         }
     }
     return new ViewModel();
 }
Example #5
0
 private function findAllCodes($string)
 {
     $length = 8;
     $regex = '/[A-Z0-9]{' . $length . '}/';
     $prepared_string = preg_replace('/\\ /', '', $string);
     $matches = array();
     $codes = array();
     $ret = array();
     $offset = 0;
     $old_offset = 1;
     while ($offset != $old_offset) {
         preg_match($regex, $prepared_string, $matches, PREG_OFFSET_CAPTURE, $offset);
         if (!isset($matches[0])) {
             break;
         }
         $codes[] = $matches[0][0];
         $old_offset = $offset;
         $offset = $matches[0][1] + 1;
     }
     $code = new Entity\Code();
     foreach ($codes as $value) {
         $code->setValue($value);
         if ($code->checkCode()) {
             $ret[] = clone $code;
         }
         $code->normalize();
         if ($code->checkCode()) {
             $ret[] = clone $code;
         }
     }
     return $this->array_unique_callback($ret, function ($code) {
         return $code->getValue();
     });
 }
Example #6
0
 public function searchAction()
 {
     $logger = $this->getServiceLocator()->get('Logger');
     $form = new Form\SearchOrder();
     $result = array();
     /*
      * - use "" (quotes) to search exakt strings with spaces
      * - use - (minus) to exclude a string
      * - use space as and operator
      * - use (a,b,c) as or operator
      */
     $searchText = $this->params()->fromQuery('q');
     if (!empty($searchText)) {
         $form->get('q')->setValue($searchText);
         $matches = array();
         preg_match('/"[^"]+"/', $searchText, $matches);
         $searchElements = preg_replace('/"/', '', $matches);
         $logger->info('found matches:');
         $logger->info($matches);
         $searchArray = split(' ', $searchText);
         $exclude = false;
         $excludeElements = array();
         foreach ($searchArray as $element) {
             if (preg_match('/^"/', $element)) {
                 $exclude = true;
             }
             if (!$exclude) {
                 if (preg_match('/^-/', $element)) {
                     $excludeElements[] = preg_replace('/^-/', '', $element);
                 } else {
                     $searchElements[] = $element;
                 }
             }
             if (preg_match('/"$/', $element)) {
                 $exclude = false;
             }
         }
         $logger->info('search elements:');
         $logger->info($searchElements);
         $logger->info('exclude elements:');
         $logger->info($excludeElements);
         $searchString = array();
         $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager');
         $result = array();
         /*
          * search code
          */
         $qb = $em->getRepository("ErsBase\\Entity\\Order")->createQueryBuilder('o');
         $qb->join('o.code', 'oc');
         $qb->join('o.packages', 'p');
         $qb->join('p.code', 'pc');
         $i = 0;
         foreach ($searchElements as $element) {
             if ($i == 0) {
                 $qb->where('oc.value LIKE :param' . $i);
             } else {
                 $qb->orWhere('oc.value LIKE :param' . $i);
             }
             $qb->setParameter('param' . $i, $element);
             $i++;
             $code = new Entity\Code();
             $code->setValue($element);
             if ($code->checkCode()) {
                 $qb->orWhere('oc.value LIKE :param' . $i);
                 $qb->orWhere('pc.value LIKE :param' . $i);
                 $qb->setParameter('param' . $i, $code->getValue());
                 $i++;
             }
         }
         $check_first = $i;
         foreach ($excludeElements as $elemnt) {
             if ($i == $check_first) {
                 $qb->where('oc.value NOT LIKE :param' . $i);
             } else {
                 $qb->orWhere('oc.value NOT LIKE :param' . $i);
             }
             $qb->orWhere('pc.value NOT LIKE :param' . $i);
             $qb->setParameter('param' . $i, $element);
             $i++;
         }
         $result = array_merge($result, $qb->getQuery()->getResult());
         /*
          * search firstname, surname, email, birthdate
          * of buyer and participant
          */
         $qb = $em->getRepository("ErsBase\\Entity\\Order")->createQueryBuilder('o');
         $qb->join('o.buyer', 'b');
         $qb->join('o.packages', 'p');
         $qb->join('p.participant', 'u');
         $i = 0;
         foreach ($searchElements as $element) {
             $b_expr = $qb->expr()->lower($qb->expr()->concat('b.firstname', $qb->expr()->concat($qb->expr()->literal(' '), 'b.surname')));
             $u_expr = $qb->expr()->lower($qb->expr()->concat('u.firstname', $qb->expr()->concat($qb->expr()->literal(' '), 'u.surname')));
             $be_expr = $qb->expr()->lower('b.email');
             $ue_expr = $qb->expr()->lower('u.email');
             if ($i == 0) {
                 $qb->where($qb->expr()->like($b_expr, ':param' . $i));
             } else {
                 $qb->orWhere($qb->expr()->like($b_expr, ':param' . $i));
             }
             $qb->orWhere($qb->expr()->like($u_expr, ':param' . $i));
             $qb->orWhere($qb->expr()->like($be_expr, ':param' . $i));
             $qb->orWhere($qb->expr()->like($ue_expr, ':param' . $i));
             $qb->setParameter('param' . $i, '%' . strtolower($element) . '%');
             $i++;
         }
         $result = array_merge($result, $qb->getQuery()->getResult());
     } else {
         $logger->warn($form->getMessages());
     }
     return new ViewModel(array('form' => $form, 'result' => $result));
 }
Example #7
0
 public function acceptParticipantChangeAction()
 {
     $logger = $this->getServiceLocator()->get('Logger');
     $user_id = (int) $this->params()->fromQuery('user_id', 0);
     $item_id = (int) $this->params()->fromQuery('item_id', 0);
     $form = new Form\AcceptParticipantChangeItem();
     $em = $this->getServiceLocator()->get('Doctrine\\ORM\\EntityManager');
     $request = $this->getRequest();
     if ($request->isPost()) {
         $inputFilter = $this->getServiceLocator()->get('Admin\\InputFilter\\AcceptParticipantChangeItem');
         #$form->setInputFilter($inputFilter->getInputFilter());
         $form->setData($request->getPost());
         if ($form->isValid()) {
             $data = $form->getData();
             $user = $em->getRepository("ErsBase\\Entity\\User")->findOneBy(array('id' => $data['user_id']));
             $item = $em->getRepository("ErsBase\\Entity\\Item")->findOneBy(array('id' => $data['item_id']));
             $log = new Entity\Log();
             $log->setUser($this->zfcUserAuthentication()->getIdentity());
             $log->setData('changed participant for item ' . $item->getCode()->getValue() . ': ' . $data['comment']);
             $em->persist($log);
             #$em->flush();
             $package = $item->getPackage();
             # initialize new package
             $newPackage = new Entity\Package();
             $code = new Entity\Code();
             $code->genCode();
             $codecheck = 1;
             while ($codecheck != null) {
                 $code->genCode();
                 $codecheck = $em->getRepository("ErsBase\\Entity\\Code")->findOneBy(array('value' => $code->getValue()));
             }
             $newPackage->setCode($code);
             # set order for package
             $newPackage->setOrder($package->getOrder());
             $cloneService = $this->getServiceLocator()->get('ErsBase\\Service\\CloneService');
             $cloneService->setTransfer(true);
             $newItem = $cloneService->cloneItem($item);
             #$newItem = clone $item;
             $newPackage->addItem($newItem);
             $item->setStatus('transferred');
             #$item->setTransferredItem($newItem);
             $code = new Entity\Code();
             $code->genCode();
             $codecheck = 1;
             while ($codecheck != null) {
                 $code->genCode();
                 $codecheck = $em->getRepository("ErsBase\\Entity\\Code")->findOneBy(array('value' => $code->getValue()));
             }
             $newItem->setCode($code);
             $em->persist($item);
             $em->persist($newItem);
             #$newPackage->setTransferredPackage($package);
             $newPackage->setParticipant($user);
             $em->persist($newPackage);
             #$em->persist($package);
             $em->flush();
             $order = $package->getOrder();
             return $this->redirect()->toRoute('admin/order', array('action' => 'detail', 'id' => $order->getId()));
         } else {
             $logger->warn($form->getMessages());
         }
     }
     $user = null;
     if ($user_id != 0) {
         $user = $em->getRepository("ErsBase\\Entity\\User")->findOneBy(array('id' => $user_id));
     }
     $item = null;
     if ($item_id != 0) {
         $item = $em->getRepository("ErsBase\\Entity\\Item")->findOneBy(array('id' => $item_id));
     }
     $form->get('item_id')->setValue($item->getId());
     $form->get('user_id')->setValue($user->getId());
     $forrest = new Service\BreadcrumbService();
     if (!$forrest->exists('item')) {
         $forrest->set('item', 'admin/order', array('action' => 'search'));
     }
     return new ViewModel(array('form' => $form, 'user' => $user, 'item' => $item, 'breadcrumb' => $forrest->get('package')));
 }