feat: add and removal of respo on subjects
This commit is contained in:
parent
f135ef17ab
commit
fb80b381f6
@ -7,12 +7,15 @@ import io.quarkus.security.identity.SecurityIdentity;
|
|||||||
import jakarta.annotation.security.RolesAllowed;
|
import jakarta.annotation.security.RolesAllowed;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.ws.rs.Consumes;
|
import jakarta.ws.rs.Consumes;
|
||||||
|
import jakarta.ws.rs.DELETE;
|
||||||
import jakarta.ws.rs.GET;
|
import jakarta.ws.rs.GET;
|
||||||
import jakarta.ws.rs.POST;
|
import jakarta.ws.rs.POST;
|
||||||
import jakarta.ws.rs.Path;
|
import jakarta.ws.rs.Path;
|
||||||
import jakarta.ws.rs.Produces;
|
import jakarta.ws.rs.Produces;
|
||||||
|
import jakarta.ws.rs.QueryParam;
|
||||||
import jakarta.ws.rs.core.MediaType;
|
import jakarta.ws.rs.core.MediaType;
|
||||||
import jakarta.ws.rs.core.Response;
|
import jakarta.ws.rs.core.Response;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TpEndpoints
|
* TpEndpoints
|
||||||
@ -25,6 +28,7 @@ public class SujetEndpoints {
|
|||||||
@Inject SujetService sujetService;
|
@Inject SujetService sujetService;
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
|
@Path("/all")
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
@Authenticated
|
@Authenticated
|
||||||
public Response getAllSujetsRespo() {
|
public Response getAllSujetsRespo() {
|
||||||
@ -44,4 +48,44 @@ public class SujetEndpoints {
|
|||||||
public Response createSujet(SujetRequest sujet) {
|
public Response createSujet(SujetRequest sujet) {
|
||||||
return Response.ok(sujetService.createSujet(sujet)).build();
|
return Response.ok(sujetService.createSujet(sujet)).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@POST
|
||||||
|
@Path("/respo")
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
@RolesAllowed("root")
|
||||||
|
public Response addRespoSujet(@QueryParam("name_sujet") String name_sujet,
|
||||||
|
@QueryParam("name_user") String name_user) {
|
||||||
|
try {
|
||||||
|
if (sujetService.addRespo(name_sujet, name_user)) {
|
||||||
|
return Response.ok("Respo added sucessfully.").build();
|
||||||
|
}
|
||||||
|
return Response.status(404)
|
||||||
|
.entity("Already respo of this subject")
|
||||||
|
.build();
|
||||||
|
} catch (Exception e) {
|
||||||
|
return Response.status(500)
|
||||||
|
.entity(Map.of("error", e.getMessage()))
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@DELETE
|
||||||
|
@Path("/respo")
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
@RolesAllowed("root")
|
||||||
|
public Response rmRespoSujet(@QueryParam("name_sujet") String name_sujet,
|
||||||
|
@QueryParam("name_user") String name_user) {
|
||||||
|
try {
|
||||||
|
if (sujetService.rmRespo(name_sujet, name_user)) {
|
||||||
|
return Response.ok("Respo removed sucessfully.").build();
|
||||||
|
}
|
||||||
|
return Response.status(404)
|
||||||
|
.entity("No corresponding respo not found (already removed ?)")
|
||||||
|
.build();
|
||||||
|
} catch (Exception e) {
|
||||||
|
return Response.status(500)
|
||||||
|
.entity(Map.of("error", e.getMessage()))
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,20 +1,16 @@
|
|||||||
package fr.la_banquise.backend.services;
|
package fr.la_banquise.backend.services;
|
||||||
|
|
||||||
import fr.la_banquise.backend.data.model.Instance;
|
|
||||||
import fr.la_banquise.backend.data.model.Sujet;
|
import fr.la_banquise.backend.data.model.Sujet;
|
||||||
import fr.la_banquise.backend.data.model.User;
|
import fr.la_banquise.backend.data.model.User;
|
||||||
import fr.la_banquise.backend.data.repository.InstanceRepository;
|
import fr.la_banquise.backend.data.repository.InstanceRepository;
|
||||||
import fr.la_banquise.backend.data.repository.SujetRepository;
|
import fr.la_banquise.backend.data.repository.SujetRepository;
|
||||||
import fr.la_banquise.backend.data.repository.UserRepository;
|
import fr.la_banquise.backend.data.repository.UserRepository;
|
||||||
import fr.la_banquise.backend.rest.request.SujetRequest;
|
import fr.la_banquise.backend.rest.request.SujetRequest;
|
||||||
import fr.la_banquise.backend.rest.response.PracticalResponse;
|
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.transaction.Transactional;
|
import jakarta.transaction.Transactional;
|
||||||
import jakarta.ws.rs.core.SecurityContext;
|
import jakarta.ws.rs.core.SecurityContext;
|
||||||
import java.text.Collator;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TpService
|
* TpService
|
||||||
@ -71,6 +67,27 @@ public class SujetService {
|
|||||||
sujetRepository.deleteById(id);
|
sujetRepository.deleteById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public boolean addRespo(String name_sujet, String name_user) {
|
||||||
|
User user = userRepository.find("name", name_user).firstResult();
|
||||||
|
Sujet sujet = sujetRepository.find("name", name_sujet).firstResult();
|
||||||
|
if (!sujet.respos.contains(user)) {
|
||||||
|
sujet.respos.add(user);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public boolean rmRespo(String name_sujet, String name_user) {
|
||||||
|
User user = userRepository.find("name", name_user).firstResult();
|
||||||
|
Sujet sujet = sujetRepository.find("name", name_sujet).firstResult();
|
||||||
|
if (sujet.respos.contains(user)) {
|
||||||
|
sujet.respos.remove(user);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* TODO: Seuls les respos du sujet et root doivent pouvoir avoir acces
|
* TODO: Seuls les respos du sujet et root doivent pouvoir avoir acces
|
||||||
* @Transactional
|
* @Transactional
|
||||||
|
Loading…
x
Reference in New Issue
Block a user