package dev.lions.unionflow.server.repository.mutuelle.parts;

import dev.lions.unionflow.server.entity.mutuelle.parts.ComptePartsSociales;
import io.quarkus.hibernate.orm.panache.PanacheRepositoryBase;
import jakarta.enterprise.context.ApplicationScoped;

import java.util.List;
import java.util.Optional;
import java.util.UUID;

@ApplicationScoped
public class ComptePartsSocialesRepository implements PanacheRepositoryBase<ComptePartsSociales, UUID> {

    public Optional<ComptePartsSociales> findByNumeroCompte(String numeroCompte) {
        return find("numeroCompte", numeroCompte).firstResultOptional();
    }

    public List<ComptePartsSociales> findByMembre(UUID membreId) {
        return list("membre.id = ?1 AND actif = true", membreId);
    }

    public List<ComptePartsSociales> findByOrganisation(UUID orgId) {
        return list("organisation.id = ?1 AND actif = true ORDER BY dateCreation DESC", orgId);
    }

    public Optional<ComptePartsSociales> findByMembreAndOrg(UUID membreId, UUID orgId) {
        return find("membre.id = ?1 AND organisation.id = ?2 AND actif = true", membreId, orgId)
                .firstResultOptional();
    }

    public long countByOrganisation(UUID orgId) {
        return count("organisation.id = ?1 AND actif = true", orgId);
    }
}
