package dev.lions.unionflow.server.repository;

import dev.lions.unionflow.server.entity.SouscriptionOrganisation;
import jakarta.enterprise.context.ApplicationScoped;
import java.util.Optional;
import java.util.UUID;

/**
 * Repository pour les souscriptions organisation (quota membres par formule).
 */
@ApplicationScoped
public class SouscriptionOrganisationRepository extends BaseRepository<SouscriptionOrganisation> {

    public SouscriptionOrganisationRepository() {
        super(SouscriptionOrganisation.class);
    }

    /**
     * Trouve la souscription active d'une organisation (pour vérifier le quota membres).
     */
    public Optional<SouscriptionOrganisation> findByOrganisationId(UUID organisationId) {
        if (organisationId == null) {
            return Optional.empty();
        }
        return find("organisation.id = ?1 and statut = 'ACTIVE'", organisationId)
                .firstResultOptional();
    }

    /**
     * Trouve n'importe quelle souscription d'une organisation (y compris EN_ATTENTE),
     * triée par date de création décroissante.
     * Utilisé pour le workflow d'onboarding.
     */
    public Optional<SouscriptionOrganisation> findLatestByOrganisationId(UUID organisationId) {
        if (organisationId == null) {
            return Optional.empty();
        }
        return find("organisation.id = ?1 order by dateCreation desc", organisationId)
                .firstResultOptional();
    }
}
