feat: merge rna and siret fields

This commit is contained in:
2025-11-12 14:56:28 +01:00
parent 61a4af6ff1
commit beb40db1b1
29 changed files with 163 additions and 284 deletions

View File

@@ -92,7 +92,7 @@ public class AffiliationRequestEndpoints {
@DELETE
@Path("/{id}")
@RolesAllowed({"federation_admin"})
@RolesAllowed({"federation_admin", "club_president", "club_secretaire", "club_respo_intra"})
@Produces(MediaType.APPLICATION_JSON)
@Operation(summary = "Supprime une demande d'affiliation", description = "Cette méthode supprime une demande " +
"d'affiliation pour l'identifiant spécifié.")
@@ -107,7 +107,7 @@ public class AffiliationRequestEndpoints {
if (o.getClub() == null && !securityCtx.roleHas("federation_admin"))
throw new DForbiddenException();
})).invoke(o -> checkPerm.accept(o.getClub()))
.chain(o -> service.deleteReqAffiliation(id, reason));
.chain(o -> service.deleteReqAffiliation(id, reason, securityCtx.roleHas("federation_admin")));
}
@PUT

View File

@@ -1,7 +1,7 @@
package fr.titionfire.ffsaf.rest;
import fr.titionfire.ffsaf.rest.client.SirenService;
import fr.titionfire.ffsaf.rest.data.UniteLegaleRoot;
import fr.titionfire.ffsaf.rest.client.StateIdService;
import fr.titionfire.ffsaf.rest.data.AssoData;
import fr.titionfire.ffsaf.rest.exception.DNotFoundException;
import io.smallrye.mutiny.Uni;
import jakarta.ws.rs.*;
@@ -13,17 +13,17 @@ import org.eclipse.microprofile.rest.client.inject.RestClient;
public class AssoEndpoints {
@RestClient
SirenService sirenService;
StateIdService stateIdService;
@GET
@Path("siren/{siren}")
@Path("state_id/{stateId}")
@Produces(MediaType.APPLICATION_JSON)
@Operation(hidden = true)
public Uni<UniteLegaleRoot> getInfoSiren(@PathParam("siren") String siren) {
return sirenService.get_unite(siren).onFailure().transform(throwable -> {
public Uni<AssoData> getAssoInfo(@PathParam("stateId") String stateId) {
return stateIdService.get_status(stateId).onFailure().transform(throwable -> {
if (throwable instanceof WebApplicationException exception) {
if (exception.getResponse().getStatus() == 400)
return new DNotFoundException("Siret introuvable");
if (exception.getResponse().getStatus() == 404)
return new DNotFoundException("Asso introuvable");
}
return throwable;
});

View File

@@ -1,19 +0,0 @@
package fr.titionfire.ffsaf.rest.client;
import fr.titionfire.ffsaf.rest.data.UniteLegaleRoot;
import io.smallrye.mutiny.Uni;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import org.eclipse.microprofile.rest.client.annotation.ClientHeaderParam;
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
@Path("/")
@RegisterRestClient
@ClientHeaderParam(name = "X-Client-Secret", value = "${siren-api.key}")
public interface SirenService {
@GET
@Path("/v3/unites_legales/{SIREN}")
Uni<UniteLegaleRoot> get_unite(@PathParam("SIREN") String siren);
}

View File

@@ -0,0 +1,17 @@
package fr.titionfire.ffsaf.rest.client;
import fr.titionfire.ffsaf.rest.data.AssoData;
import io.smallrye.mutiny.Uni;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;
@Path("/")
@RegisterRestClient
public interface StateIdService {
@GET
@Path("/structure/{id}")
Uni<AssoData> get_status(@PathParam("id") String id);
}

View File

@@ -0,0 +1,38 @@
package fr.titionfire.ffsaf.rest.data;
import io.quarkus.runtime.annotations.RegisterForReflection;
import lombok.Data;
@Data
@RegisterForReflection
public class AssoData {
String id_siren;
String id_rna;
Identite identite;
Coordonnee coordonnees;
@Data
@RegisterForReflection
public static class Identite {
String nom;
}
@Data
@RegisterForReflection
public static class Coordonnee {
Address adresse_siege;
}
@Data
@RegisterForReflection
public static class Address {
String cplt_1;
String cplt_2;
String cplt_3;
String num_voie;
String type_voie;
String voie;
String cp;
String commune;
}
}

View File

@@ -17,9 +17,9 @@ import java.util.List;
@RegisterForReflection
public class RenewAffData {
String name;
Long siret;
String rna;
String state_id;
String address;
String contact;
int saison;
List<RenewMember> members;

View File

@@ -14,8 +14,8 @@ import org.eclipse.microprofile.openapi.annotations.media.Schema;
public class SimpleAffiliation {
@Schema(description = "L'identifiant de l'affiliation.", example = "1")
private Long id;
@Schema(description = "L'identifiant du club associé à l'affiliation.", example = "123")
private Long club;
@Schema(description = "L'identifiant du club associé à l'affiliation si id > 0 sinon n° SIRET ou RNA du club.", example = "123")
private String club;
@Schema(description = "La saison de l'affiliation.", example = "2022")
private int saison;
@Schema(description = "Indique si l'affiliation est validée ou non.", example = "true")
@@ -27,7 +27,7 @@ public class SimpleAffiliation {
return new SimpleAffiliationBuilder()
.id(model.getId())
.club(model.getClub().getId())
.club(String.valueOf(model.getClub().getId()))
.saison(model.getSaison())
.validate(true)
.build();

View File

@@ -36,10 +36,8 @@ public class SimpleClub {
private String contact_intern;
@Schema(description = "Adresse postale du club", example = "1 rue de l'exemple, 75000 Paris")
private String address;
@Schema(description = "RNA du club", example = "W123456789")
private String RNA;
@Schema(description = "Numéro SIRET du club", example = "12345678901234")
private Long SIRET;
@Schema(description = "Numéro SIRET ou RNA du club", example = "12345678901234")
private String state_id;
@Schema(description = "Numéro d'affiliation du club", example = "12345")
private Long no_affiliation;
@Schema(description = "Club international", example = "false")
@@ -60,8 +58,7 @@ public class SimpleClub {
.training_location(model.getTraining_location())
.training_day_time(model.getTraining_day_time())
.contact_intern(model.getContact_intern())
.RNA(model.getRNA())
.SIRET(model.getSIRET())
.state_id(model.getStateId())
.no_affiliation(model.getNo_affiliation())
.international(model.isInternational())
.address(model.getAddress())

View File

@@ -20,8 +20,8 @@ public class SimpleClubList {
String name;
@Schema(description = "Pays du club", example = "FR")
String country;
@Schema(description = "Numéro SIRET du club", example = "12345678901234")
Long siret;
@Schema(description = "Numéro SIRET ou RNA du club", example = "12345678901234")
String state_id;
@Schema(description = "Numéro d'affiliation du club", example = "12345")
Long no_affiliation;
@@ -29,7 +29,7 @@ public class SimpleClubList {
if (model == null)
return null;
return new SimpleClubList(model.getId(), model.getName(), model.getCountry(), model.getSIRET(),
return new SimpleClubList(model.getId(), model.getName(), model.getCountry(), model.getStateId(),
model.getNo_affiliation());
}
}

View File

@@ -25,10 +25,8 @@ public class SimpleReqAffiliation {
Long club_no_aff;
@Schema(description = "Nom du club demander", example = "Association sportive")
String name;
@Schema(description = "Numéro SIRET de l'association", example = "12345678901234")
long siret;
@Schema(description = "Numéro RNA de l'association", example = "W123456789")
String RNA;
@Schema(description = "Numéro SIRET ou RNA de l'association", example = "12345678901234")
String stateId;
@Schema(description = "Adresse de l'association", example = "1 rue de l'exemple, 75000 Paris")
String address;
@Schema(description = "Email de contact de l'association", example = "test@test.fr")
@@ -45,8 +43,7 @@ public class SimpleReqAffiliation {
return new SimpleReqAffiliation.SimpleReqAffiliationBuilder()
.id(model.getId())
.name(model.getName())
.siret(model.getSiret())
.RNA(model.getRNA())
.stateId(model.getState_id())
.address(model.getAddress())
.saison(model.getSaison())
.contact(model.getContact())

View File

@@ -16,8 +16,8 @@ public class SimpleReqAffiliationResume {
Long id;
@Schema(description = "Le nom de l'association.", example = "Association sportive")
String name;
@Schema(description = "Le numéro SIRET de l'association.", example = "12345678901234")
long siret;
@Schema(description = "Le numéro SIRET ou RNA de l'association.", example = "12345678901234")
String stateId;
@Schema(description = "La saison de l'affiliation.", example = "2025")
int saison;
@@ -25,10 +25,10 @@ public class SimpleReqAffiliationResume {
if (model == null)
return null;
return new SimpleReqAffiliationResume.SimpleReqAffiliationResumeBuilder()
return new SimpleReqAffiliationResumeBuilder()
.id(model.getId())
.name(model.getName())
.siret(model.getSiret())
.stateId(model.getState_id())
.saison(model.getSaison())
.build();
}

View File

@@ -1,107 +0,0 @@
package fr.titionfire.ffsaf.rest.data;
import io.quarkus.runtime.annotations.RegisterForReflection;
import lombok.Data;
import java.util.ArrayList;
import java.util.Date;
@Data
@RegisterForReflection
public class UniteLegaleRoot {
public UniteLegale unite_legale;
@Data
@RegisterForReflection
public static class UniteLegale {
public String activite_principale;
public Object annee_categorie_entreprise;
public Object annee_effectifs;
public Object caractere_employeur;
public Object categorie_entreprise;
public String categorie_juridique;
public String date_creation;
public String date_debut;
public Date date_dernier_traitement;
public String denomination;
public Object denomination_usuelle_1;
public Object denomination_usuelle_2;
public Object denomination_usuelle_3;
public String economie_sociale_solidaire;
public Etablissement etablissement_siege;
public ArrayList<Etablissement> etablissements;
public String etat_administratif;
public String identifiant_association;
public String nic_siege;
public Object nom;
public Object nom_usage;
public int nombre_periodes;
public String nomenclature_activite_principale;
public Object prenom_1;
public Object prenom_2;
public Object prenom_3;
public Object prenom_4;
public Object prenom_usuel;
public Object pseudonyme;
public Object sexe;
public Object sigle;
public String siren;
public String societe_mission;
public String statut_diffusion;
public Object tranche_effectifs;
public Object unite_purgee;
}
@Data
@RegisterForReflection
public static class Etablissement {
private String activite_principale;
private Object activite_principale_registre_metiers;
private Object annee_effectifs;
private String caractere_employeur;
private Object code_cedex;
private Object code_cedex_2;
private String code_commune;
private Object code_commune_2;
private Object code_pays_etranger;
private Object code_pays_etranger_2;
private String code_postal;
private Object code_postal_2;
private Object complement_adresse;
private Object complement_adresse2;
private String date_creation;
private String date_debut;
private Date date_dernier_traitement;
private Object denomination_usuelle;
private Object distribution_speciale;
private Object distribution_speciale_2;
private Object enseigne_1;
private Object enseigne_2;
private Object enseigne_3;
private boolean etablissement_siege;
private String etat_administratif;
private Object indice_repetition;
private Object indice_repetition_2;
private Object libelle_cedex;
private Object libelle_cedex_2;
private String libelle_commune;
private Object libelle_commune_2;
private Object libelle_commune_etranger;
private Object libelle_commune_etranger_2;
private Object libelle_pays_etranger;
private Object libelle_pays_etranger_2;
private String libelle_voie;
private Object libelle_voie_2;
private String nic;
private int nombre_periodes;
private String nomenclature_activite_principale;
private String numero_voie;
private Object numero_voie_2;
private String siren;
private String siret;
private String statut_diffusion;
private Object tranche_effectifs;
private String type_voie;
private Object type_voie_2;
}
}

View File

@@ -21,13 +21,9 @@ public class AffiliationRequestForm {
@FormParam("name")
private String name = null;
@Schema(description = "Le numéro SIRET de l'association.", example = "12345678901234", required = true)
@FormParam("siret")
private Long siret = null;
@Schema(description = "Le numéro RNA de l'association. (peut être null)", example = "W123456789")
@FormParam("rna")
private String rna = null;
@Schema(description = "Le numéro SIRET/RNA de l'association.", example = "12345678901234", required = true)
@FormParam("state_id")
private String state_id = null;
@Schema(description = "L'adresse de l'association.", example = "1 rue de l'exemple, 75000 Paris", required = true)
@FormParam("adresse")
@@ -114,8 +110,7 @@ public class AffiliationRequestForm {
public AffiliationRequestModel toModel() {
AffiliationRequestModel model = new AffiliationRequestModel();
model.setName(this.getName());
model.setSiret(this.getSiret());
model.setRNA(this.getRna());
model.setState_id(this.getState_id());
model.setAddress(this.getAdresse());
model.setSaison(this.getSaison());
model.setContact(this.getContact());

View File

@@ -17,13 +17,9 @@ public class AffiliationRequestSaveForm {
@FormParam("name")
private String name = null;
@Schema(description = "Le numéro SIRET de l'association.", example = "12345678901234", required = true)
@FormParam("siret")
private Long siret = null;
@Schema(description = "Le numéro RNA de l'association. (peut être null)", example = "W123456789")
@FormParam("rna")
private String rna = null;
@Schema(description = "Le numéro SIRET ou RNA de l'association.", example = "12345678901234", required = true)
@FormParam("state_id")
private String state_id = null;
@Schema(description = "L'adresse de l'association.", example = "1 rue de l'exemple, 75000 Paris", required = true)
@FormParam("address")
@@ -175,8 +171,7 @@ public class AffiliationRequestSaveForm {
return "AffiliationRequestSaveForm{" +
"id=" + id +
", name='" + name + '\'' +
", siret=" + siret +
", rna='" + rna + '\'' +
", state_id=" + state_id +
", address='" + address + '\'' +
", contact='" + contact + '\'' +
", status_len=" + status.length +

View File

@@ -43,13 +43,9 @@ public class FullClubForm {
@Schema(description = "Adresse postale du club", example = "1 rue de l'exemple, 75000 Paris", required = true)
private String address = null;
@FormParam("rna")
@Schema(description = "RNA du club", example = "W123456789")
private String rna = null;
@FormParam("siret")
@Schema(description = "Numéro SIRET du club", example = "12345678901234", required = true)
private String siret = null;
@FormParam("state_id")
@Schema(description = "Numéro SIRET ou RNA du club", example = "12345678901234", required = true)
private String state_id = null;
@FormParam("international")
@Schema(description = "Club international", example = "false", required = true)