package dev.lions.unionflow.server.api.dto.wave;

import dev.lions.unionflow.server.api.dto.base.BaseDTO;
import dev.lions.unionflow.server.api.enums.wave.StatutCompteWave;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import java.time.LocalDateTime;
import java.util.UUID;
import lombok.Getter;
import lombok.Setter;

/**
 * DTO pour la gestion des comptes Wave
 *
 * @author UnionFlow Team
 * @version 3.0
 * @since 2025-01-29
 */
@Getter
@Setter
public class CompteWaveDTO extends BaseDTO {

  private static final long serialVersionUID = 1L;

  /** Numéro de téléphone Wave */
  @NotBlank(message = "Le numéro de téléphone est obligatoire")
  @Pattern(
      regexp = "^\\+225[0-9]{8}$",
      message = "Le numéro de téléphone Wave doit être au format +225XXXXXXXX")
  private String numeroTelephone;

  /** Statut du compte */
  private StatutCompteWave statutCompte;

  /** Identifiant Wave API (encrypté) */
  private String waveAccountId;

  /** Environnement (SANDBOX ou PRODUCTION) */
  private String environnement;

  /** Date de dernière vérification */
  private LocalDateTime dateDerniereVerification;

  /** Commentaires */
  private String commentaire;

  /** ID de l'organisation (si compte d'organisation) */
  private UUID organisationId;

  /** ID du membre (si compte de membre) */
  private UUID membreId;
}

