feat(insc): add safca connector

This commit is contained in:
2025-02-13 20:32:53 +01:00
parent 743a6911f5
commit f3fe80fa46
5 changed files with 65 additions and 15 deletions

View File

@@ -6,6 +6,7 @@ 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;
import fr.titionfire.ffsaf.net2.request.SReqRegister;
import fr.titionfire.ffsaf.rest.data.CompetitionData;
import fr.titionfire.ffsaf.rest.data.RegisterRequestData;
import fr.titionfire.ffsaf.rest.data.SimpleCompetData;
@@ -71,10 +72,11 @@ public class CompetitionService {
if (id == 0) {
return Uni.createFrom()
.item(new CompetitionData(null, "", "", new Date(), CompetitionSystem.SAFCA,
null, "", ""));
null, "", "", null));
}
return permService.hasViewPerm(securityCtx, id)
.map(CompetitionData::fromModel)
.chain(competitionModel -> Mutiny.fetch(competitionModel.getInsc())
.map(insc -> CompetitionData.fromModel(competitionModel).addInsc(insc)))
.chain(data ->
vertx.getOrCreateContext().executeBlocking(() -> {
keycloakService.getUser(UUID.fromString(data.getOwner()))
@@ -206,6 +208,12 @@ public class CompetitionService {
r = new RegisterEmbeddable(combModel, data.getWeight(), data.getOverCategory());
insc.add(r);
}
if (c.getSystem() == CompetitionSystem.SAFCA) {
SReqRegister.sendIfNeed(serverCustom.clients,
new CompetitionData.SimpleRegister(r.getMembre().getId(),
r.getOverCategory(), r.getWeight()), c.getId());
}
return Panache.withTransaction(() -> repository.persist(c)).map(__ -> r);
}))))
.chain(r -> Mutiny.fetch(r.getMembre().getLicences())
@@ -235,8 +243,13 @@ public class CompetitionService {
return permService.hasEditPerm(securityCtx, id)
.chain(c -> Mutiny.fetch(c.getInsc())
.chain(Unchecked.function(insc -> {
if (insc.removeIf(m -> m.getMembre().getId().equals(combId)))
if (insc.removeIf(m -> m.getMembre().getId().equals(combId))) {
if (c.getSystem() == CompetitionSystem.SAFCA) {
SReqRegister.sendRmIfNeed(serverCustom.clients, combId, id);
}
return Panache.withTransaction(() -> repository.persist(c)).map(__ -> null);
}
throw new DBadRequestException("Combattant non inscrit");
})));
}