Notions utiles - GitMahalo/mahalo-php-v3 GitHub Wiki
La recherche filtrée s'effectue grâce à la structure filters. Voir les exemples concrets un peu plus bas.
Remarque, si on filtre sur plusieurs champs lors d'un appel WS, on a la notion de ‘ET’ entre les différents filtres. Si on veut filtrer sur plusieurs champs avec la notion de 'OU', il faut faire différents appels WS.
Ce champ prend un objet au format JSON. La syntaxe de cet objet est la suivante : {"field": {"value": "valeur recherchée", "matchMode": "equals"}}
La propriété field doit correspondre à une propriété de l'entité recherchée. Par exemple sur les clients, ça peut-être « email » ou « codeClient ».
Remarque : il est possible qu'une propriété field soit présente sur plusieurs entités recherchées. Par exemple, creation commun aux clients et aux adresses, donc pour différencier sur quelle table on veut pointer, on préfixe : c.creation pour faire référence aux clients ou adr.creation pour faire référence aux adresses. Cf rechercheClient.php l'exemple sur la recherche sur une date.
La propriété matchMode peut prendre comme valeur equals(pour une recherche stricte), _contains_ou startsWith ou range (pour une recherche sur les dates).
Il est possible de renseigner plusieurs conditions de recherche :
{"field1": {"value": "valeur recherchée", "matchMode": "equals"}, "field2": {"value": "autre valeur recherchée", "matchMode": "contains"}}
Remarque : la notion de or entre 2 filtres différents (‘email’ et ‘codeClient’ par exemple) n’existe pas sur nos WS. Pour répondre à ce besoin, il faut faire 2 appels WS différents.
Utilisation du +equals pour la notion de and pour un même filtre :
{\"montantTtc\": {\"value\": [0,1,2], \"matchMode\" : \"equals\"}} => montantTtc = 0 ou 1 ou 2
{\"montantTtc\": {\"value\": [0,1,2], \"matchMode\" : \"+equals\"}} => montantTtc = 0 et 1 et 2
Le '+' est utilisable avant chaque matchMode, excepter le range.
Liste des MatchModes
| utilisation php | symbole corespondant | signification | exemple |
|---|---|---|---|
| equals | == XXX | vérifie les valeurs qui sont identiques à la valeur recherchée | matchModeEquals.php |
| contains | like %XXX% | vérifie les valeur qui contiennent la suite de caractère recherchée | matchModeContains.php |
| endsWith | like %XXX | vérifie les valeurs qui finissent comme la suite de caractère recherchée | matchModeEndsWith.php |
| startsWith | like XXX% | vérifie les valeurs qui commencent comme la suite de caractère recherchée | matchModeStartsWith.php |
| range | between / <= / >= | vérifie que la valeur est soit comprise entre les bornes, soit inferieur ou égal, soit supérieur ou égal a une borne | matchModeRange.php |
- Récupération des clients ayant l'email [email protected]:
Sur l'api GET client par exemple : /editeur/{refEditeur}/client
filters = {"email":{"matchMode":"equals","value":"[email protected]"}}
- Récupération des abonnements dont la date de fin est > à la date 2022-06-01 :
Sur l'api GET abonnement par exemple : /editeur/{refEditeur}/abonnement
filters = {"abo.dateFin" : {"value":["2022-06-01",""],"matchMode":"range"}}
- Récupération des abonnements dont le supports possède un titreAbrege qui commence par S :
Sur l'api GET abonnement par exemple : /editeur/{refEditeur}/abonnement
filters = {"abo.refTitre.titreAbrege" : {"value":"S","matchMode":"startsWith"}}
- Récupération des clients ayant le code de sélection identifiable par sa référence interne 1036 :
Sur l'api GET client par exemple : /editeur/{refEditeur}/client
filters = {"cs.libAlpha":{"matchMode":"equals","value":"MAVALEUR"},"cs.refCs.refCs":{"matchMode":"equals","value":1036}}
- Récupération des clients ayant pour societe :
Sur l'api GET client par exemple : /editeur/{refEditeur}/client
filters = {"codeSociete.codeClient":{"matchMode":"equals","value":551695}}
- Récupération des factures ayant pour solde :
Sur l'api GET facture par exemple : /editeur/{refEditeur}/facture
** Solde différent de 0
filters = {"solde":{"value":0.0,"matchMode":"!equals"}}
** Solde >= à 0.1
filters = {"solde":{"value":[0.1,null],"matchMode":"range"}}
** Recherche par numero de commande
extraParams = {"noCommande" : "694"}
Ce champ est généralement obligatoire et limité à une valeur maximum de 100.
Ces 2 champs sont à utiliser ensemble.
sortOrder: Ce champ prend 1 ou -1, pour trier respectivement par valeur croissante ou décroissante.
sortField: Ce champ permet de filtrer sur la colonne désignée.
Deux solutions sur le get abonnement :

Via les filtres sur l'état (fonctionnent uniquement si le codeClient est aussi présent dans les filtres sinon le filtre sur etat sera ignoré) :
{"etatabo.etat" : {"value":["01","02","03"],"matchMode":"in"}} {"etatabo.etat" : {"value":"01","matchMode":"equals"}} et mais moins pratique avec les valeurs d'origines de la vue : {"etatabo.etat" : {"value":["EN_COURS","SUSPENDUS","ECHUS"],"matchMode":"in"}} {"etatabo.etat" : {"value":"EN_COURS","matchMode":"equals"}}
Les valeurs possibles :
- AUCUN_ABO => 00
- EN_COURS => 01
- SUSPENDUS => 02
- ECHUS => 03
- A_VENIR => 04
- EN_GC => 05
- SUSP_TEMP => 06
- DOUBLONS => 07