예제 #1
0
 public function findByTerms($queryString, $withNonActif = false, $limit = 1000, $mixWith = false)
 {
     $terms = explode(" ", trim(preg_replace("/[ ]+/", " ", $queryString)));
     $results = null;
     foreach ($terms as $term) {
         if (strlen($term) < 2) {
             continue;
         }
         $q = $this->createQueryBuilder();
         $q->addOr($q->expr()->field('identifiant')->equals(new \MongoRegex('/.*' . $term . '.*/i')))->addOr($q->expr()->field('raisonSociale')->equals(new \MongoRegex('/.*' . RechercheTool::getCorrespondances($term) . '.*/i')))->addOr($q->expr()->field('adresse.adresse')->equals(new \MongoRegex('/.*' . RechercheTool::getCorrespondances($term) . '.*/i')))->addOr($q->expr()->field('adresse.codePostal')->equals(new \MongoRegex('/.*' . $term . '.*/i')))->addOr($q->expr()->field('adresse.commune')->equals(new \MongoRegex('/.*' . RechercheTool::getCorrespondances($term) . '.*/i')));
         if (!$withNonActif) {
             $q->field('actif')->equals(true);
         }
         $societes = $q->limit($limit)->getQuery()->execute();
         $currentResults = array();
         foreach ($societes as $societe) {
             if ($mixWith) {
                 $currentResults[$societe->getId()] = array("doc" => $societe, "score" => "1", "instance" => "Societe");
             } else {
                 $currentResults[$societe->getId()] = $societe->getIntitule();
             }
         }
         if (!is_null($results)) {
             $results = array_intersect_assoc($results, $currentResults);
         } else {
             $results = $currentResults;
         }
     }
     return is_null($results) ? array() : $results;
 }
예제 #2
0
 public function findByTerms($queryString)
 {
     $terms = explode(" ", trim(preg_replace("/[ ]+/", " ", $queryString)));
     $results = null;
     foreach ($terms as $term) {
         if (strlen($term) < 2) {
             continue;
         }
         $q = $this->createQueryBuilder();
         $q->field('cloture')->equals(false);
         $q->field('numeroFacture')->notEqual(null);
         if (preg_match('/^[0-9]+\\.[0-9]+$/', $term)) {
             $nbInf = $term - 0.0001;
             $nbSup = $term + 0.0001;
             $q->addOr($q->expr()->field('montantTTC')->lt($nbSup)->gt($nbInf))->addOr($q->expr()->field('montantAPayer')->lt($nbSup)->gt($nbInf));
         } else {
             $q->addOr($q->expr()->field('destinataire.nom')->equals(new \MongoRegex('/.*' . RechercheTool::getCorrespondances($term) . '.*/i')))->addOr($q->expr()->field('numeroFacture')->equals(new \MongoRegex('/.*' . $term . '.*/i')));
         }
         $factures = $q->limit(1000)->getQuery()->execute();
         $currentResults = array();
         foreach ($factures as $facture) {
             $currentResults[$facture->getId()] = $facture->__toString();
         }
         if (!is_null($results)) {
             $results = array_intersect_assoc($results, $currentResults);
         } else {
             $results = $currentResults;
         }
     }
     return is_null($results) ? array() : $results;
 }
예제 #3
0
 public function findByTerms($queryString)
 {
     $terms = explode(" ", trim(preg_replace("/[ ]+/", " ", $queryString)));
     $results = null;
     foreach ($terms as $term) {
         if (strlen($term) < 2) {
             continue;
         }
         $q = $this->createQueryBuilder();
         $etablissements = $q->addOr($q->expr()->field('identifiant')->equals(new \MongoRegex('/.*' . $term . '.*/i')))->addOr($q->expr()->field('nom')->equals(new \MongoRegex('/.*' . RechercheTool::getCorrespondances($term) . '.*/i')))->addOr($q->expr()->field('adresse.adresse')->equals(new \MongoRegex('/.*' . RechercheTool::getCorrespondances($term) . '.*/i')))->addOr($q->expr()->field('adresse.codePostal')->equals(new \MongoRegex('/.*' . $term . '.*/i')))->addOr($q->expr()->field('adresse.commune')->equals(new \MongoRegex('/.*' . RechercheTool::getCorrespondances($term) . '.*/i')))->field('actif')->equals(true)->limit(1000)->getQuery()->execute();
         $currentResults = array();
         foreach ($etablissements as $etablissement) {
             $currentResults[$etablissement->getId()] = $etablissement->getIntitule();
         }
         if (!is_null($results)) {
             $results = array_intersect_assoc($results, $currentResults);
         } else {
             $results = $currentResults;
         }
     }
     return is_null($results) ? array() : $results;
 }