package dev.lions.unionflow.server.payment.pispi.dto;

/**
 * Alias PI-SPI mappant un identifiant lisible (téléphone, email) vers un compte SFD.
 *
 * <p>Permet aux membres de payer leur cotisation via une adresse simple type {@code
 * +22507XXXXXXXX@unionflow} ou {@code cotisation-{orgSlug}@unionflow} sans avoir à connaître les
 * détails techniques du compte bénéficiaire.
 *
 * <p>Référence : {@code https://developer.pispi.bceao.int/guides/alias-gerer}.
 *
 * @since 2026-04-25
 */
public record PispiAlias(
    String aliasId,
    String aliasType,        // PHONE_NUMBER, EMAIL, NATIONAL_ID, CUSTOM
    String aliasValue,       // ex: "+22507123456" ou "cotisation-mutuelle-x@unionflow"
    String institutionCode,  // code BIC/IBAN-like de la SFD bénéficiaire
    String accountNumber,    // numéro de compte SFD
    String accountHolderName,
    String status            // ACTIVE, PENDING, REVOKED
) {

  /** Types d'alias supportés par PI-SPI. */
  public static final class Types {
    public static final String PHONE_NUMBER = "PHONE_NUMBER";
    public static final String EMAIL = "EMAIL";
    public static final String NATIONAL_ID = "NATIONAL_ID";
    public static final String CUSTOM = "CUSTOM";
    private Types() {}
  }
}
