feat: upgrade aff find to user all id (Rna, siret, siren)
This commit is contained in:
parent
cf5d93630f
commit
9ab50238b9
@ -2,6 +2,7 @@ package fr.titionfire.ffsaf.domain.service;
|
|||||||
|
|
||||||
import fr.titionfire.ffsaf.data.model.*;
|
import fr.titionfire.ffsaf.data.model.*;
|
||||||
import fr.titionfire.ffsaf.data.repository.*;
|
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.SimpleAffiliation;
|
||||||
import fr.titionfire.ffsaf.rest.data.SimpleReqAffiliation;
|
import fr.titionfire.ffsaf.rest.data.SimpleReqAffiliation;
|
||||||
import fr.titionfire.ffsaf.rest.exception.DBadRequestException;
|
import fr.titionfire.ffsaf.rest.exception.DBadRequestException;
|
||||||
@ -21,6 +22,7 @@ import io.smallrye.mutiny.unchecked.Unchecked;
|
|||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import org.eclipse.microprofile.config.inject.ConfigProperty;
|
import org.eclipse.microprofile.config.inject.ConfigProperty;
|
||||||
|
import org.eclipse.microprofile.rest.client.inject.RestClient;
|
||||||
import org.hibernate.reactive.mutiny.Mutiny;
|
import org.hibernate.reactive.mutiny.Mutiny;
|
||||||
import org.jboss.logging.Logger;
|
import org.jboss.logging.Logger;
|
||||||
|
|
||||||
@ -60,6 +62,9 @@ public class AffiliationService {
|
|||||||
@Inject
|
@Inject
|
||||||
LoggerService ls;
|
LoggerService ls;
|
||||||
|
|
||||||
|
@RestClient
|
||||||
|
StateIdService stateIdService;
|
||||||
|
|
||||||
@ConfigProperty(name = "upload_dir")
|
@ConfigProperty(name = "upload_dir")
|
||||||
String media;
|
String media;
|
||||||
|
|
||||||
@ -73,6 +78,8 @@ public class AffiliationService {
|
|||||||
public Uni<AffiliationRequestModel> pre_save(AffiliationRequestForm form, boolean unique) {
|
public Uni<AffiliationRequestModel> pre_save(AffiliationRequestForm form, boolean unique) {
|
||||||
AffiliationRequestModel affModel = form.toModel();
|
AffiliationRequestModel affModel = form.toModel();
|
||||||
int currentSaison = Utils.getSaison();
|
int currentSaison = Utils.getSaison();
|
||||||
|
List<String> out = new ArrayList<>();
|
||||||
|
out.add(affModel.getState_id());
|
||||||
|
|
||||||
return Uni.createFrom().item(affModel)
|
return Uni.createFrom().item(affModel)
|
||||||
.invoke(Unchecked.consumer(model -> {
|
.invoke(Unchecked.consumer(model -> {
|
||||||
@ -80,14 +87,24 @@ public class AffiliationService {
|
|||||||
throw new DBadRequestException("Saison non valid");
|
throw new DBadRequestException("Saison non valid");
|
||||||
}
|
}
|
||||||
}))
|
}))
|
||||||
.chain(() -> repositoryRequest.count("state_id = ?1 and saison = ?2", affModel.getState_id(),
|
.chain(() -> stateIdService.get_status(affModel.getState_id()).onItem().transform(o -> {
|
||||||
affModel.getSaison()))
|
if (o.getId_rna() != null && !o.getId_rna().isBlank())
|
||||||
.onItem().invoke(Unchecked.consumer(count -> {
|
out.add(o.getId_rna());
|
||||||
if (count != 0 && unique) {
|
if (o.getId_siren() != null && !o.getId_siren().isBlank())
|
||||||
throw new DBadRequestException("Demande d'affiliation déjà existante");
|
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());
|
||||||
.chain(() -> clubRepository.find("StateId = ?1", affModel.getState_id()).firstResult().chain(club ->
|
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())))
|
repository.count("club = ?1 and saison = ?2", club, affModel.getSaison())))
|
||||||
.onItem().invoke(Unchecked.consumer(count -> {
|
.onItem().invoke(Unchecked.consumer(count -> {
|
||||||
if (count != 0) {
|
if (count != 0) {
|
||||||
|
|||||||
@ -15,6 +15,7 @@ public class AssoData {
|
|||||||
@RegisterForReflection
|
@RegisterForReflection
|
||||||
public static class Identite {
|
public static class Identite {
|
||||||
String nom;
|
String nom;
|
||||||
|
String id_siret_siege;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@ -257,7 +257,7 @@ function AssoInfo({initData, needFile}) {
|
|||||||
|
|
||||||
<div className="input-group mb-3">
|
<div className="input-group mb-3">
|
||||||
<span className="input-group-text">N° SIRET ou RNA*</span>
|
<span className="input-group-text">N° SIRET ou RNA*</span>
|
||||||
<input type="text" className="form-control" placeholder="state_id" name="state_id" required value={stateId} disabled={!needFile}
|
<input type="text" className="form-control" placeholder="N° SIRET ou RNA*" name="state_id" required value={stateId} disabled={!needFile}
|
||||||
onChange={e => setStateId(e.target.value)}/>
|
onChange={e => setStateId(e.target.value)}/>
|
||||||
<button className="btn btn-outline-secondary" type="button" id="button-addon2"
|
<button className="btn btn-outline-secondary" type="button" id="button-addon2"
|
||||||
onClick={fetchStateId}>Rechercher
|
onClick={fetchStateId}>Rechercher
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user