Skip to content

Compteur temps

Raphael Odini edited this page Sep 21, 2023 · 7 revisions

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_admin
2. ShiftBookedEvent
3. TimeLogEventListener:onShiftBooked
4. 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_admin
2. ShiftFreedEvent
3. TimeLogEventListener:onShiftFreed
4. 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. ShiftDeletedEvent
3. 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_admin
2. ShiftBookedEvent
3. 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_admin
2. ShiftFreedEvent
3. 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. ShiftValidatedEvent
3. TimeLogEventListener:onShiftValidated
4. 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_admin
2. ShiftInvalidatedEvent
3. TimeLogEventListener:onShiftInvalidated
4. 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. ShiftDeletedEvent
3. 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