feat: add categorie filter membre search
This commit is contained in:
parent
bf75d9d036
commit
1b5bf8ba6c
@ -126,11 +126,17 @@ public class MembreService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Uni<PageResult<SimpleMembre>> searchAdmin(int limit, int page, String search, String club,
|
public Uni<PageResult<SimpleMembre>> searchAdmin(int limit, int page, String search, String club,
|
||||||
int licenceRequest, int payState, String order) {
|
int licenceRequest, int payState, String order, String categorie) {
|
||||||
if (search == null)
|
if (search == null)
|
||||||
search = "";
|
search = "";
|
||||||
search = "%" + search.replaceAll(" ", "% %") + "%";
|
search = "%" + search.replaceAll(" ", "% %") + "%";
|
||||||
|
|
||||||
|
String categorieFilter;
|
||||||
|
if (categorie == null || categorie.isBlank())
|
||||||
|
categorieFilter = " True";
|
||||||
|
else
|
||||||
|
categorieFilter = "categorie = " + Categorie.valueOf(categorie).ordinal();
|
||||||
|
|
||||||
String finalSearch = search;
|
String finalSearch = search;
|
||||||
Uni<List<LicenceModel>> baseUni = getLicenceListe(licenceRequest, payState);
|
Uni<List<LicenceModel>> baseUni = getLicenceListe(licenceRequest, payState);
|
||||||
|
|
||||||
@ -147,18 +153,18 @@ public class MembreService {
|
|||||||
|
|
||||||
if (club == null || club.isBlank()) {
|
if (club == null || club.isBlank()) {
|
||||||
query = repository.find(
|
query = repository.find(
|
||||||
"id " + idf + " ?2 AND (" + FIND_NAME_REQUEST + ")",
|
"id " + idf + " ?2 AND (" + FIND_NAME_REQUEST + ") AND " + categorieFilter,
|
||||||
sort, finalSearch, ids)
|
sort, finalSearch, ids)
|
||||||
.page(Page.ofSize(limit));
|
.page(Page.ofSize(limit));
|
||||||
} else {
|
} else {
|
||||||
if (club.equals("null")) {
|
if (club.equals("null")) {
|
||||||
query = repository.find(
|
query = repository.find(
|
||||||
"id " + idf + " ?2 AND club IS NULL AND (" + FIND_NAME_REQUEST + ")",
|
"id " + idf + " ?2 AND club IS NULL AND (" + FIND_NAME_REQUEST + ") AND " + categorieFilter,
|
||||||
sort, finalSearch, ids).page(Page.ofSize(limit));
|
sort, finalSearch, ids).page(Page.ofSize(limit));
|
||||||
} else {
|
} else {
|
||||||
query = repository.find(
|
query = repository.find(
|
||||||
"id " + idf + " ?3 AND LOWER(club.name) LIKE LOWER(?2) AND (" + FIND_NAME_REQUEST + ")",
|
"id " + idf + " ?3 AND LOWER(club.name) LIKE LOWER(?2) AND (" + FIND_NAME_REQUEST + ") AND " + categorieFilter,
|
||||||
sort, finalSearch, club + "%", ids)
|
sort, finalSearch, club, ids)
|
||||||
.page(Page.ofSize(limit));
|
.page(Page.ofSize(limit));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -167,7 +173,7 @@ public class MembreService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Uni<PageResult<SimpleMembre>> search(int limit, int page, String search, int licenceRequest, int payState,
|
public Uni<PageResult<SimpleMembre>> search(int limit, int page, String search, int licenceRequest, int payState,
|
||||||
String order, String subject) {
|
String order, String categorie, String subject) {
|
||||||
if (search == null)
|
if (search == null)
|
||||||
search = "";
|
search = "";
|
||||||
search = "%" + search.replaceAll(" ", "% %") + "%";
|
search = "%" + search.replaceAll(" ", "% %") + "%";
|
||||||
@ -176,6 +182,12 @@ public class MembreService {
|
|||||||
|
|
||||||
Uni<List<LicenceModel>> baseUni = getLicenceListe(licenceRequest, payState);
|
Uni<List<LicenceModel>> baseUni = getLicenceListe(licenceRequest, payState);
|
||||||
|
|
||||||
|
String categorieFilter;
|
||||||
|
if (categorie == null || categorie.isBlank())
|
||||||
|
categorieFilter = " True";
|
||||||
|
else
|
||||||
|
categorieFilter = "categorie = " + Categorie.valueOf(categorie).ordinal();
|
||||||
|
|
||||||
Sort sort = getSort(order);
|
Sort sort = getSort(order);
|
||||||
if (sort == null)
|
if (sort == null)
|
||||||
return Uni.createFrom().failure(new DInternalError("Erreur lors calcul du trie"));
|
return Uni.createFrom().failure(new DInternalError("Erreur lors calcul du trie"));
|
||||||
@ -188,7 +200,7 @@ public class MembreService {
|
|||||||
return repository.find("userId = ?1", subject).firstResult()
|
return repository.find("userId = ?1", subject).firstResult()
|
||||||
.chain(membreModel -> {
|
.chain(membreModel -> {
|
||||||
PanacheQuery<MembreModel> query = repository.find(
|
PanacheQuery<MembreModel> query = repository.find(
|
||||||
"id " + idf + " ?3 AND club = ?2 AND (" + FIND_NAME_REQUEST + ")",
|
"id " + idf + " ?3 AND club = ?2 AND (" + FIND_NAME_REQUEST + ") AND " + categorieFilter,
|
||||||
sort, finalSearch, membreModel.getClub(), ids)
|
sort, finalSearch, membreModel.getClub(), ids)
|
||||||
.page(Page.ofSize(limit));
|
.page(Page.ofSize(limit));
|
||||||
return getPageResult(query, limit, page);
|
return getPageResult(query, limit, page);
|
||||||
|
|||||||
@ -58,6 +58,7 @@ public class MembreAdminEndpoints {
|
|||||||
@Parameter(description = "Page à consulter") @QueryParam("page") Integer page,
|
@Parameter(description = "Page à consulter") @QueryParam("page") Integer page,
|
||||||
@Parameter(description = "Text à rechercher") @QueryParam("search") String search,
|
@Parameter(description = "Text à rechercher") @QueryParam("search") String search,
|
||||||
@Parameter(description = "Club à filter") @QueryParam("club") String club,
|
@Parameter(description = "Club à filter") @QueryParam("club") String club,
|
||||||
|
@Parameter(description = "Catégorie à filter") @QueryParam("categorie") String categorie,
|
||||||
@Parameter(description = "État de la demande de licence: 0 -> sans demande, 1 -> avec demande ou validée, 2 -> toute les demande non validée, 3 -> validée, 4 -> tout, 5 -> demande complete, 6 -> demande incomplete") @QueryParam("licenceRequest") int licenceRequest,
|
@Parameter(description = "État de la demande de licence: 0 -> sans demande, 1 -> avec demande ou validée, 2 -> toute les demande non validée, 3 -> validée, 4 -> tout, 5 -> demande complete, 6 -> demande incomplete") @QueryParam("licenceRequest") int licenceRequest,
|
||||||
@Parameter(description = "État du payment: 0 -> non payer, 1 -> payer, 2 -> tout") @QueryParam("payment") int payment,
|
@Parameter(description = "État du payment: 0 -> non payer, 1 -> payer, 2 -> tout") @QueryParam("payment") int payment,
|
||||||
@Parameter(description = "Ordre") @QueryParam("order") String order) {
|
@Parameter(description = "Ordre") @QueryParam("order") String order) {
|
||||||
@ -65,7 +66,7 @@ public class MembreAdminEndpoints {
|
|||||||
limit = 50;
|
limit = 50;
|
||||||
if (page == null || page < 1)
|
if (page == null || page < 1)
|
||||||
page = 1;
|
page = 1;
|
||||||
return membreService.searchAdmin(limit, page - 1, search, club, licenceRequest, payment, order);
|
return membreService.searchAdmin(limit, page - 1, search, club, licenceRequest, payment, order, categorie);
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
|
|||||||
@ -50,6 +50,7 @@ public class MembreClubEndpoints {
|
|||||||
@Parameter(description = "Nombre max de résulta (max 50)") @QueryParam("limit") Integer limit,
|
@Parameter(description = "Nombre max de résulta (max 50)") @QueryParam("limit") Integer limit,
|
||||||
@Parameter(description = "Page à consulter") @QueryParam("page") Integer page,
|
@Parameter(description = "Page à consulter") @QueryParam("page") Integer page,
|
||||||
@Parameter(description = "Text à rechercher") @QueryParam("search") String search,
|
@Parameter(description = "Text à rechercher") @QueryParam("search") String search,
|
||||||
|
@Parameter(description = "Catégorie à filter") @QueryParam("categorie") String categorie,
|
||||||
@Parameter(description = "Etat de la demande de licence: 0 -> sans demande, 1 -> avec demande ou validée, 2 -> toute les demande non validée, 3 -> validée, 4 -> tout, 5 -> demande complete, 6 -> demande incomplete") @QueryParam("licenceRequest") int licenceRequest,
|
@Parameter(description = "Etat de la demande de licence: 0 -> sans demande, 1 -> avec demande ou validée, 2 -> toute les demande non validée, 3 -> validée, 4 -> tout, 5 -> demande complete, 6 -> demande incomplete") @QueryParam("licenceRequest") int licenceRequest,
|
||||||
@Parameter(description = "Etat du payment: 0 -> non payer, 1 -> payer, 2 -> tout") @QueryParam("payment") int payment,
|
@Parameter(description = "Etat du payment: 0 -> non payer, 1 -> payer, 2 -> tout") @QueryParam("payment") int payment,
|
||||||
@Parameter(description = "Ordre") @QueryParam("order") String order) {
|
@Parameter(description = "Ordre") @QueryParam("order") String order) {
|
||||||
@ -57,7 +58,7 @@ public class MembreClubEndpoints {
|
|||||||
limit = 50;
|
limit = 50;
|
||||||
if (page == null || page < 1)
|
if (page == null || page < 1)
|
||||||
page = 1;
|
page = 1;
|
||||||
return membreService.search(limit, page - 1, search, licenceRequest, payment, order, securityCtx.getSubject());
|
return membreService.search(limit, page - 1, search, licenceRequest, payment, order, categorie, securityCtx.getSubject());
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
|
|||||||
@ -28,18 +28,19 @@ export function MemberList({source}) {
|
|||||||
const [lastSearch, setLastSearch] = useState("");
|
const [lastSearch, setLastSearch] = useState("");
|
||||||
const [paymentFilter, setPaymentFilter] = useState(2);
|
const [paymentFilter, setPaymentFilter] = useState(2);
|
||||||
const [order, setOrder] = useState("");
|
const [order, setOrder] = useState("");
|
||||||
|
const [catFilter, setCatFilter] = useState("");
|
||||||
|
|
||||||
const setLoading = useLoadingSwitcher()
|
const setLoading = useLoadingSwitcher()
|
||||||
const {
|
const {
|
||||||
data,
|
data,
|
||||||
error,
|
error,
|
||||||
refresh
|
refresh
|
||||||
} = useFetch(`/member/find/${source}?page=${page}&licenceRequest=${stateFilter}&payment=${paymentFilter}&order=${order}`, setLoading, 1)
|
} = useFetch(`/member/find/${source}?page=${page}&licenceRequest=${stateFilter}&payment=${paymentFilter}&order=${order}&categorie=${catFilter}`, setLoading, 1)
|
||||||
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
refresh(`/member/find/${source}?page=${page}&search=${lastSearch}&club=${clubFilter}&licenceRequest=${stateFilter}&payment=${paymentFilter}&order=${order}`);
|
refresh(`/member/find/${source}?page=${page}&search=${lastSearch}&club=${clubFilter}&licenceRequest=${stateFilter}&payment=${paymentFilter}&order=${order}&categorie=${catFilter}`);
|
||||||
}, [hash, clubFilter, stateFilter, lastSearch, paymentFilter, order]);
|
}, [hash, clubFilter, stateFilter, lastSearch, paymentFilter, order, catFilter]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!data)
|
if (!data)
|
||||||
@ -123,10 +124,10 @@ export function MemberList({source}) {
|
|||||||
<div className="card mb-4">
|
<div className="card mb-4">
|
||||||
<div className="card-header">Filtre</div>
|
<div className="card-header">Filtre</div>
|
||||||
<div className="card-body">
|
<div className="card-body">
|
||||||
<FiltreBar showLicenceState={showLicenceState} setShowLicenceState={setShowLicenceState} data={data}
|
<FiltreBar showLicenceState={showLicenceState} setShowLicenceState={setShowLicenceState}
|
||||||
clubFilter={clubFilter} setClubFilter={setClubFilter} source={source}
|
clubFilter={clubFilter} setClubFilter={setClubFilter} source={source}
|
||||||
stateFilter={stateFilter} setStateFilter={setStateFilter} paymentFilter={paymentFilter}
|
stateFilter={stateFilter} setStateFilter={setStateFilter} paymentFilter={paymentFilter}
|
||||||
setPaymentFilter={setPaymentFilter}/>
|
setPaymentFilter={setPaymentFilter} catFilter={catFilter} setCatFilter={setCatFilter}/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -501,31 +502,32 @@ function OrderBar({onOrderChange, source}) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
let allClub = []
|
|
||||||
|
|
||||||
function FiltreBar({
|
function FiltreBar({
|
||||||
showLicenceState,
|
showLicenceState,
|
||||||
setShowLicenceState,
|
setShowLicenceState,
|
||||||
data,
|
|
||||||
clubFilter,
|
clubFilter,
|
||||||
setClubFilter,
|
setClubFilter,
|
||||||
source,
|
source,
|
||||||
stateFilter,
|
stateFilter,
|
||||||
setStateFilter,
|
setStateFilter,
|
||||||
paymentFilter,
|
paymentFilter,
|
||||||
setPaymentFilter
|
setPaymentFilter,
|
||||||
|
catFilter,
|
||||||
|
setCatFilter,
|
||||||
}) {
|
}) {
|
||||||
useEffect(() => {
|
|
||||||
if (!data)
|
|
||||||
return;
|
|
||||||
allClub.push(...data.result.map((e) => e.club?.name))
|
|
||||||
allClub = allClub.filter((value, index, self) => self.indexOf(value) === index).filter(value => value != null).sort()
|
|
||||||
}, [data]);
|
|
||||||
|
|
||||||
return <div>
|
return <div>
|
||||||
<div className="mb-3">
|
<div className="mb-3">
|
||||||
<Checkbox value={showLicenceState} onChange={setShowLicenceState} label="Afficher l'état des licences"/>
|
<Checkbox value={showLicenceState} onChange={setShowLicenceState} label="Afficher l'état des licences"/>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="mb-3">
|
||||||
|
<select className="form-select" value={catFilter} onChange={event => setCatFilter(event.target.value)}>
|
||||||
|
<option value="">--- toute les catégories ---</option>
|
||||||
|
{Tools.CatList.map(cat => (
|
||||||
|
<option key={cat} value={cat}>{getCatName(cat)}</option>
|
||||||
|
))}
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
{source !== "club" && <ClubSelectFilter clubFilter={clubFilter} setClubFilter={setClubFilter}/>}
|
{source !== "club" && <ClubSelectFilter clubFilter={clubFilter} setClubFilter={setClubFilter}/>}
|
||||||
<div className="mb-3">
|
<div className="mb-3">
|
||||||
<select className="form-select" value={stateFilter} onChange={event => setStateFilter(Number(event.target.value))}>
|
<select className="form-select" value={stateFilter} onChange={event => setStateFilter(Number(event.target.value))}>
|
||||||
|
|||||||
@ -23,6 +23,20 @@ export const errFormater = (data, msg) => {
|
|||||||
return `${msg} (${data.response.statusText}: ${JSON.stringify(data.response.data)}) 😕`
|
return `${msg} (${data.response.statusText}: ${JSON.stringify(data.response.data)}) 😕`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const CatList = [
|
||||||
|
"SUPER_MINI",
|
||||||
|
"MINI_POUSSIN",
|
||||||
|
"POUSSIN",
|
||||||
|
"BENJAMIN",
|
||||||
|
"MINIME",
|
||||||
|
"CADET",
|
||||||
|
"JUNIOR",
|
||||||
|
"SENIOR1",
|
||||||
|
"SENIOR2",
|
||||||
|
"VETERAN1",
|
||||||
|
"VETERAN2"
|
||||||
|
];
|
||||||
|
|
||||||
export function getCategoryFormBirthDate(birth_date, currentDate = new Date()) {
|
export function getCategoryFormBirthDate(birth_date, currentDate = new Date()) {
|
||||||
const currentSaison = getSaison(currentDate)
|
const currentSaison = getSaison(currentDate)
|
||||||
const birthYear = birth_date.getFullYear()
|
const birthYear = birth_date.getFullYear()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user