Merge pull request 'fix: club guest mixing in result' (#111) from dev into master

Reviewed-on: #111
This commit is contained in:
Thibaut Valentin 2026-03-10 17:47:33 +00:00
commit e67e01640a
2 changed files with 45 additions and 23 deletions

View File

@ -615,21 +615,32 @@ public class ResultService {
new ArrayList<>(), membreModel) new ArrayList<>(), membreModel)
))); )));
} else { } else {
return clubRepository.findById(id).chain(clubModel -> return cardRepository.list("competition.uuid = ?1", uuid)
registerRepository.list("competition.uuid = ?1 AND membre.club = ?2", uuid, clubModel) .chain(cards -> clubRepository.findById(id).chain(clubModel ->
.chain(registers -> matchRepository.list( registerRepository.list("competition.uuid = ?1 AND membre.club = ?2", uuid, clubModel)
"SELECT DISTINCT m FROM MatchModel m LEFT JOIN m.c1_guest.comb c1g LEFT JOIN m.c2_guest.comb c2g " + .chain(registers -> matchRepository.list(
"WHERE m.category.compet.uuid = ?1 AND (m.c1_id IN ?2 OR m.c2_id IN ?2 OR c1g IN ?2 OR c2g IN ?2)", "SELECT DISTINCT m FROM MatchModel m LEFT JOIN m.c1_guest.comb c1g LEFT JOIN m.c2_guest.comb c2g " +
uuid, registers.stream().map(RegisterModel::getMembre).toList()) "WHERE m.category.compet.uuid = ?1 AND (m.c1_id IN ?2 OR m.c2_id IN ?2 OR c1g IN ?2 OR c2g IN ?2)",
.chain(matchModels -> cardRepository.list("competition.uuid = ?1", uuid) uuid, registers.stream().map(RegisterModel::getMembre).toList())
.map(cards -> .map(matchModels -> matchModels.stream()
.map(m -> new MatchModelExtend(m, cards)))
.chain(s -> competitionGuestRepository.list(
"competition.uuid = ?1 AND club = ?2", uuid, clubModel.getName())
.chain(guests -> matchRepository.list(
"SELECT DISTINCT m FROM MatchModel m LEFT JOIN m.c1_guest.guest c1g LEFT JOIN m.c2_guest.guest c2g " +
"WHERE m.category.compet.uuid = ?1 AND (m.c1_guest IN ?2 OR m.c2_guest IN ?2 OR c1g IN ?2 OR c2g IN ?2)",
uuid, guests)
.map(mm -> new Pair<>(guests, Stream.concat(s, mm.stream()
.map(m -> new MatchModelExtend(m, cards)))
.distinct().toList()))
))
.map(p ->
getClubArray2(clubModel.getName(), getClubArray2(clubModel.getName(),
registers.stream().map(o -> (CombModel) o.getMembre()) Stream.concat(
.toList(), registers.stream().map(RegisterModel::getMembre),
matchModels.stream() p.getKey().stream()
.map(m -> new MatchModelExtend(m, cards)).toList(), ).toList(),
registers, membreModel) p.getValue(), registers, membreModel)
)))); ))));
} }
} }
@ -776,27 +787,38 @@ public class ResultService {
.collect().asList(); .collect().asList();
}) })
.map(categoryData -> { .map(categoryData -> {
HashMap<Long, ClubClassement> clubMap = new HashMap<>(); HashMap<String, ClubClassement> clubMap = new HashMap<>();
categoryData.forEach(c -> c.getClassement().stream().map(ResultCategoryData.ClassementData::comb)
.filter(Objects::nonNull)
.distinct()
.map(comb -> {
if (comb instanceof MembreModel membreModel2) {
return (membreModel2.getClub() != null) ? membreModel2.getClub().getName() : "";
} else if (comb instanceof CompetitionGuestModel guestModel) {
return guestModel.getClub();
}
return "";
})
.filter(s -> s != null && !s.isBlank() && !s.equals("Team"))
.distinct()
.forEach(clubName -> clubMap.putIfAbsent(clubName, new ClubClassement(clubName))));
categoryData.forEach(c -> c.getClassement().forEach(classementData -> { categoryData.forEach(c -> c.getClassement().forEach(classementData -> {
if (classementData.rank() > 3) if (classementData.rank() > 3)
return; return;
if (classementData.comb() != null) { if (classementData.comb() != null) {
long clubId = 0L;
String clubName = ""; String clubName = "";
if (classementData.comb() instanceof MembreModel membreModel2) { if (classementData.comb() instanceof MembreModel membreModel2) {
clubId = (membreModel2.getClub() != null) ? membreModel2.getClub().getId() : 0;
clubName = (membreModel2.getClub() != null) ? membreModel2.getClub().getName() : ""; clubName = (membreModel2.getClub() != null) ? membreModel2.getClub().getName() : "";
} else if (classementData.comb() instanceof CompetitionGuestModel guestModel) { } else if (classementData.comb() instanceof CompetitionGuestModel guestModel) {
if (guestModel.getClub() != null && !guestModel.getClub().isBlank())
clubId = getClubTempId(guestModel.getClub());
clubName = guestModel.getClub(); clubName = guestModel.getClub();
} }
if (clubId != 0) { if (clubName != null && !clubName.isBlank()
clubMap.putIfAbsent(clubId, new ClubClassement(clubName)); && !clubName.equals("Team") && clubMap.containsKey(clubName)) {
ClubClassement entity = clubMap.get(clubId); ClubClassement entity = clubMap.get(clubName);
entity.score[classementData.rank() - 1]++; entity.score[classementData.rank() - 1]++;
entity.tt_score += 4 - classementData.rank(); entity.tt_score += 4 - classementData.rank();
} }

View File

@ -15,7 +15,7 @@
"chargement": "Chargement", "chargement": "Chargement",
"classement": "Classement", "classement": "Classement",
"classementClub": "Classement club", "classementClub": "Classement club",
"classementDesClub": "Classement des club", "classementDesClub": "Classement des clubs",
"classementFinal": "Classement final", "classementFinal": "Classement final",
"club": "Club", "club": "Club",
"combattant": "Combattant", "combattant": "Combattant",