package dev.lions.unionflow.server.repository;

import dev.lions.unionflow.server.entity.BeneficiaireEffectif;
import io.quarkus.hibernate.orm.panache.PanacheRepositoryBase;
import jakarta.enterprise.context.ApplicationScoped;
import java.util.List;
import java.util.UUID;

/**
 * Repository Panache pour les bénéficiaires effectifs (UBO).
 *
 * @since 2026-04-25
 */
@ApplicationScoped
public class BeneficiaireEffectifRepository
    implements PanacheRepositoryBase<BeneficiaireEffectif, UUID> {

  /** Bénéficiaires effectifs liés à un dossier KYC. */
  public List<BeneficiaireEffectif> findByKycDossier(UUID kycDossierId) {
    return list("kycDossier.id", kycDossierId);
  }

  /** Bénéficiaires effectifs liés à une organisation cible (chaîne de contrôle UBO). */
  public List<BeneficiaireEffectif> findByOrganisationCible(UUID organisationCibleId) {
    return list("organisationCibleId", organisationCibleId);
  }

  /** UBOs identifiés comme PEP. */
  public List<BeneficiaireEffectif> findPep() {
    return list("estPep", true);
  }

  /** UBOs présents sur des listes de sanctions. */
  public List<BeneficiaireEffectif> findOnSanctionsLists() {
    return list("presenceListesSanctions", true);
  }
}
