示例#1
0
 /**
  * @param OrdersImportItem $import_item
  *
  * @param array $name
  * @return Entity\Employe[]
  */
 private function findRegistrants(OrdersImportItem $import_item, &$name = null)
 {
     /** @var ORM\EntityRepository */
     $rep = $this->_em->getRepository('TaxiPrizeTaxiBundle:Employe');
     // TODO: Костыль, удаляющий небуквенные знаки. Перенести в валидацию или фильтр?
     $name = preg_replace('#[^\\p{L}\\s-]#u', '', $import_item->registrant);
     $name = array_map('trim', explode(' ', $name));
     if (count($name) > 1) {
         // Secondname Firstname
         // TODO: Костыль, исправляющий проблему с полем, в котором больше двух слов. Перенести в валидацию?
         $filter = array('secondName' => $name[0], 'firstName' => $name[1]);
         $res = $rep->findBy($filter);
         //			return $rep->findBy(array_combine(array('secondName', 'firstName'), $name));
     } else {
         // Secondname
         $res = $rep->findBy(array('secondName' => $name[0]));
     }
     if (empty($res)) {
         $res = $rep->findBy(array('importNameCompressed' => Entity\Employe::compressImportName($import_item->registrant)));
     }
     return $res;
 }
 /**
  * @param Employes2ImportItem $import_item
  *
  * @return Entity\Employe[]
  */
 protected function findEmployes(EmployesImportItem $import_item)
 {
     /** @var ORM\EntityRepository */
     $rep = $this->_em->getRepository('TaxiPrizeTaxiBundle:Employe');
     $qb = $rep->createQueryBuilder('e');
     $qb->where('e.externalId = :external_id')->setParameter('external_id', $import_item->external_id);
     if ($this->getOption(self::OPTION_MERGE_IF_SAME_NAME)) {
         list($second, $first) = $this->parseName($import_item);
         if (isset($second, $first)) {
             $qb->orWhere($qb->expr()->andX('e.secondName = :second', 'e.firstName = :first'))->setParameter('second', $second)->setParameter('first', $first);
         }
         $qb->orWhere('e.importNameCompressed = :name')->setParameter('name', Entity\Employe::compressImportName($import_item->name));
     }
     return $qb->getQuery()->getResult();
 }