Consommations

Affichage

La page de consommations est principalement une communication entre l”API et la page en JavaScript. Elle est disponible à l’adresse /note/consos/, et l’onglet n’est visible que pour ceux ayant le droit de voir au moins un bouton. L’affichage, comme tout le reste de la page, est géré avec Boostrap 4. Les boutons que l’utilisateur a le droit de voir sont triés par catégorie.

Sélection des consommations

Lorsque l’utilisateur commence à taper un nom de note, un appel à l’API sur la page /api/note/alias est fait, récupérant les 20 premiers aliases en accord avec la requête. Quand l’utilisateur survole un alias, un appel à la page /api/note/note/<NOTE_ID>/ est fait pour récupérer plus d’infos sur la note telles que le solde, le vrai nom de la note et la photo, si toutefois l’utilisateur a le droit de voir ceci.

L’utilisateur peut cliquer sur des aliases pour ajouter des émetteurs, et sur des boutons pour ajouter des consommations. Cliquer dans la liste des émetteurs supprime l’élément sélectionné.

Il ya deux possibilités pour faire consommer des adhérents :
  • En mode consommation simple (mode par défaut), les consommations sont débitées dès que émetteurs et consommations sont renseignées.

  • En mode consommation double, l’utilisateur doit cliquer sur « Consommer ! » pour débiter toutes les consommations.

Débit des consommations

Pour débiter toutes les consommations, pour chaque source et chaque bouton, une requête POST est faite à l’API sur l’adresse /api/note/transaction/transaction/ avec le contenu suivant :

{
    "quantity": "<QUANTITÉ>",
    "amount": "<PRIX_EN_CENTIMES>",
    "reason": "<NOM_DU_BOUTON> (<CATÉGORIE_DU_BOUTON>)",
    "valid": true,
    "polymorphic_ctype": 42,
    "source": "<ID_DE_NOTE_SOURCE>",
    "destination": "<ID_DE_NOTE_DESTINATION>",
    "template": "<ID_BOUTON>",
    "category": "<ID_CATÉGORIE>",
    "resourcetype": "RecurrentTransaction"
}

Par exemple, pour 3 cocas à 1.10 € (catégorie Soft, numéro 1), bouton numéro 1, à destination de la note Kfet (id 6) depuis la note 7, la requête suivante est envoyée :

{
    "quantity": 3,
    "amount": 110,
    "reason": "Coca (Soft)",
    "valid": true,
    "polymorphic_ctype": 42,
    "source": 7,
    "destination": 6,
    "template": 1,
    "category": 1,
    "resourcetype": "RecurrentTransaction"
}

Le 42 dans "polymorphic_ctype": 42 correspond à l’identifiant du modèle RecurrentTransaction dans la table des types. Il vaut 42 lors de la rédaction de cette documentation, mais pourra varier à l’avenir, et sera toujours à jour : la valeur n’est pas « hard-codée ».

Si une erreur survient lors de la requête (droits insuffisants), un message apparaîtra en haut de page. Dans tous les cas, tous les champs sont réinitialisés.

L’historique et la balance de l’utilisateur sont ensuite mis à jour via jQuery, qui permet de recharger une partie de page Web.

Validation/dévalidation des transactions

Il est possible aussi de (dé)valider une transaction en cliquant sur le symbole de validation. Lorsqu’un clic est fait, une requête PATCH est faite à l’API sur l’adresse /api/note/transaction/transaction/<TRANSACTION_ID>/ de la forme :

{
    "resourcetype": "RecurrentTransaction",
    "valid": false
}

L’historique et la balance sont ensuite rafraîchis. Si une erreur survient, un message apparaîtra.