feat(comp): add more register data
All checks were successful
Deploy Production Server / if_merged (pull_request) Successful in 6m25s
All checks were successful
Deploy Production Server / if_merged (pull_request) Successful in 6m25s
This commit is contained in:
parent
c7b5f3ef61
commit
fa17d0a037
20
src/main/java/fr/titionfire/ffsaf/data/id/RegisterId.java
Normal file
20
src/main/java/fr/titionfire/ffsaf/data/id/RegisterId.java
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
package fr.titionfire.ffsaf.data.id;
|
||||||
|
|
||||||
|
import fr.titionfire.ffsaf.data.model.CompetitionModel;
|
||||||
|
import fr.titionfire.ffsaf.data.model.MembreModel;
|
||||||
|
import jakarta.persistence.JoinColumn;
|
||||||
|
import jakarta.persistence.ManyToOne;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
public class RegisterId implements Serializable {
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "id_competition")
|
||||||
|
private CompetitionModel competition;
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name = "id_membre")
|
||||||
|
private MembreModel membre;
|
||||||
|
}
|
||||||
@ -1,7 +1,6 @@
|
|||||||
package fr.titionfire.ffsaf.data.model;
|
package fr.titionfire.ffsaf.data.model;
|
||||||
|
|
||||||
import fr.titionfire.ffsaf.utils.CompetitionSystem;
|
import fr.titionfire.ffsaf.utils.CompetitionSystem;
|
||||||
import fr.titionfire.ffsaf.utils.RegisterEmbeddable;
|
|
||||||
import io.quarkus.runtime.annotations.RegisterForReflection;
|
import io.quarkus.runtime.annotations.RegisterForReflection;
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@ -38,9 +37,8 @@ public class CompetitionModel {
|
|||||||
|
|
||||||
Date date;
|
Date date;
|
||||||
|
|
||||||
@ElementCollection(fetch = FetchType.LAZY)
|
@OneToMany(mappedBy = "competition", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
|
||||||
@CollectionTable(name = "register", joinColumns = @JoinColumn(name = "id_competition"))
|
List<RegisterModel> insc;
|
||||||
List<RegisterEmbeddable> insc;
|
|
||||||
|
|
||||||
String owner;
|
String owner;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,40 @@
|
|||||||
|
package fr.titionfire.ffsaf.data.model;
|
||||||
|
|
||||||
|
import fr.titionfire.ffsaf.data.id.RegisterId;
|
||||||
|
import fr.titionfire.ffsaf.utils.Categorie;
|
||||||
|
import io.quarkus.runtime.annotations.RegisterForReflection;
|
||||||
|
import jakarta.persistence.*;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.Setter;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
@AllArgsConstructor
|
||||||
|
@NoArgsConstructor
|
||||||
|
@RegisterForReflection
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name = "register")
|
||||||
|
@IdClass(RegisterId.class)
|
||||||
|
public class RegisterModel {
|
||||||
|
@Id
|
||||||
|
@ManyToOne(fetch = FetchType.LAZY)
|
||||||
|
@JoinColumn(name = "id_competition")
|
||||||
|
CompetitionModel competition;
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
|
@JoinColumn(name = "id_membre")
|
||||||
|
MembreModel membre;
|
||||||
|
|
||||||
|
Integer weight;
|
||||||
|
int overCategory = 0;
|
||||||
|
Categorie categorie;
|
||||||
|
|
||||||
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
|
@JoinColumn(name = "club")
|
||||||
|
ClubModel club = null;
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,9 @@
|
|||||||
|
package fr.titionfire.ffsaf.data.repository;
|
||||||
|
|
||||||
|
import fr.titionfire.ffsaf.data.model.RegisterModel;
|
||||||
|
import io.quarkus.hibernate.reactive.panache.PanacheRepository;
|
||||||
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
|
|
||||||
|
@ApplicationScoped
|
||||||
|
public class RegisterRepository implements PanacheRepository<RegisterModel> {
|
||||||
|
}
|
||||||
@ -2,10 +2,7 @@ package fr.titionfire.ffsaf.domain.service;
|
|||||||
|
|
||||||
import fr.titionfire.ffsaf.data.model.CompetitionModel;
|
import fr.titionfire.ffsaf.data.model.CompetitionModel;
|
||||||
import fr.titionfire.ffsaf.data.model.MembreModel;
|
import fr.titionfire.ffsaf.data.model.MembreModel;
|
||||||
import fr.titionfire.ffsaf.data.repository.CombRepository;
|
import fr.titionfire.ffsaf.data.repository.*;
|
||||||
import fr.titionfire.ffsaf.data.repository.CompetitionRepository;
|
|
||||||
import fr.titionfire.ffsaf.data.repository.MatchRepository;
|
|
||||||
import fr.titionfire.ffsaf.data.repository.PouleRepository;
|
|
||||||
import fr.titionfire.ffsaf.net2.ServerCustom;
|
import fr.titionfire.ffsaf.net2.ServerCustom;
|
||||||
import fr.titionfire.ffsaf.net2.data.SimpleCompet;
|
import fr.titionfire.ffsaf.net2.data.SimpleCompet;
|
||||||
import fr.titionfire.ffsaf.net2.request.SReqCompet;
|
import fr.titionfire.ffsaf.net2.request.SReqCompet;
|
||||||
@ -18,8 +15,9 @@ import fr.titionfire.ffsaf.rest.exception.DBadRequestException;
|
|||||||
import fr.titionfire.ffsaf.rest.exception.DForbiddenException;
|
import fr.titionfire.ffsaf.rest.exception.DForbiddenException;
|
||||||
import fr.titionfire.ffsaf.rest.exception.DNotFoundException;
|
import fr.titionfire.ffsaf.rest.exception.DNotFoundException;
|
||||||
import fr.titionfire.ffsaf.utils.CompetitionSystem;
|
import fr.titionfire.ffsaf.utils.CompetitionSystem;
|
||||||
import fr.titionfire.ffsaf.utils.RegisterEmbeddable;
|
import fr.titionfire.ffsaf.data.model.RegisterModel;
|
||||||
import fr.titionfire.ffsaf.utils.SecurityCtx;
|
import fr.titionfire.ffsaf.utils.SecurityCtx;
|
||||||
|
import fr.titionfire.ffsaf.utils.Utils;
|
||||||
import io.quarkus.cache.Cache;
|
import io.quarkus.cache.Cache;
|
||||||
import io.quarkus.cache.CacheName;
|
import io.quarkus.cache.CacheName;
|
||||||
import io.quarkus.hibernate.reactive.panache.Panache;
|
import io.quarkus.hibernate.reactive.panache.Panache;
|
||||||
@ -71,6 +69,8 @@ public class CompetitionService {
|
|||||||
@Inject
|
@Inject
|
||||||
@CacheName("safca-have-access")
|
@CacheName("safca-have-access")
|
||||||
Cache cacheAccess;
|
Cache cacheAccess;
|
||||||
|
@Inject
|
||||||
|
RegisterRepository registerRepository;
|
||||||
|
|
||||||
public Uni<CompetitionData> getById(SecurityCtx securityCtx, Long id) {
|
public Uni<CompetitionData> getById(SecurityCtx securityCtx, Long id) {
|
||||||
if (id == 0) {
|
if (id == 0) {
|
||||||
@ -205,23 +205,36 @@ public class CompetitionService {
|
|||||||
.chain(c -> findComb(data.getLicence(), data.getFname(), data.getLname())
|
.chain(c -> findComb(data.getLicence(), data.getFname(), data.getLname())
|
||||||
.chain(combModel -> Mutiny.fetch(c.getInsc())
|
.chain(combModel -> Mutiny.fetch(c.getInsc())
|
||||||
.chain(Unchecked.function(insc -> {
|
.chain(Unchecked.function(insc -> {
|
||||||
Optional<RegisterEmbeddable> opt = insc.stream()
|
Optional<RegisterModel> opt = insc.stream()
|
||||||
.filter(m -> m.getMembre().equals(combModel)).findAny();
|
.filter(m -> m.getMembre().equals(combModel)).findAny();
|
||||||
|
|
||||||
RegisterEmbeddable r;
|
RegisterModel r;
|
||||||
if (opt.isPresent()) {
|
if (opt.isPresent()) {
|
||||||
r = opt.get();
|
r = opt.get();
|
||||||
r.setWeight(data.getWeight());
|
r.setWeight(data.getWeight());
|
||||||
r.setOverCategory(data.getOverCategory());
|
r.setOverCategory(data.getOverCategory());
|
||||||
|
r.setCategorie(
|
||||||
|
(combModel.getBirth_date() == null) ? combModel.getCategorie() :
|
||||||
|
Utils.getCategoryFormBirthDate(combModel.getBirth_date(),
|
||||||
|
c.getDate()));
|
||||||
|
int days = Utils.getDaysBeforeCompetition(c.getDate());
|
||||||
|
if (days > -7) {
|
||||||
|
r.setClub(combModel.getClub());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
r = new RegisterEmbeddable(combModel, data.getWeight(), data.getOverCategory());
|
r = new RegisterModel(c ,combModel, data.getWeight(), data.getOverCategory(),
|
||||||
|
(combModel.getBirth_date() == null) ? combModel.getCategorie() :
|
||||||
|
Utils.getCategoryFormBirthDate(combModel.getBirth_date(),
|
||||||
|
c.getDate()),
|
||||||
|
(combModel.getClub() == null) ? null : c.getClub());
|
||||||
insc.add(r);
|
insc.add(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c.getSystem() == CompetitionSystem.SAFCA) {
|
if (c.getSystem() == CompetitionSystem.SAFCA) {
|
||||||
SReqRegister.sendIfNeed(serverCustom.clients,
|
SReqRegister.sendIfNeed(serverCustom.clients,
|
||||||
new CompetitionData.SimpleRegister(r.getMembre().getId(),
|
new CompetitionData.SimpleRegister(r.getMembre().getId(),
|
||||||
r.getOverCategory(), r.getWeight()), c.getId());
|
r.getOverCategory(), r.getWeight(), r.getCategorie(),
|
||||||
|
(r.getClub() == null) ? null : r.getClub().getId()), c.getId());
|
||||||
}
|
}
|
||||||
return Panache.withTransaction(() -> repository.persist(c)).map(__ -> r);
|
return Panache.withTransaction(() -> repository.persist(c)).map(__ -> r);
|
||||||
}))))
|
}))))
|
||||||
@ -250,17 +263,17 @@ public class CompetitionService {
|
|||||||
|
|
||||||
public Uni<Void> removeRegisterComb(SecurityCtx securityCtx, Long id, Long combId) {
|
public Uni<Void> removeRegisterComb(SecurityCtx securityCtx, Long id, Long combId) {
|
||||||
return permService.hasEditPerm(securityCtx, id)
|
return permService.hasEditPerm(securityCtx, id)
|
||||||
.chain(c -> Mutiny.fetch(c.getInsc())
|
.chain(c -> registerRepository.delete("competition = ?1 AND membre.id = ?2", c, combId)
|
||||||
.chain(Unchecked.function(insc -> {
|
.invoke(Unchecked.consumer(l -> {
|
||||||
if (insc.removeIf(m -> m.getMembre().getId().equals(combId))) {
|
if (l != 0){
|
||||||
if (c.getSystem() == CompetitionSystem.SAFCA) {
|
if (c.getSystem() == CompetitionSystem.SAFCA) {
|
||||||
SReqRegister.sendRmIfNeed(serverCustom.clients, combId, id);
|
SReqRegister.sendRmIfNeed(serverCustom.clients, combId, id);
|
||||||
}
|
}
|
||||||
|
}else{
|
||||||
return Panache.withTransaction(() -> repository.persist(c)).map(__ -> null);
|
|
||||||
}
|
|
||||||
throw new DBadRequestException("Combattant non inscrit");
|
throw new DBadRequestException("Combattant non inscrit");
|
||||||
})));
|
}
|
||||||
|
}))
|
||||||
|
).replaceWithVoid();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Uni<?> delete(SecurityCtx securityCtx, Long id) {
|
public Uni<?> delete(SecurityCtx securityCtx, Long id) {
|
||||||
|
|||||||
@ -3,9 +3,7 @@ package fr.titionfire.ffsaf.domain.service;
|
|||||||
import fr.titionfire.ffsaf.data.model.ClubModel;
|
import fr.titionfire.ffsaf.data.model.ClubModel;
|
||||||
import fr.titionfire.ffsaf.data.model.LicenceModel;
|
import fr.titionfire.ffsaf.data.model.LicenceModel;
|
||||||
import fr.titionfire.ffsaf.data.model.MembreModel;
|
import fr.titionfire.ffsaf.data.model.MembreModel;
|
||||||
import fr.titionfire.ffsaf.data.repository.ClubRepository;
|
import fr.titionfire.ffsaf.data.repository.*;
|
||||||
import fr.titionfire.ffsaf.data.repository.CombRepository;
|
|
||||||
import fr.titionfire.ffsaf.data.repository.LicenceRepository;
|
|
||||||
import fr.titionfire.ffsaf.net2.ServerCustom;
|
import fr.titionfire.ffsaf.net2.ServerCustom;
|
||||||
import fr.titionfire.ffsaf.net2.data.SimpleCombModel;
|
import fr.titionfire.ffsaf.net2.data.SimpleCombModel;
|
||||||
import fr.titionfire.ffsaf.net2.request.SReqComb;
|
import fr.titionfire.ffsaf.net2.request.SReqComb;
|
||||||
@ -37,9 +35,7 @@ import org.jboss.logging.Logger;
|
|||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
|
||||||
@ -55,6 +51,9 @@ public class MembreService {
|
|||||||
@Inject
|
@Inject
|
||||||
LicenceRepository licenceRepository;
|
LicenceRepository licenceRepository;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
CompetitionRepository competitionRepository;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ServerCustom serverCustom;
|
ServerCustom serverCustom;
|
||||||
@Inject
|
@Inject
|
||||||
@ -65,6 +64,8 @@ public class MembreService {
|
|||||||
|
|
||||||
@ConfigProperty(name = "pdf-maker.jar-path")
|
@ConfigProperty(name = "pdf-maker.jar-path")
|
||||||
String pdfMakerJarPath;
|
String pdfMakerJarPath;
|
||||||
|
@Inject
|
||||||
|
RegisterRepository registerRepository;
|
||||||
|
|
||||||
public SimpleCombModel find(int licence, String np) throws Throwable {
|
public SimpleCombModel find(int licence, String np) throws Throwable {
|
||||||
return VertxContextSupport.subscribeAndAwait(() -> Panache.withTransaction(() ->
|
return VertxContextSupport.subscribeAndAwait(() -> Panache.withTransaction(() ->
|
||||||
@ -88,7 +89,8 @@ public class MembreService {
|
|||||||
query = repository.find("(LOWER(lname) LIKE LOWER(?1) OR LOWER(fname) LIKE LOWER(?1))",
|
query = repository.find("(LOWER(lname) LIKE LOWER(?1) OR LOWER(fname) LIKE LOWER(?1))",
|
||||||
Sort.ascending("fname", "lname"), search).page(Page.ofSize(limit));
|
Sort.ascending("fname", "lname"), search).page(Page.ofSize(limit));
|
||||||
else
|
else
|
||||||
query = repository.find("LOWER(club.name) LIKE LOWER(?2) AND (LOWER(lname) LIKE LOWER(?1) OR LOWER(fname) LIKE LOWER(?1))",
|
query = repository.find(
|
||||||
|
"LOWER(club.name) LIKE LOWER(?2) AND (LOWER(lname) LIKE LOWER(?1) OR LOWER(fname) LIKE LOWER(?1))",
|
||||||
Sort.ascending("fname", "lname"), search, club + "%").page(Page.ofSize(limit));
|
Sort.ascending("fname", "lname"), search, club + "%").page(Page.ofSize(limit));
|
||||||
return getPageResult(query, limit, page);
|
return getPageResult(query, limit, page);
|
||||||
}
|
}
|
||||||
@ -100,7 +102,8 @@ public class MembreService {
|
|||||||
String finalSearch = search;
|
String finalSearch = search;
|
||||||
return repository.find("userId = ?1", subject).firstResult()
|
return repository.find("userId = ?1", subject).firstResult()
|
||||||
.chain(membreModel -> {
|
.chain(membreModel -> {
|
||||||
PanacheQuery<MembreModel> query = repository.find("club = ?1 AND (LOWER(lname) LIKE LOWER(?2) OR LOWER(fname) LIKE LOWER(?2))",
|
PanacheQuery<MembreModel> query = repository.find(
|
||||||
|
"club = ?1 AND (LOWER(lname) LIKE LOWER(?2) OR LOWER(fname) LIKE LOWER(?2))",
|
||||||
Sort.ascending("fname", "lname"), membreModel.getClub(), finalSearch)
|
Sort.ascending("fname", "lname"), membreModel.getClub(), finalSearch)
|
||||||
.page(Page.ofSize(limit));
|
.page(Page.ofSize(limit));
|
||||||
return getPageResult(query, limit, page);
|
return getPageResult(query, limit, page);
|
||||||
@ -170,6 +173,20 @@ public class MembreService {
|
|||||||
.call(membreModel -> (membreModel.getUserId() != null) ?
|
.call(membreModel -> (membreModel.getUserId() != null) ?
|
||||||
keycloakService.setEmail(membreModel.getUserId(), membreModel.getEmail()) : Uni.createFrom()
|
keycloakService.setEmail(membreModel.getUserId(), membreModel.getEmail()) : Uni.createFrom()
|
||||||
.nullItem())
|
.nullItem())
|
||||||
|
.call(membreModel -> {
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.add(Calendar.DAY_OF_YEAR, -7);
|
||||||
|
Date dateLimit = calendar.getTime();
|
||||||
|
|
||||||
|
return competitionRepository.list("date > ?1", dateLimit)
|
||||||
|
.call(l ->
|
||||||
|
Uni.join().all(l.stream().map(competitionModel ->
|
||||||
|
registerRepository.update(
|
||||||
|
"categorie = ?1, club = ?2 where competition = ?3 AND membre = ?4",
|
||||||
|
membreModel.getCategorie(), membreModel.getClub(), competitionModel,
|
||||||
|
membreModel)
|
||||||
|
).toList()).andFailFast());
|
||||||
|
})
|
||||||
.map(__ -> "OK");
|
.map(__ -> "OK");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
package fr.titionfire.ffsaf.rest.data;
|
package fr.titionfire.ffsaf.rest.data;
|
||||||
|
|
||||||
import fr.titionfire.ffsaf.data.model.CompetitionModel;
|
import fr.titionfire.ffsaf.data.model.CompetitionModel;
|
||||||
|
import fr.titionfire.ffsaf.utils.Categorie;
|
||||||
import fr.titionfire.ffsaf.utils.CompetitionSystem;
|
import fr.titionfire.ffsaf.utils.CompetitionSystem;
|
||||||
import fr.titionfire.ffsaf.utils.RegisterEmbeddable;
|
import fr.titionfire.ffsaf.data.model.RegisterModel;
|
||||||
import io.quarkus.runtime.annotations.RegisterForReflection;
|
import io.quarkus.runtime.annotations.RegisterForReflection;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@ -32,9 +33,10 @@ public class CompetitionData {
|
|||||||
model.getClub().getId(), model.getClub().getName(), model.getOwner(), null);
|
model.getClub().getId(), model.getClub().getName(), model.getOwner(), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CompetitionData addInsc(List<RegisterEmbeddable> insc) {
|
public CompetitionData addInsc(List<RegisterModel> insc) {
|
||||||
this.registers = insc.stream()
|
this.registers = insc.stream()
|
||||||
.map(i -> new SimpleRegister(i.getMembre().getId(), i.getOverCategory(), i.getWeight())).toList();
|
.map(i -> new SimpleRegister(i.getMembre().getId(), i.getOverCategory(), i.getWeight(),
|
||||||
|
i.getCategorie(), (i.getClub() == null) ? null : i.getClub().getId())).toList();
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,5 +47,7 @@ public class CompetitionData {
|
|||||||
long id;
|
long id;
|
||||||
int overCategory;
|
int overCategory;
|
||||||
Integer weight;
|
Integer weight;
|
||||||
|
Categorie categorie;
|
||||||
|
Long club;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@ package fr.titionfire.ffsaf.rest.data;
|
|||||||
import fr.titionfire.ffsaf.data.model.LicenceModel;
|
import fr.titionfire.ffsaf.data.model.LicenceModel;
|
||||||
import fr.titionfire.ffsaf.data.model.MembreModel;
|
import fr.titionfire.ffsaf.data.model.MembreModel;
|
||||||
import fr.titionfire.ffsaf.net2.data.SimpleClubModel;
|
import fr.titionfire.ffsaf.net2.data.SimpleClubModel;
|
||||||
import fr.titionfire.ffsaf.utils.RegisterEmbeddable;
|
import fr.titionfire.ffsaf.data.model.RegisterModel;
|
||||||
import fr.titionfire.ffsaf.utils.Utils;
|
import fr.titionfire.ffsaf.utils.Utils;
|
||||||
import io.quarkus.runtime.annotations.RegisterForReflection;
|
import io.quarkus.runtime.annotations.RegisterForReflection;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@ -25,11 +25,11 @@ public class SimpleRegisterComb {
|
|||||||
private int overCategory;
|
private int overCategory;
|
||||||
private boolean hasLicenceActive;
|
private boolean hasLicenceActive;
|
||||||
|
|
||||||
public static SimpleRegisterComb fromModel(RegisterEmbeddable register, List<LicenceModel> licences) {
|
public static SimpleRegisterComb fromModel(RegisterModel register, List<LicenceModel> licences) {
|
||||||
MembreModel membreModel = register.getMembre();
|
MembreModel membreModel = register.getMembre();
|
||||||
return new SimpleRegisterComb(membreModel.getId(), membreModel.getFname(), membreModel.getLname(),
|
return new SimpleRegisterComb(membreModel.getId(), membreModel.getFname(), membreModel.getLname(),
|
||||||
(membreModel.getCategorie() == null) ? "Catégorie inconnue" : membreModel.getCategorie().getName(),
|
(register.getCategorie() == null) ? "Catégorie inconnue" : register.getCategorie().getName(),
|
||||||
SimpleClubModel.fromModel(membreModel.getClub()), membreModel.getLicence(), register.getWeight(),
|
SimpleClubModel.fromModel(register.getClub()), membreModel.getLicence(), register.getWeight(),
|
||||||
register.getOverCategory(),
|
register.getOverCategory(),
|
||||||
licences.stream().anyMatch(l -> l.isValidate() && l.getSaison() == Utils.getSaison()));
|
licences.stream().anyMatch(l -> l.isValidate() && l.getSaison() == Utils.getSaison()));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,28 +0,0 @@
|
|||||||
package fr.titionfire.ffsaf.utils;
|
|
||||||
|
|
||||||
import fr.titionfire.ffsaf.data.model.MembreModel;
|
|
||||||
import io.quarkus.runtime.annotations.RegisterForReflection;
|
|
||||||
import jakarta.persistence.Embeddable;
|
|
||||||
import jakarta.persistence.FetchType;
|
|
||||||
import jakarta.persistence.JoinColumn;
|
|
||||||
import jakarta.persistence.ManyToOne;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Getter;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
import lombok.Setter;
|
|
||||||
|
|
||||||
@Getter
|
|
||||||
@Setter
|
|
||||||
@AllArgsConstructor
|
|
||||||
@NoArgsConstructor
|
|
||||||
@RegisterForReflection
|
|
||||||
|
|
||||||
@Embeddable
|
|
||||||
public class RegisterEmbeddable {
|
|
||||||
@ManyToOne(fetch = FetchType.EAGER)
|
|
||||||
@JoinColumn(name = "id_membre")
|
|
||||||
MembreModel membre;
|
|
||||||
|
|
||||||
Integer weight;
|
|
||||||
int overCategory = 0;
|
|
||||||
}
|
|
||||||
@ -36,6 +36,43 @@ public class Utils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Calendar toCalendar(Date date) {
|
||||||
|
Calendar cal = Calendar.getInstance();
|
||||||
|
cal.setTime(date);
|
||||||
|
return cal;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Categorie getCategoryFormBirthDate(Date birth_date, Date currentDate) {
|
||||||
|
|
||||||
|
int currentSaison = getSaison(currentDate);
|
||||||
|
int birthYear = toCalendar(birth_date).get(Calendar.YEAR);
|
||||||
|
|
||||||
|
int diff = currentSaison - birthYear;
|
||||||
|
if (diff < 6) {
|
||||||
|
return Categorie.SUPER_MINI;
|
||||||
|
} else if (diff < 8) {
|
||||||
|
return Categorie.MINI_POUSSIN;
|
||||||
|
} else if (diff < 10) {
|
||||||
|
return Categorie.POUSSIN;
|
||||||
|
} else if (diff < 12) {
|
||||||
|
return Categorie.BENJAMIN;
|
||||||
|
} else if (diff < 14) {
|
||||||
|
return Categorie.MINIME;
|
||||||
|
} else if (diff < 16) {
|
||||||
|
return Categorie.CADET;
|
||||||
|
} else if (diff < 18) {
|
||||||
|
return Categorie.JUNIOR;
|
||||||
|
} else if (diff < 24) {
|
||||||
|
return Categorie.SENIOR1;
|
||||||
|
} else if (diff < 34) {
|
||||||
|
return Categorie.SENIOR2;
|
||||||
|
} else if (diff < 44) {
|
||||||
|
return Categorie.VETERAN1;
|
||||||
|
} else {
|
||||||
|
return Categorie.VETERAN2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static Uni<String> moveMedia(long idSrc, long idDest, String media, String dirSrc, String dirDst) {
|
public static Uni<String> moveMedia(long idSrc, long idDest, String media, String dirSrc, String dirDst) {
|
||||||
return Uni.createFrom().nullItem().map(__ -> {
|
return Uni.createFrom().nullItem().map(__ -> {
|
||||||
File dirFile = new File(media, dirSrc);
|
File dirFile = new File(media, dirSrc);
|
||||||
@ -199,4 +236,19 @@ public class Utils {
|
|||||||
return "Ok";
|
return "Ok";
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getDaysBeforeCompetition(Date date) {
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTime(date);
|
||||||
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
calendar.set(Calendar.MINUTE, 0);
|
||||||
|
calendar.set(Calendar.SECOND, 0);
|
||||||
|
|
||||||
|
Calendar now = Calendar.getInstance();
|
||||||
|
now.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
now.set(Calendar.MINUTE, 0);
|
||||||
|
now.set(Calendar.SECOND, 0);
|
||||||
|
|
||||||
|
return (int) ((calendar.getTimeInMillis() - now.getTimeInMillis()) / (1000 * 60 * 60 * 24));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user