From 9ab50238b9fbec3bc69a4cf4b264b2609f4c57c2 Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Fri, 14 Nov 2025 16:17:40 +0100 Subject: [PATCH] feat: upgrade aff find to user all id (Rna, siret, siren) --- .../domain/service/AffiliationService.java | 33 ++++++++++++++----- .../titionfire/ffsaf/rest/data/AssoData.java | 1 + src/main/webapp/src/pages/DemandeAff.jsx | 2 +- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/main/java/fr/titionfire/ffsaf/domain/service/AffiliationService.java b/src/main/java/fr/titionfire/ffsaf/domain/service/AffiliationService.java index 3096633..a88ec0f 100644 --- a/src/main/java/fr/titionfire/ffsaf/domain/service/AffiliationService.java +++ b/src/main/java/fr/titionfire/ffsaf/domain/service/AffiliationService.java @@ -2,6 +2,7 @@ package fr.titionfire.ffsaf.domain.service; import fr.titionfire.ffsaf.data.model.*; import fr.titionfire.ffsaf.data.repository.*; +import fr.titionfire.ffsaf.rest.client.StateIdService; import fr.titionfire.ffsaf.rest.data.SimpleAffiliation; import fr.titionfire.ffsaf.rest.data.SimpleReqAffiliation; import fr.titionfire.ffsaf.rest.exception.DBadRequestException; @@ -21,6 +22,7 @@ import io.smallrye.mutiny.unchecked.Unchecked; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import org.eclipse.microprofile.config.inject.ConfigProperty; +import org.eclipse.microprofile.rest.client.inject.RestClient; import org.hibernate.reactive.mutiny.Mutiny; import org.jboss.logging.Logger; @@ -60,6 +62,9 @@ public class AffiliationService { @Inject LoggerService ls; + @RestClient + StateIdService stateIdService; + @ConfigProperty(name = "upload_dir") String media; @@ -73,6 +78,8 @@ public class AffiliationService { public Uni pre_save(AffiliationRequestForm form, boolean unique) { AffiliationRequestModel affModel = form.toModel(); int currentSaison = Utils.getSaison(); + List out = new ArrayList<>(); + out.add(affModel.getState_id()); return Uni.createFrom().item(affModel) .invoke(Unchecked.consumer(model -> { @@ -80,14 +87,24 @@ public class AffiliationService { throw new DBadRequestException("Saison non valid"); } })) - .chain(() -> repositoryRequest.count("state_id = ?1 and saison = ?2", affModel.getState_id(), - affModel.getSaison())) - .onItem().invoke(Unchecked.consumer(count -> { - if (count != 0 && unique) { - throw new DBadRequestException("Demande d'affiliation déjà existante"); - } - })) - .chain(() -> clubRepository.find("StateId = ?1", affModel.getState_id()).firstResult().chain(club -> + .chain(() -> stateIdService.get_status(affModel.getState_id()).onItem().transform(o -> { + if (o.getId_rna() != null && !o.getId_rna().isBlank()) + out.add(o.getId_rna()); + if (o.getId_siren() != null && !o.getId_siren().isBlank()) + out.add(o.getId_siren()); + if (o.getIdentite().getId_siret_siege() != null && !o.getIdentite().getId_siret_siege().isBlank()) + out.add(o.getIdentite().getId_siret_siege()); + return out; + }).onFailure().recoverWithItem(out) + .chain(a -> repositoryRequest.count("state_id IN ?1 and saison = ?2", + out, affModel.getSaison())) + .onItem().invoke(Unchecked.consumer(count -> { + if (count != 0 && unique) { + throw new DBadRequestException("Demande d'affiliation déjà existante"); + } + })) + ) + .chain(() -> clubRepository.find("StateId IN ?1", out).firstResult().chain(club -> repository.count("club = ?1 and saison = ?2", club, affModel.getSaison()))) .onItem().invoke(Unchecked.consumer(count -> { if (count != 0) { diff --git a/src/main/java/fr/titionfire/ffsaf/rest/data/AssoData.java b/src/main/java/fr/titionfire/ffsaf/rest/data/AssoData.java index a7e1f39..4bb71fb 100644 --- a/src/main/java/fr/titionfire/ffsaf/rest/data/AssoData.java +++ b/src/main/java/fr/titionfire/ffsaf/rest/data/AssoData.java @@ -15,6 +15,7 @@ public class AssoData { @RegisterForReflection public static class Identite { String nom; + String id_siret_siege; } @Data diff --git a/src/main/webapp/src/pages/DemandeAff.jsx b/src/main/webapp/src/pages/DemandeAff.jsx index e2e46ee..8df8659 100644 --- a/src/main/webapp/src/pages/DemandeAff.jsx +++ b/src/main/webapp/src/pages/DemandeAff.jsx @@ -257,7 +257,7 @@ function AssoInfo({initData, needFile}) {
N° SIRET ou RNA* - setStateId(e.target.value)}/>