From 83bec3644ce7a879aa3f85bc962ec8de27d77585 Mon Sep 17 00:00:00 2001
From: Nestor <npegane@hotmail.com>
Date: Mon, 23 Oct 2017 12:10:41 +0200
Subject: [PATCH] FEAT #6159 Signatory name criteria added in advanced search

---
 .../class_indexing_searching_app_Abstract.php | 30 +++++++++++++++++--
 .../indexing_searching/search_adv.php         |  2 +-
 .../indexing_searching/search_adv_result.php  | 11 +++----
 apps/maarch_entreprise/js/functions.js        |  9 ++++++
 .../xml/IVS/validation_rules.xml              |  2 ++
 5 files changed, 45 insertions(+), 9 deletions(-)

diff --git a/apps/maarch_entreprise/class/class_indexing_searching_app_Abstract.php b/apps/maarch_entreprise/class/class_indexing_searching_app_Abstract.php
index f2b981de7a3..9d5f69bf6c0 100755
--- a/apps/maarch_entreprise/class/class_indexing_searching_app_Abstract.php
+++ b/apps/maarch_entreprise/class/class_indexing_searching_app_Abstract.php
@@ -554,14 +554,27 @@ abstract class indexing_searching_app_Abstract extends Database
                                              ),
                        "date courrier" => array*/
     //    $this->show_array($param);
