浏览代码

Ref ftth#17 Filter clients by externalID or name.

Maximiliano Schvindt 6 年之前
父节点
当前提交
7b977e8167
共有 3 个文件被更改,包括 12 次插入4 次删除
  1. 2 2
      Controller/RESTController.php
  2. 4 1
      Form/ChoiceList/Loader/ClientChoiceLoader.php
  3. 6 1
      Services/Webservice.php

+ 2 - 2
Controller/RESTController.php

@@ -83,14 +83,14 @@ abstract class RESTController extends VoryxController
                 } else {
                     foreach ($filters as $field => $value) {
                         if ($orWhere) {
-                            if (is_numeric($value)) {
+                            if (is_numeric($value) && $field != 'externalId') {
                                 $criteria->orWhere($criteria->expr()->in("$field", (is_array($value) ? $value : [$value])));
                             } else {
                                 $value = urldecode($value);
                                 $criteria->orWhere($criteria->expr()->contains("$field", "$value"));
                             }
                         } else {
-                            if (is_numeric($value)) {
+                            if (is_numeric($value) && $field != 'externalId') {
                                 $criteria->andWhere($criteria->expr()->in("$field", (is_array($value) ? $value : [$value])));
                             } else {
                                 $value = urldecode($value);

+ 4 - 1
Form/ChoiceList/Loader/ClientChoiceLoader.php

@@ -169,8 +169,11 @@ class ClientChoiceLoader implements ChoiceLoaderInterface
     {
         $params = array();
         $limit = 100;
-        
+
         if ($filter !== false) {
+            $params['qb-criteria'] = "";
+            $params['orWhere'] = "";
+            $params['externalId'] = urlencode($filter);
             $params['name'] = urlencode($filter);
             if ($this->filterTenancy) {
                 $params['tenancyId'] = $this->tenancyService->getTenancyIdCurrent();

+ 6 - 1
Services/Webservice.php

@@ -55,7 +55,12 @@ class Webservice
         $results = $this->getArray($webservice, $params, $qbCriteria, $order_by, $limit, $offset);
         foreach ($results as $row) {
             if (isset($row['name']) && isset($row['id'])) {
-                $choices[$row['name']] = $row['id'];
+                $name = $row['name'];
+                
+                if(isset($row['externalId'])) // Only clients
+                    $name = "{$row['externalId']} - {$row['name']}";
+                
+                $choices[$name] = $row['id'];
             }
         }