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.inject.Inject;
|
||||
import jakarta.ws.rs.Consumes;
|
||||
import jakarta.ws.rs.DELETE;
|
||||
import jakarta.ws.rs.GET;
|
||||
import jakarta.ws.rs.POST;
|
||||
import jakarta.ws.rs.Path;
|
||||
import jakarta.ws.rs.Produces;
|
||||
import jakarta.ws.rs.QueryParam;
|
||||
import jakarta.ws.rs.core.MediaType;
|
||||
import jakarta.ws.rs.core.Response;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* TpEndpoints
|
||||
@ -25,6 +28,7 @@ public class SujetEndpoints {
|
||||
@Inject SujetService sujetService;
|
||||
|
||||
@GET
|
||||
@Path("/all")
|
||||
@Produces(MediaType.APPLICATION_JSON)
|
||||
@Authenticated
|
||||
public Response getAllSujetsRespo() {
|
||||
@ -44,4 +48,44 @@ public class SujetEndpoints {
|
||||
public Response createSujet(SujetRequest sujet) {
|
||||
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;
|
||||
|
||||
import fr.la_banquise.backend.data.model.Instance;
|
||||
import fr.la_banquise.backend.data.model.Sujet;
|
||||
import fr.la_banquise.backend.data.model.User;
|
||||
import fr.la_banquise.backend.data.repository.InstanceRepository;
|
||||
import fr.la_banquise.backend.data.repository.SujetRepository;
|
||||
import fr.la_banquise.backend.data.repository.UserRepository;
|
||||
import fr.la_banquise.backend.rest.request.SujetRequest;
|
||||
import fr.la_banquise.backend.rest.response.PracticalResponse;
|
||||
import jakarta.enterprise.context.ApplicationScoped;
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.transaction.Transactional;
|
||||
import jakarta.ws.rs.core.SecurityContext;
|
||||
import java.text.Collator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* TpService
|
||||
@ -71,6 +67,27 @@ public class SujetService {
|
||||
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
|
||||
* @Transactional
|
||||
|
Loading…
x
Reference in New Issue
Block a user