package dev.lions.unionflow.server.repository;

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

/** Repository des participations aux formations LBC/FT. */
@ApplicationScoped
public class ParticipationFormationLbcFtRepository
    implements PanacheRepositoryBase<ParticipationFormationLbcFt, UUID> {

  public List<ParticipationFormationLbcFt> findByFormation(UUID formationId) {
    return list("formation.id = ?1", formationId);
  }

  public List<ParticipationFormationLbcFt> findByMembre(UUID membreId) {
    return list("membreId = ?1 ORDER BY dateCertification DESC", membreId);
  }

  /** Vérifie si un membre est certifié pour une année donnée. */
  public Optional<ParticipationFormationLbcFt> trouverCertificationAnnee(UUID membreId, int annee) {
    return find(
        "membreId = ?1 AND formation.anneeReference = ?2 AND statutParticipation = 'CERTIFIE'",
        membreId, annee).firstResultOptional();
  }
}
