diff --git a/Controleur/ControleurAjaxprestatairesreseau.php b/Controleur/ControleurAjaxprestatairesreseau.php
index 65976b5f..621ab8cf 100755
--- a/Controleur/ControleurAjaxprestatairesreseau.php
+++ b/Controleur/ControleurAjaxprestatairesreseau.php
@@ -70,13 +70,33 @@ class ControleurAjaxprestatairesreseau extends Controleurrequete
$this->executerAction("index");
}
- public function rechercher() {
- $query = $this->requete->getParametreFormulaire("query");
+ public function rechercherdispos()
+ {
+ // Récupération sécurisée du paramètre de recherche
+ $query = $this->requete->getParametreFormulaire("query");
+ $codeReseau = $_SESSION['codeReseau'];
+
+ // Appel au modèle mis à jour
+ $resultats = $this->reseausoins->rechercherPrestatairesDisponibles($codeReseau, $query);
+
+ // On génère la vue Ajax partielle (contenant uniquement les
)
+ $this->genererVueAjax(array(
+ 'prestatairesdispo' => $resultats,
+ 'isSearch' => true // Flag utile pour la vue si besoin
+ ));
+ }
+
+ public function rechercheraffectes() {
+ $query = $this->requete->getParametreFormulaire("query");
$codeReseau = $_SESSION['codeReseau'];
+ $codeSociete = $_SESSION['codeSociete'];
- $resultats = $this->reseau->rechercherPrestatairesDispo($codeReseau, $query);
+ // Nouvelle méthode dans le modèle pour chercher UNIQUEMENT dans ce qui est déjà affecté
+ $resultats = $this->reseausoins->rechercherPrestatairesAffectes($codeReseau, $query);
- // On génère une vue partielle qui ne contient que les
- $this->genererVueAjax(array('resultats' => $resultats));
+ $this->genererVueAjax(array(
+ 'prestatairesreseau' => $resultats,
+ 'isSearch' => true // Flag utile pour la vue si besoin
+ ));
}
}
\ No newline at end of file
diff --git a/Js/fonctions.js b/Js/fonctions.js
index 7cfc08a2..a0564149 100755
--- a/Js/fonctions.js
+++ b/Js/fonctions.js
@@ -92359,3 +92359,44 @@ function actualiser_garantie_produit() {
});
}
+let timerDispo, timerAffect;
+
+/**
+ * Recherche Serveur Multi-critères
+ * @param {string} target - 'dispo' ou 'affect'
+ */
+function rechercheServeur(target) {
+ // 1. Récupération des critères selon la colonne
+ let nom = $("#search_nom_" + target).val();
+ let ville = $("#search_ville_" + target).val();
+ let type = $("#search_type_" + target).val();
+ let query = (nom + " " + ville + " " + type).trim();
+
+ // 2. Sécurité : On ne lance rien si c'est trop court (sauf si vide pour réinitialiser)
+ if (query.length > 0 && query.length < 3) return;
+
+ // 3. Gestion du Timer (Debounce)
+ let timer = (target === 'dispo') ? timerDispo : timerAffect;
+ clearTimeout(timer);
+
+ let currentTimer = setTimeout(function() {
+ let action = (target === 'dispo') ? 'rechercherdispos' : 'rechercheraffectes';
+
+ $.ajax({
+ url: $("#racineWeb").val() + "Ajaxprestatairesreseau/" + action + "/",
+ type: 'post',
+ data: { query: query },
+ beforeSend: function() {
+ $("#count_" + target).html('');
+ },
+ success: function(data) {
+ $("#tab_" + target + " tbody").html(data);
+ $("#count_" + target).text($("#tab_" + target + " tbody tr").length);
+ }
+ });
+ }, 400);
+
+ // Mise à jour de la référence du timer
+ if (target === 'dispo') timerDispo = currentTimer;
+ else timerAffect = currentTimer;
+}
\ No newline at end of file
diff --git a/Modele/Reseausoins.php b/Modele/Reseausoins.php
index 54ee681c..0632b947 100755
--- a/Modele/Reseausoins.php
+++ b/Modele/Reseausoins.php
@@ -374,16 +374,33 @@ class Reseausoins extends Modele
}
/**
- * Recherche les prestataires non affectés avec un filtre textuel (Serveur-side)
+ * Recherche les prestataires disponibles via procédure stockée
*/
- public function rechercherPrestatairesDispo($codeReseau, $query) {
-
- $query = contruireParamLike($query);
+ public function rechercherPrestatairesDisponibles($codeReseau, $query) {
+ // Utilisation de la fonction helper pour formater le LIKE (%query%)
+ $queryParam = contruireParamLike($query);
$codeSociete = $_SESSION['codeSociete'];
- $sql = "CALL sp_rechercher_prestataires_dispo(?, ?, ?)"; // Sécurité pour ne pas saturer le DOM
+ // Appel de la procédure stockée optimisée
+ $sql = "CALL sp_rechercher_prestataires_dispo(?, ?, ?)";
- $resultat = $this->executerRequete($sql, array($codeSociete, $codeReseau, $query));
+ $resultat = $this->executerRequete($sql, array($codeSociete, $codeReseau, $queryParam));
+
+ return $resultat->fetchAll(PDO::FETCH_ASSOC);
+ }
+
+ /**
+ * Recherche les prestataires affectés via procédure stockée
+ */
+ public function rechercherPrestatairesAffectes($codeReseau, $query) {
+ // Utilisation de la fonction helper pour formater le LIKE (%query%)
+ $queryParam = contruireParamLike($query);
+ $codeSociete = $_SESSION['codeSociete'];
+
+ // Appel de la procédure stockée optimisée
+ $sql = "CALL sp_rechercher_prestataires_affectes(?, ?, ?)";
+
+ $resultat = $this->executerRequete($sql, array($codeSociete, $codeReseau, $queryParam));
return $resultat->fetchAll(PDO::FETCH_ASSOC);
}
diff --git a/Vue/Ajaxprestatairesreseau/index.php b/Vue/Ajaxprestatairesreseau/index.php
index 62928636..ee9d6368 100755
--- a/Vue/Ajaxprestatairesreseau/index.php
+++ b/Vue/Ajaxprestatairesreseau/index.php
@@ -4,117 +4,139 @@
$nomReseau = $this->nettoyer($reseau['libelle']);
?>
+
+
+
\ No newline at end of file
diff --git a/Vue/Ajaxprestatairesreseau/rechercheraffectes.php b/Vue/Ajaxprestatairesreseau/rechercheraffectes.php
new file mode 100644
index 00000000..4c14c037
--- /dev/null
+++ b/Vue/Ajaxprestatairesreseau/rechercheraffectes.php
@@ -0,0 +1,13 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Vue/Ajaxprestatairesreseau/rechercherdispos.php b/Vue/Ajaxprestatairesreseau/rechercherdispos.php
new file mode 100644
index 00000000..0e50a9f1
--- /dev/null
+++ b/Vue/Ajaxprestatairesreseau/rechercherdispos.php
@@ -0,0 +1,15 @@
+
+
+