Compteur temps - elefan-grenoble/gestion-compte GitHub Wiki

En quelques mots

Chaque compte-membre a un compteur temps. Il joue plusieurs rôles :

  • récapituler tous les créneaux effectués par cycle
  • à chaque fin de cycle, régulariser les surplus éventuels de bénévolat
Récapitulatif sur son espace membre En détails
image image

Comment ca se passe

Code : voir surtout TimeLogEventListener

Les paramètres

Le comportement du compteur temps peut varier en fonction des paramètres choisis par l'épicerie.

Paramètre Détail Exemple de valeur
due_duration_by_cycle Le nombre d'heures de bénévolat nécessaires par cycle 180 (3h)
max_time_at_end_of_shift à compléter
use_card_reader_to_validate_shifts Les créneaux sont-ils validés par une badgeuse (ou similaire) ?-si true, un créneau est considéré comme validé si il a bien été effectué (badgé au moment du créneau, ou validé après-coup manuellement dans l'admin)- si false, un créneau est considéré comme validé dès l'inscription true false
use_time_log_saving La possibilité de mettre du "temps validé" de côté (épargne). Voir l'issue #684 true false

Les actions de réservation

actions possibles sur un créneau (et impactant le compteur temps) :

  • réserver & libérer
  • valider & invalider
  • supprimer (impact ?)

Si l'épicerie ne valide pas les créneaux

use_card_reader_to_validate_shifts = false

Action Effet Détails techniques
Réservation d'un créneau (par un membre ou un admin) le compteur temps est incrémenté de la durée du créneau 1. shift_book ou shift_book_admin2. ShiftBookedEvent3. TimeLogEventListener:onShiftBooked4. TimeLog::TYPE_SHIFT_VALIDATED
Libération d'un créneau le log de temps correspondant au créneau initialement réservé est supprimé du compteur temps 1. shift_free ou shift_free_admin2. ShiftFreedEvent3. TimeLogEventListener:onShiftFreed4. suppression du log de temps correspondant
Suppression d'un créneau le log de temps correspondant au créneau initialement réservé est supprimé du compteur temps 1. shift_delete (ou bucket_delete)2. ShiftDeletedEvent3. TimeLogEventListener:onShiftDeleted

Si l'épicerie valide les créneaux

use_card_reader_to_validate_shifts = true

Comment s'effectue la validation ?

  • par une badgeuse (voir le fichier CardReaderController)
  • et/ou via un bouton qui apparait coté admin sur chaque créneau passé (image)
  • via un système développé à part (exemple des 400 coops)
Action Effet Détails techniques
Réservation d'un créneau (par un membre ou un admin) pas d'action sur le compteur temps 1. shift_book ou shift_book_admin2. ShiftBookedEvent3. TimeLogEventListener:onShiftBooked
Libération d'un créneau le créneau n'a pas encore été effectué, pas d'action sur le compteur temps 1. shift_free ou shift_free_admin2. ShiftFreedEvent3. TimeLogEventListener:onShiftFreed
Validation d'un créneau le compteur temps est incrémenté de la durée du créneau 1. shift_validate_admin (ou CardReaderController)2. ShiftValidatedEvent3. TimeLogEventListener:onShiftValidated4. TimeLog::TYPE_SHIFT_VALIDATED
Invalidation d'un créneau (ça peut arriver) le compteur temps est décrémenté de la durée du créneau 1. shift_validate_admin2. ShiftInvalidatedEvent3. TimeLogEventListener:onShiftInvalidated4. TimeLog::TYPE_SHIFT_INVALIDATED
Suppression d'un créneau si un log de temps correspondant au créneau initialement réservé existe, il est supprimé du compteur temps 1. shift_delete (ou bucket_delete)2. ShiftDeletedEvent3. TimeLogEventListener:onShiftDeleted

Les actions à la fin de cycle

La commande CycleStartCommand est responsable de créer un MemberCycleEndEvent au début du cycle (ou à chaque fin du cycle, ca dépend comment vous voyez les choses :) de chaque membre.

à compléter

Compteur épargne