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

/**
 * Énumération des types d'événements Wave Money pour les webhooks
 *
 * @author UnionFlow Team
 * @version 1.0
 * @since 2025-01-10
 */
public enum TypeEvenement {
  CHECKOUT_COMPLETE("checkout.complete"),
  CHECKOUT_CANCELLED("checkout.cancelled"),
  CHECKOUT_EXPIRED("checkout.expired"),
  PAYOUT_COMPLETE("payout.complete"),
  PAYOUT_FAILED("payout.failed"),
  BALANCE_UPDATED("balance.updated"),
  TRANSACTION_CREATED("transaction.created"),
  TRANSACTION_UPDATED("transaction.updated");

  private final String codeWave;

  TypeEvenement(String codeWave) {
    this.codeWave = codeWave;
  }

  public String getCodeWave() {
    return codeWave;
  }

  /**
   * Trouve un type d'événement par son code Wave
   *
   * @param code Le code Wave
   * @return Le type d'événement correspondant ou null si non trouvé
   */
  public static TypeEvenement fromCode(String code) {
    for (TypeEvenement type : values()) {
      if (type.codeWave.equals(code)) {
        return type;
      }
    }
    return null;
  }
}
