feat(comp): add more register data
All checks were successful
Deploy Production Server / if_merged (pull_request) Successful in 6m25s

This commit is contained in:
2025-03-13 16:27:15 +01:00
parent c7b5f3ef61
commit fa17d0a037
10 changed files with 188 additions and 63 deletions

View File

@@ -2,10 +2,7 @@ package fr.titionfire.ffsaf.domain.service;
import fr.titionfire.ffsaf.data.model.CompetitionModel;
import fr.titionfire.ffsaf.data.model.MembreModel;
import fr.titionfire.ffsaf.data.repository.CombRepository;
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.data.repository.*;
import fr.titionfire.ffsaf.net2.ServerCustom;
import fr.titionfire.ffsaf.net2.data.SimpleCompet;
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.DNotFoundException;
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.Utils;
import io.quarkus.cache.Cache;
import io.quarkus.cache.CacheName;
import io.quarkus.hibernate.reactive.panache.Panache;
@@ -71,6 +69,8 @@ public class CompetitionService {
@Inject
@CacheName("safca-have-access")
Cache cacheAccess;
@Inject
RegisterRepository registerRepository;
public Uni<CompetitionData> getById(SecurityCtx securityCtx, Long id) {
if (id == 0) {
@@ -205,23 +205,36 @@ public class CompetitionService {
.chain(c -> findComb(data.getLicence(), data.getFname(), data.getLname())
.chain(combModel -> Mutiny.fetch(c.getInsc())
.chain(Unchecked.function(insc -> {
Optional<RegisterEmbeddable> opt = insc.stream()
Optional<RegisterModel> opt = insc.stream()
.filter(m -> m.getMembre().equals(combModel)).findAny();
RegisterEmbeddable r;
RegisterModel r;
if (opt.isPresent()) {
r = opt.get();
r.setWeight(data.getWeight());
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 {
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);
}
if (c.getSystem() == CompetitionSystem.SAFCA) {
SReqRegister.sendIfNeed(serverCustom.clients,
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);
}))))
@@ -250,17 +263,17 @@ public class CompetitionService {
public Uni<Void> removeRegisterComb(SecurityCtx securityCtx, Long id, Long combId) {
return permService.hasEditPerm(securityCtx, id)
.chain(c -> Mutiny.fetch(c.getInsc())
.chain(Unchecked.function(insc -> {
if (insc.removeIf(m -> m.getMembre().getId().equals(combId))) {
.chain(c -> registerRepository.delete("competition = ?1 AND membre.id = ?2", c, combId)
.invoke(Unchecked.consumer(l -> {
if (l != 0){
if (c.getSystem() == CompetitionSystem.SAFCA) {
SReqRegister.sendRmIfNeed(serverCustom.clients, combId, id);
}
return Panache.withTransaction(() -> repository.persist(c)).map(__ -> null);
}else{
throw new DBadRequestException("Combattant non inscrit");
}
throw new DBadRequestException("Combattant non inscrit");
})));
}))
).replaceWithVoid();
}
public Uni<?> delete(SecurityCtx securityCtx, Long id) {