From edcda185dbad925a2ba9235661fcd50458ce6e38 Mon Sep 17 00:00:00 2001 From: Thibaut Valentin Date: Tue, 16 Jul 2024 23:16:46 +0200 Subject: [PATCH] feat: club filter --- .../domain/service/AffiliationService.java | 16 +++++----- .../ffsaf/domain/service/ClubService.java | 9 +++--- .../ffsaf/net2/data/SimpleClubModel.java | 3 +- .../titionfire/ffsaf/rest/ClubEndpoints.java | 9 +++--- .../ffsaf/rest/data/SimpleClubList.java | 29 +++++++++++++++++++ .../webapp/src/pages/admin/club/ClubList.jsx | 13 +++++---- 6 files changed, 54 insertions(+), 25 deletions(-) create mode 100644 src/main/java/fr/titionfire/ffsaf/rest/data/SimpleClubList.java 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 b55c796..3ad1ea1 100644 --- a/src/main/java/fr/titionfire/ffsaf/domain/service/AffiliationService.java +++ b/src/main/java/fr/titionfire/ffsaf/domain/service/AffiliationService.java @@ -277,15 +277,13 @@ public class AffiliationService { } public Uni> getCurrentSaisonAffiliation() { - return repository.list("saison = ?1", Utils.getSaison()) - .map(models -> models.stream().map(SimpleAffiliation::fromModel).toList()) - .chain(aff -> repositoryRequest.list("saison = ?1", Utils.getSaison()) - .chain(models -> Uni.join().all(models.stream().map(model -> - clubRepository.find("SIRET = ?1", model.getSiret()).firstResult() - .map(c -> new SimpleAffiliation(model.getId() * -1, c.getId(), - model.getSaison(), false))) - .toList()).andFailFast() - ).map(aff2 -> Stream.concat(aff2.stream(), aff.stream()).toList()) + return repositoryRequest.list("saison = ?1 or saison = ?1 + 1", Utils.getSaison()) + .map(models -> models.stream() + .map(model -> new SimpleAffiliation(model.getId() * -1, model.getSiret(), model.getSaison(), + false)).toList()) + .chain(aff -> repository.list("saison = ?1", Utils.getSaison()) + .map(models -> models.stream().map(SimpleAffiliation::fromModel).toList()) + .map(aff2 -> Stream.concat(aff2.stream(), aff.stream()).toList()) ); } diff --git a/src/main/java/fr/titionfire/ffsaf/domain/service/ClubService.java b/src/main/java/fr/titionfire/ffsaf/domain/service/ClubService.java index 15d387a..17669fc 100644 --- a/src/main/java/fr/titionfire/ffsaf/domain/service/ClubService.java +++ b/src/main/java/fr/titionfire/ffsaf/domain/service/ClubService.java @@ -8,6 +8,7 @@ import fr.titionfire.ffsaf.data.repository.CombRepository; import fr.titionfire.ffsaf.net2.ServerCustom; import fr.titionfire.ffsaf.net2.data.SimpleClubModel; import fr.titionfire.ffsaf.net2.request.SReqClub; +import fr.titionfire.ffsaf.rest.data.SimpleClubList; import fr.titionfire.ffsaf.rest.from.FullClubForm; import fr.titionfire.ffsaf.utils.Contact; import fr.titionfire.ffsaf.utils.PageResult; @@ -74,7 +75,7 @@ public class ClubService { }); } - public Uni> search(Integer limit, int page, String search, String country) { + public Uni> search(Integer limit, int page, String search, String country) { if (search == null) search = ""; search = search + "%"; @@ -90,8 +91,8 @@ public class ClubService { return getPageResult(query, limit, page); } - private Uni> getPageResult(PanacheQuery query, int limit, int page) { - return Uni.createFrom().item(new PageResult()) + private Uni> getPageResult(PanacheQuery query, int limit, int page) { + return Uni.createFrom().item(new PageResult()) .invoke(result -> result.setPage(page)) .invoke(result -> result.setPage_size(limit)) .call(result -> query.count().invoke(result::setResult_count)) @@ -101,7 +102,7 @@ public class ClubService { })) .invoke(result::setPage_count)) .call(result -> query.page(Page.of(page, limit)).list() - .map(membreModels -> membreModels.stream().map(SimpleClubModel::fromModel).toList()) + .map(membreModels -> membreModels.stream().map(SimpleClubList::fromModel).toList()) .invoke(result::setResult)); } diff --git a/src/main/java/fr/titionfire/ffsaf/net2/data/SimpleClubModel.java b/src/main/java/fr/titionfire/ffsaf/net2/data/SimpleClubModel.java index 748c9ec..5eb5781 100644 --- a/src/main/java/fr/titionfire/ffsaf/net2/data/SimpleClubModel.java +++ b/src/main/java/fr/titionfire/ffsaf/net2/data/SimpleClubModel.java @@ -17,13 +17,12 @@ public class SimpleClubModel { String name; String country; String shieldURL; - Long no_affiliation; public static SimpleClubModel fromModel(ClubModel model) { if (model == null) return null; return new SimpleClubModel(model.getId(), model.getName(), model.getCountry(), - "/api/club/" + model.getClubId() + "/logo", model.getNo_affiliation()); + "/api/club/" + model.getClubId() + "/logo"); } } diff --git a/src/main/java/fr/titionfire/ffsaf/rest/ClubEndpoints.java b/src/main/java/fr/titionfire/ffsaf/rest/ClubEndpoints.java index 7210cac..7361198 100644 --- a/src/main/java/fr/titionfire/ffsaf/rest/ClubEndpoints.java +++ b/src/main/java/fr/titionfire/ffsaf/rest/ClubEndpoints.java @@ -4,6 +4,7 @@ import fr.titionfire.ffsaf.data.model.ClubModel; import fr.titionfire.ffsaf.domain.service.ClubService; import fr.titionfire.ffsaf.net2.data.SimpleClubModel; import fr.titionfire.ffsaf.rest.data.SimpleClub; +import fr.titionfire.ffsaf.rest.data.SimpleClubList; import fr.titionfire.ffsaf.rest.from.FullClubForm; import fr.titionfire.ffsaf.utils.Contact; import fr.titionfire.ffsaf.utils.GroupeUtils; @@ -60,10 +61,10 @@ public class ClubEndpoints { @Path("/find") @RolesAllowed({"federation_admin"}) @Produces(MediaType.APPLICATION_JSON) - public Uni> getFindAdmin(@QueryParam("limit") Integer limit, - @QueryParam("page") Integer page, - @QueryParam("search") String search, - @QueryParam("country") String country) { + public Uni> getFindAdmin(@QueryParam("limit") Integer limit, + @QueryParam("page") Integer page, + @QueryParam("search") String search, + @QueryParam("country") String country) { if (limit == null) limit = 50; if (page == null || page < 1) diff --git a/src/main/java/fr/titionfire/ffsaf/rest/data/SimpleClubList.java b/src/main/java/fr/titionfire/ffsaf/rest/data/SimpleClubList.java new file mode 100644 index 0000000..09e1084 --- /dev/null +++ b/src/main/java/fr/titionfire/ffsaf/rest/data/SimpleClubList.java @@ -0,0 +1,29 @@ +package fr.titionfire.ffsaf.rest.data; + +import fr.titionfire.ffsaf.data.model.ClubModel; +import io.quarkus.runtime.annotations.RegisterForReflection; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@RegisterForReflection +public class SimpleClubList { + Long id; + String name; + String country; + Long siret; + Long no_affiliation; + + public static SimpleClubList fromModel(ClubModel model) { + if (model == null) + return null; + + return new SimpleClubList(model.getId(), model.getName(), model.getCountry(), model.getSIRET(), + model.getNo_affiliation()); + } +} diff --git a/src/main/webapp/src/pages/admin/club/ClubList.jsx b/src/main/webapp/src/pages/admin/club/ClubList.jsx index 80c0e9b..7f1dc8d 100644 --- a/src/main/webapp/src/pages/admin/club/ClubList.jsx +++ b/src/main/webapp/src/pages/admin/club/ClubList.jsx @@ -38,9 +38,9 @@ export function ClubList() { id: e.id, name: e.name, country: e.country, - shieldURL: e.shieldURL, + siret: e.siret, no_affiliation: e.no_affiliation, - affiliation: showAffiliationState ? affiliationData.find(licence => licence.club === e.id) : null + affiliation: showAffiliationState ? affiliationData.find(aff => (aff.id >= 0) ? aff.club === e.id : aff.club === e.siret) : null }) } setClubData(data2); @@ -76,7 +76,7 @@ export function ClubList() {
{data - ? : error ? @@ -91,7 +91,7 @@ export function ClubList() {
Filtre
-
@@ -161,13 +161,14 @@ function FiltreBar({showAffiliationState, setShowAffiliationState, data, country useEffect(() => { if (!data) return; - allCountry.push(...data.result.map((e) => e.club?.name)) + allCountry.push(...data.result.map((e) => e.country)) allCountry = allCountry.filter((value, index, self) => self.indexOf(value) === index).filter(value => value != null).sort() }, [data]); return
- +