diff --git a/src/main/java/fr/titionfire/ffsaf/domain/service/MembreService.java b/src/main/java/fr/titionfire/ffsaf/domain/service/MembreService.java index dda7cc8..383cba7 100644 --- a/src/main/java/fr/titionfire/ffsaf/domain/service/MembreService.java +++ b/src/main/java/fr/titionfire/ffsaf/domain/service/MembreService.java @@ -57,7 +57,8 @@ public class MembreService { } public SimpleCombModel findByIdOptionalComb(long id) throws Throwable { - return VertxContextSupport.subscribeAndAwait(() -> Panache.withTransaction(() -> repository.findById(id).map(SimpleCombModel::fromModel))); + return VertxContextSupport.subscribeAndAwait( + () -> Panache.withTransaction(() -> repository.findById(id).map(SimpleCombModel::fromModel))); } public Uni> searchAdmin(int limit, int page, String search, String club) { @@ -84,7 +85,8 @@ public class MembreService { return repository.find("userId = ?1", subject).firstResult() .chain(membreModel -> { PanacheQuery query = repository.find("club = ?1 AND (lname LIKE ?2 OR fname LIKE ?2)", - Sort.ascending("fname", "lname"), membreModel.getClub(), finalSearch).page(Page.ofSize(limit)); + Sort.ascending("fname", "lname"), membreModel.getClub(), finalSearch) + .page(Page.ofSize(limit)); return getPageResult(query, limit, page); }); } @@ -114,7 +116,8 @@ public class MembreService { public Uni update(long id, FullMemberForm membre) { return repository.findById(id) - .chain(membreModel -> clubRepository.findById(membre.getClub()).map(club -> new Pair<>(membreModel, club))) + .chain(membreModel -> clubRepository.findById(membre.getClub()) + .map(club -> new Pair<>(membreModel, club))) .onItem().transformToUni(pair -> { MembreModel m = pair.getKey(); m.setFname(membre.getFname()); @@ -129,14 +132,19 @@ public class MembreService { m.setEmail(membre.getEmail()); return Panache.withTransaction(() -> repository.persist(m)); }) - .invoke(membreModel -> SReqComb.sendIfNeed(serverCustom.clients, SimpleCombModel.fromModel(membreModel))) + .invoke(membreModel -> SReqComb.sendIfNeed(serverCustom.clients, + SimpleCombModel.fromModel(membreModel))) .call(membreModel -> (membreModel.getUserId() != null) ? - keycloakService.setClubGroupMembre(membreModel, membreModel.getClub()) : Uni.createFrom().nullItem()) + ((membreModel.getClub() != null) ? + keycloakService.setClubGroupMembre(membreModel, membreModel.getClub()) : + keycloakService.clearUser(membreModel.getUserId())) + : Uni.createFrom().nullItem()) .call(membreModel -> (membreModel.getUserId() != null) ? keycloakService.setAutoRoleMembre(membreModel.getUserId(), membreModel.getRole(), membreModel.getGrade_arbitrage()) : Uni.createFrom().nullItem()) .call(membreModel -> (membreModel.getUserId() != null) ? - keycloakService.setEmail(membreModel.getUserId(), membreModel.getEmail()) : Uni.createFrom().nullItem()) + keycloakService.setEmail(membreModel.getUserId(), membreModel.getEmail()) : Uni.createFrom() + .nullItem()) .map(__ -> "OK"); } @@ -166,12 +174,14 @@ public class MembreService { target.setRole(membre.getRole()); return Panache.withTransaction(() -> repository.persist(target)); }) - .invoke(membreModel -> SReqComb.sendIfNeed(serverCustom.clients, SimpleCombModel.fromModel(membreModel))) + .invoke(membreModel -> SReqComb.sendIfNeed(serverCustom.clients, + SimpleCombModel.fromModel(membreModel))) .call(membreModel -> (membreModel.getUserId() != null) ? keycloakService.setAutoRoleMembre(membreModel.getUserId(), membreModel.getRole(), membreModel.getGrade_arbitrage()) : Uni.createFrom().nullItem()) .call(membreModel -> (membreModel.getUserId() != null) ? - keycloakService.setEmail(membreModel.getUserId(), membreModel.getEmail()) : Uni.createFrom().nullItem()) + keycloakService.setEmail(membreModel.getUserId(), membreModel.getEmail()) : Uni.createFrom() + .nullItem()) .map(__ -> "OK"); } @@ -181,7 +191,8 @@ public class MembreService { MembreModel model = getMembreModel(input, clubModel); return Panache.withTransaction(() -> repository.persist(model)); }) - .invoke(membreModel -> SReqComb.sendIfNeedAdd(serverCustom.clients, SimpleCombModel.fromModel(membreModel))) + .invoke(membreModel -> SReqComb.sendIfNeedAdd(serverCustom.clients, + SimpleCombModel.fromModel(membreModel))) .map(MembreModel::getId); } @@ -193,7 +204,8 @@ public class MembreService { model.setGrade_arbitrage(GradeArbitrage.NA); return Panache.withTransaction(() -> repository.persist(model)); }) - .invoke(membreModel -> SReqComb.sendIfNeedAdd(serverCustom.clients, SimpleCombModel.fromModel(membreModel))) + .invoke(membreModel -> SReqComb.sendIfNeedAdd(serverCustom.clients, + SimpleCombModel.fromModel(membreModel))) .map(MembreModel::getId); } diff --git a/src/main/java/fr/titionfire/ffsaf/rest/from/FullMemberForm.java b/src/main/java/fr/titionfire/ffsaf/rest/from/FullMemberForm.java index f164c9e..a94d3ab 100644 --- a/src/main/java/fr/titionfire/ffsaf/rest/from/FullMemberForm.java +++ b/src/main/java/fr/titionfire/ffsaf/rest/from/FullMemberForm.java @@ -38,7 +38,7 @@ public class FullMemberForm { private String country; @FormParam("birth_date") - private Date birth_date; + private Date birth_date = null; @FormParam("email") private String email; diff --git a/src/main/webapp/src/components/ClubSelect.jsx b/src/main/webapp/src/components/ClubSelect.jsx index 9b7d906..fe23be9 100644 --- a/src/main/webapp/src/components/ClubSelect.jsx +++ b/src/main/webapp/src/components/ClubSelect.jsx @@ -2,15 +2,15 @@ import {LoadingProvider, useLoadingSwitcher} from "../hooks/useLoading.jsx"; import {useFetch} from "../hooks/useFetch.js"; import {AxiosError} from "./AxiosError.jsx"; -export function ClubSelect({defaultValue, name}) { +export function ClubSelect({defaultValue, name, na = false}) { return
- +
} -function ClubSelect_({defaultValue, name}) { +function ClubSelect_({defaultValue, name, na}) { const setLoading = useLoadingSwitcher() const {data, error} = useFetch(`/club/no_detail`, setLoading, 1) @@ -19,8 +19,9 @@ function ClubSelect_({defaultValue, name}) { ?
diff --git a/src/main/webapp/src/components/MemberCustomFiels.jsx b/src/main/webapp/src/components/MemberCustomFiels.jsx index d7f0050..f0bd0e6 100644 --- a/src/main/webapp/src/components/MemberCustomFiels.jsx +++ b/src/main/webapp/src/components/MemberCustomFiels.jsx @@ -1,7 +1,7 @@ import {useEffect, useState} from "react"; import {getCategoryFormBirthDate} from "../utils/Tools.js"; -export function BirthDayField({inti_date, inti_category}) { +export function BirthDayField({inti_date, inti_category, required = true}) { const [date, setDate] = useState(inti_date) const [category, setCategory] = useState(inti_category) const [canUpdate, setCanUpdate] = useState(false) @@ -15,19 +15,18 @@ export function BirthDayField({inti_date, inti_category}) { setCategory(getCategoryFormBirthDate(new Date(date), new Date('2023-09-01'))) } - return <>
Date de naissance setDate(e.target.value)}/>
Catégorie {canUpdate && } diff --git a/src/main/webapp/src/pages/admin/member/InformationForm.jsx b/src/main/webapp/src/pages/admin/member/InformationForm.jsx index c6ea3fe..e8fcacb 100644 --- a/src/main/webapp/src/pages/admin/member/InformationForm.jsx +++ b/src/main/webapp/src/pages/admin/member/InformationForm.jsx @@ -32,15 +32,30 @@ export function InformationForm({data}) { event.preventDefault(); setLoading(1) + let error = false; + if (event.target.country?.value === "NA") { + toast.error('Veuillez sélectionner un pays valide 😕'); + error = true; + } + if (event.target.club?.value === "Sélectionner...") { + toast.error('Veuillez sélectionner un club valide 😕'); + error = true; + } + + if (error) { + setLoading(0) + return; + } + const formData = new FormData(); formData.append("id", data.id); formData.append("lname", event.target.lname?.value.toUpperCase()); formData.append("fname", event.target.fname?.value); - formData.append("categorie", event.target.category?.value); + formData.append("categorie", (event.target.category?.value.length === 0) ? null : event.target.category?.value); formData.append("club", event.target.club?.value); formData.append("genre", event.target.genre?.value); formData.append("country", event.target.country?.value); - formData.append("birth_date", new Date(event.target.birth_date?.value).toUTCString()); + formData.append("birth_date", (event.target.birth_date?.value.length === 0) ? null : new Date(event.target.birth_date?.value).toUTCString()); formData.append("email", event.target.email?.value); formData.append("role", event.target.role?.value); formData.append("grade_arbitrage", event.target.grade_arbitrage?.value); @@ -71,14 +86,14 @@ export function InformationForm({data}) { + type="email" required={false}/> + inti_category={data.categorie} required={false}/>
- +
+ type="email" required={false}/>
- +