package dev.lions.unionflow.server.api.enums.paiement;

/**
 * Énumération des statuts de paiement dans UnionFlow
 *
 * @author UnionFlow Team
 * @version 3.0
 * @since 2025-01-29
 */
public enum StatutPaiement {
  EN_ATTENTE("En Attente"),
  EN_COURS("En Cours"),
  VALIDE("Validé"),
  ECHOUE("Échoué"),
  ANNULE("Annulé"),
  REMBOURSE("Remboursé");

  private final String libelle;

  StatutPaiement(String libelle) {
    this.libelle = libelle;
  }

  public String getLibelle() {
    return libelle;
  }

  /** Vérifie si le paiement est finalisé (ne peut plus changer) */
  public boolean isFinalise() {
    return this == VALIDE || this == ECHOUE || this == ANNULE || this == REMBOURSE;
  }

  /** Vérifie si le paiement est en cours de traitement */
  public boolean isEnTraitement() {
    return this == EN_ATTENTE || this == EN_COURS;
  }
}

