Notions utiles - GitMahalo/mahalo-php-v3 GitHub Wiki

Définitions des champs usuels

Filters

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

Exemples concrets de filters :

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"}

maxResults

Ce champ est généralement obligatoire et limité à une valeur maximum de 100.

sortOrder / sortField

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.

filtre sur etat abonnement

Deux solutions sur le get abonnement :

Via les filtres prédéfinis :

image

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
⚠️ **GitHub.com Fallback** ⚠️