diff --git a/src/main/java/fr/titionfire/ffsaf/data/model/MatchModel.java b/src/main/java/fr/titionfire/ffsaf/data/model/MatchModel.java index e018e2a..a6b9d73 100644 --- a/src/main/java/fr/titionfire/ffsaf/data/model/MatchModel.java +++ b/src/main/java/fr/titionfire/ffsaf/data/model/MatchModel.java @@ -66,15 +66,19 @@ public class MatchModel { List cardboard = new ArrayList<>(); public String getC1Name() { - if (c1_id == null) + if (c1_id != null) + return c1_id.fname + " " + c1_id.lname; + if (c1_guest != null) return c1_guest.fname + " " + c1_guest.lname; - return c1_id.fname + " " + c1_id.lname; + return ""; } public String getC2Name() { - if (c2_id == null) + if (c2_id != null) + return c2_id.fname + " " + c2_id.lname; + if (c2_guest != null) return c2_guest.fname + " " + c2_guest.lname; - return c2_id.fname + " " + c2_id.lname; + return ""; } public int win() { diff --git a/src/main/java/fr/titionfire/ffsaf/domain/service/CompetPermService.java b/src/main/java/fr/titionfire/ffsaf/domain/service/CompetPermService.java index 1996bb2..448b915 100644 --- a/src/main/java/fr/titionfire/ffsaf/domain/service/CompetPermService.java +++ b/src/main/java/fr/titionfire/ffsaf/domain/service/CompetPermService.java @@ -56,7 +56,7 @@ public class CompetPermService { CompletableFuture f = new CompletableFuture<>(); SReqCompet.getConfig(serverCustom.clients, id, f); try { - return f.get(1500, TimeUnit.MILLISECONDS); + return f.get(500, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { throw new RuntimeException(e); } @@ -71,7 +71,8 @@ public class CompetPermService { .chain(competitionModels -> { CompletableFuture> f = new CompletableFuture<>(); SReqCompet.getAllHaveAccess(serverCustom.clients, securityCtx.getSubject(), f); - return Uni.createFrom().future(f, Duration.ofMillis(1500)) + return Uni.createFrom().future(f, Duration.ofMillis(500)) + .onFailure().recoverWithItem(new HashMap<>()) .map(map_ -> { HashMap map = new HashMap<>(); map_.forEach((key, value) -> map.put(Long.parseLong(key), value)); diff --git a/src/main/java/fr/titionfire/ffsaf/domain/service/CompetitionService.java b/src/main/java/fr/titionfire/ffsaf/domain/service/CompetitionService.java index 87e7d2a..7e4caa8 100644 --- a/src/main/java/fr/titionfire/ffsaf/domain/service/CompetitionService.java +++ b/src/main/java/fr/titionfire/ffsaf/domain/service/CompetitionService.java @@ -162,6 +162,14 @@ public class CompetitionService { .map(pouleModels -> pouleModels.stream().map(CompetitionData::fromModel).toList()); } + public Uni> getAllSystemTable(SecurityCtx securityCtx, + CompetitionSystem system) { + return repository.list("system = ?1", system) + .chain(l -> Uni.join().all(l.stream().map(cm -> permService.hasTablePerm(securityCtx, cm)).toList()) + .andCollectFailures()) + .map(l -> l.stream().filter(Objects::nonNull).map(CompetitionData::fromModel).toList()); + } + public Uni addOrUpdate(SecurityCtx securityCtx, CompetitionData data) { if (data.getId() == null) { return combRepository.find("userId = ?1", securityCtx.getSubject()).firstResult() @@ -496,6 +504,10 @@ public class CompetitionService { .andCollectFailures())) .call(competitionModel -> Panache.withTransaction( () -> categoryRepository.delete("compet = ?1", competitionModel))) + .call(competitionModel -> Panache.withTransaction( + () -> registerRepository.delete("competition = ?1", competitionModel))) + .call(competitionModel -> Panache.withTransaction( + () -> competitionGuestRepository.delete("competition = ?1", competitionModel))) .chain(model -> Panache.withTransaction(() -> repository.delete("id", model.getId()))) .invoke(o -> SReqCompet.rmCompet(serverCustom.clients, id)) .call(__ -> cache.invalidate(id)); diff --git a/src/main/java/fr/titionfire/ffsaf/rest/CompetitionAdminEndpoints.java b/src/main/java/fr/titionfire/ffsaf/rest/CompetitionAdminEndpoints.java index 51c0d9f..9b9fabf 100644 --- a/src/main/java/fr/titionfire/ffsaf/rest/CompetitionAdminEndpoints.java +++ b/src/main/java/fr/titionfire/ffsaf/rest/CompetitionAdminEndpoints.java @@ -47,4 +47,12 @@ public class CompetitionAdminEndpoints { public Uni> getAllSystemAdmin(@PathParam("system") CompetitionSystem system) { return service.getAllSystemAdmin(securityCtx, system); } + + @GET + @Path("all/{system}/table") + @Authenticated + @Produces(MediaType.APPLICATION_JSON) + public Uni> getAllSystemTable(@PathParam("system") CompetitionSystem system) { + return service.getAllSystemTable(securityCtx, system); + } } diff --git a/src/main/webapp/src/components/Nav.jsx b/src/main/webapp/src/components/Nav.jsx index 0410cb4..e6fd02b 100644 --- a/src/main/webapp/src/components/Nav.jsx +++ b/src/main/webapp/src/components/Nav.jsx @@ -43,9 +43,9 @@ function AffiliationMenu() { } function CompMenu() { - const {is_authenticated} = useAuth() + const {is_authenticated, userinfo} = useAuth() - if (!is_authenticated) + if (!is_authenticated || !userinfo?.roles?.includes("federation_admin")) return <> return
  • diff --git a/src/main/webapp/src/pages/competition/CompetitionEdit.jsx b/src/main/webapp/src/pages/competition/CompetitionEdit.jsx index 88289e9..f08a153 100644 --- a/src/main/webapp/src/pages/competition/CompetitionEdit.jsx +++ b/src/main/webapp/src/pages/competition/CompetitionEdit.jsx @@ -36,6 +36,10 @@ export function CompetitionEdit() { }) } + useEffect(() => { + refresh(`/competition/${id}?light=false`) + }, [id]); + return <> + const navigate = useNavigate(); + const setLoading = useLoadingSwitcher() + const {data, error} = useFetch(`/competition/admin/all/INTERNAL/table`, setLoading, 1) + + return
    + {data + ? + : error + ? + : + }
    } +function MakeCentralPanel({data, navigate}) { + return <> +
    +

    Compétition:

    +
    + {data.sort((a, b) => new Date(b.date.split('T')[0]) - new Date(a.date.split('T')[0])).map((o) => ( +
  • navigate(o.uuid)}>{o.name}
  • ))} + + + +} + function HomeComp() { let {compUuid} = useParams(); const [perm, setPerm] = useState("") @@ -98,11 +121,12 @@ function Home2({perm}) { } -function Test2() { - let {compUuid} = useParams(); - const nav = useNavigate(); - return
    -

    Product ID: {compUuid}

    - +function Def() { + return
    +
  • +
  • +
  • +
  • +
  • }