-        $options_criteria_list = '<option id="default" value="">'._CHOOSE_PARAMETERS.'</option>';
+        if($value['param']['autocompletion']){
+            $idListByName = $key.'ListByName';
+            $autocompleteId = 'ac_'.$key;
+            $options_criteria_list .= '<option id="option_'.$key.'" value="'.$value['label'].'" data-load={"id":"'.$key.'","idList":"'.$idListByName.'","autocompleteId":"'.$autocompleteId.'","config":"'.$_SESSION['config']['businessappurl'].'"} > '.$value['label'].'</option>';
+        } else {
+            $options_criteria_list .= '<option id="option_'.$key.'" value="'.$value['label'].'"> '.$value['label'].'</option>';
+        }
+
         $json_tab = '';
         foreach($param as $key => $value)
         {
             $json_tab .= "'".$key."' : {";
             //echo 'key '.$key."<br/>val ";
             //$this->show_array($value);
-            $options_criteria_list .= '<option id="option_'.$key.'" value="'.$value['label'].'"> '.$value['label'].'</option>';
+            if($value['param']['autocompletion']){
+                $idListByName = $key.'ListByName';
+                $autocompleteId = 'ac_'.$key;
+                $options_criteria_list .= '<option id="option_'.$key.'" value="'.$value['label'].'" data-load={"id":"'.$key.'","idList":"'.$idListByName.'","autocompleteId":"'.$autocompleteId.'","config":"'.$_SESSION['config']['businessappurl'].'"} > '.$value['label'].'</option>';
+            } else {
+                $options_criteria_list .= '<option id="option_'.$key.'" value="'.$value['label'].'"> '.$value['label'].'</option>';
+            }
             $json_tab .= $this->json_line($key,$value['type'],$value['param']);
             $json_tab .= '}
             ,';
@@ -581,7 +594,18 @@ abstract class indexing_searching_app_Abstract extends Database
         //$hidden = '<input type="hidden" name="meta[]" value="" />';
         if ($field_type == 'input_text')
         {
-            $str = $init.'<input type="hidden" name="meta[]" value="'.$id.'#'.$id.'#input_text" /><input name="'.$id.'"  id="'.$id.'" type="text" '.$param['other'].' value="" />'.$end;
+            if($param['autocompletion']){
+                $idListByName = $id.'ListByName';
+                $autocompleteId = 'ac_'.$id;
+                $str = $init.'<input type="hidden" name="meta[]" value="'.$id.'#'.$id.'#input_text"/>';
+                $str .= '<input name="'.$id.'"  id="'.$id.'" type="text" '.$param['other'].' value="" onkeyup="erase_contact_external_id('."\'".$id."\'".','."\'".$autocompleteId."\'".')"/>';
+                $str .='<div id="'.$idListByName.'" class="autocomplete"></div>';
+                $str .= '<script type="text/javascript">';
+                $str .= 'initList_hidden_input("'.$id.'", "'.$idListByName.'","'.$_SESSION['config']['businessappurl'].'index.php?display=true&dir=indexing_searching&page=users_list_by_name_search", "what", "2", "'.$autocompleteId.'");</script>';
+                $str .= '<input id="'.$autocompleteId.'" name="'.$autocompleteId.'" type="hidden" />'.$end;
+            } else {
+                $str = $init.'<input type="hidden" name="meta[]" value="'.$id.'#'.$id.'#input_text" /><input name="'.$id.'"  id="'.$id.'" type="text" '.$param['other'].' value="" />'.$end;
+            }
         }
         else if ($field_type == 'textarea')
         {
diff --git a/apps/maarch_entreprise/indexing_searching/search_adv.php b/apps/maarch_entreprise/indexing_searching/search_adv.php
index 2fbcc39c521..99dfda9fa2d 100755
--- a/apps/maarch_entreprise/indexing_searching/search_adv.php
+++ b/apps/maarch_entreprise/indexing_searching/search_adv.php
@@ -451,7 +451,7 @@ $arr_tmp2 = array('label' => _SIGNATORY_GROUP, 'type' => 'select_simple', 'param
 $param['signatory_group'] = $arr_tmp2;
 
 // signatory name
-$arr_tmp2 = array('label' => _SIGNATORY_NAME, 'type' => 'input_text', 'param' => array('field_label' => _SIGNATORY_NAME, 'other' => $size));
+$arr_tmp2 = array('label' => _SIGNATORY_NAME, 'type' => 'input_text', 'param' => array('field_label' => _SIGNATORY_NAME, 'other' => $size, 'autocompletion' => true));
 $param['signatory_name'] = $arr_tmp2;
 
 
diff --git a/apps/maarch_entreprise/indexing_searching/search_adv_result.php b/apps/maarch_entreprise/indexing_searching/search_adv_result.php
index 060faa28089..e9f59cda97e 100755
--- a/apps/maarch_entreprise/indexing_searching/search_adv_result.php
+++ b/apps/maarch_entreprise/indexing_searching/search_adv_result.php
@@ -838,12 +838,13 @@ if (count($_REQUEST['meta']) > 0) {
                     $arrayPDO = array_merge($arrayPDO, array(":visa_user" => "%".$visaUser."%"));
             }
             // Nom du signataire
-            elseif ($tab_id_fields[$j] == 'signatory_name' && !empty($_REQUEST['signatory_name_id']))
+            elseif ($tab_id_fields[$j] == 'signatory_name' && !empty($_REQUEST['ac_signatory_name']))            
             {
-                $json_txt .= " 'signatory_name' : ['".addslashes(trim($_REQUEST['signatory_name']))."'], 'signatory_name_id' : ['".addslashes(trim($_REQUEST['signatory_name_id']))."']";
-                    $signatory_name = $_REQUEST['signatory_name_id'];
-                    $where_request .= " (res_id in (select res_id from listinstance where item_id = :signatoryNameId and coll_id = '" . $coll_id . "' and item_mode = 'sign' and difflist_type = 'VISA_CIRCUIT')) and ";
-                    $arrayPDO = array_merge($arrayPDO, array(":signatoryNameId" => $signatory_name));
+                $json_txt .= " 'signatory_name' : ['".addslashes(trim($_REQUEST['signatory_name']))."'], 'signatory_name_id' : ['".addslashes(trim($_REQUEST['ac_signatory_name']))."']";
+                $signatory_name = $_REQUEST['ac_signatory_name'];
+                $where_request .= " (res_id in (select res_id_master from res_attachments where coll_id = '" . $coll_id . "' and signatory_user_serial_id in (select id from users where user_id = :signatory_name_id))) and ";
+                $arrayPDO = array_merge($arrayPDO, array(":signatory_name_id" => $signatory_name));
+
             }
             //recherche sur les signataires en fonction de ce que la personne a saisi
             elseif ($tab_id_fields[$j] == 'signatory_name' && empty($_REQUEST['signatory_name_id']) && !empty($_REQUEST['signatory_name']))
diff --git a/apps/maarch_entreprise/js/functions.js b/apps/maarch_entreprise/js/functions.js
index 211efeacaca..026cf67cfee 100755
--- a/apps/maarch_entreprise/js/functions.js
+++ b/apps/maarch_entreprise/js/functions.js
@@ -3431,12 +3431,21 @@ function add_criteria(elem_comp, id_form, ie_browser, error_txt_ie)
             node.innerHTML = tmp;
             form.appendChild(node);
             var label = $(elem_comp);
+            if(elem_comp=='option_signatory_name' || elem_comp=='option_visa_user'){
+                loadAutocompletionScript(elem_comp);
+            }
             label.parentNode.selectedIndex = 0;
             label.style.display = 'none';
         }
     }
 }
 
+function loadAutocompletionScript(optionId){
+    infos = $j('#'+optionId).data('load');
+    initList_hidden_input(infos.id,infos.idList,infos.config+'index.php?display=true&dir=indexing_searching&page=users_list_by_name_search','what',"2",infos.autocompleteId);
+}
+
+
 /**
  * Deletes a criteria in the search form
  *
diff --git a/apps/maarch_entreprise/xml/IVS/validation_rules.xml b/apps/maarch_entreprise/xml/IVS/validation_rules.xml
index b1273bd22f9..2a9420ca54b 100755
--- a/apps/maarch_entreprise/xml/IVS/validation_rules.xml
+++ b/apps/maarch_entreprise/xml/IVS/validation_rules.xml
@@ -434,6 +434,8 @@
       <parameter name="admission_date_to" type="string" />
       <parameter name="creation_date_from" type="string" />
       <parameter name="creation_date_to" type="string" />
+      <parameter name="signatoryNameId" type="string" />
+      <parameter name="ac_signatory_name" type="string" />
       <parameter name="closing_date_from" type="string" />
       <parameter name="closing_date_to" type="string" />
       <parameter name="doc_date_from" type="string" />
-- 
GitLab