Refactoring - Bonne version améliorée
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
package com.lions.dev.resource;
|
||||
|
||||
import com.lions.dev.core.security.JwtAuthFilter;
|
||||
import com.lions.dev.core.security.RequiresAuth;
|
||||
import com.lions.dev.dto.request.establishment.EstablishmentRatingRequestDTO;
|
||||
import com.lions.dev.dto.response.establishment.EstablishmentRatingResponseDTO;
|
||||
import com.lions.dev.dto.response.establishment.EstablishmentRatingStatsResponseDTO;
|
||||
@@ -9,9 +11,13 @@ import jakarta.inject.Inject;
|
||||
import jakarta.transaction.Transactional;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.ws.rs.*;
|
||||
import jakarta.ws.rs.container.ContainerRequestContext;
|
||||
import jakarta.ws.rs.core.Context;
|
||||
import jakarta.ws.rs.core.MediaType;
|
||||
import jakarta.ws.rs.core.Response;
|
||||
import org.eclipse.microprofile.openapi.annotations.Operation;
|
||||
import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
|
||||
import org.eclipse.microprofile.openapi.annotations.security.SecurityRequirement;
|
||||
import org.eclipse.microprofile.openapi.annotations.tags.Tag;
|
||||
import org.jboss.logging.Logger;
|
||||
|
||||
@@ -33,30 +39,37 @@ public class EstablishmentRatingResource {
|
||||
|
||||
private static final Logger LOG = Logger.getLogger(EstablishmentRatingResource.class);
|
||||
|
||||
/**
|
||||
* Extrait l'ID de l'utilisateur authentifié du contexte de la requête.
|
||||
*/
|
||||
private UUID getAuthenticatedUserId(ContainerRequestContext requestContext) {
|
||||
return (UUID) requestContext.getProperty(JwtAuthFilter.AUTHENTICATED_USER_ID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Soumet une nouvelle note pour un établissement.
|
||||
* Requiert une authentification JWT.
|
||||
*/
|
||||
@POST
|
||||
@Transactional
|
||||
@RequiresAuth
|
||||
@Operation(summary = "Soumettre une note pour un établissement",
|
||||
description = "Soumet une nouvelle note (1 à 5 étoiles) pour un établissement")
|
||||
description = "Soumet une nouvelle note (1 à 5 étoiles) pour un établissement. Requiert une authentification JWT.")
|
||||
@SecurityRequirement(name = "bearerAuth")
|
||||
@APIResponse(responseCode = "201", description = "Note soumise avec succès")
|
||||
@APIResponse(responseCode = "401", description = "Non authentifié")
|
||||
@APIResponse(responseCode = "400", description = "Données invalides")
|
||||
public Response submitRating(
|
||||
@Context ContainerRequestContext requestContext,
|
||||
@PathParam("establishmentId") String establishmentId,
|
||||
@QueryParam("userId") String userIdStr,
|
||||
@Valid EstablishmentRatingRequestDTO requestDTO) {
|
||||
if (userIdStr == null || userIdStr.isBlank()) {
|
||||
LOG.warn("Soumission de note sans userId pour l'établissement " + establishmentId);
|
||||
return Response.status(Response.Status.BAD_REQUEST)
|
||||
.entity("Le paramètre userId est requis")
|
||||
.build();
|
||||
}
|
||||
LOG.info("Soumission d'une note pour l'établissement " + establishmentId + " par l'utilisateur " + userIdStr);
|
||||
UUID authenticatedUserId = getAuthenticatedUserId(requestContext);
|
||||
LOG.info("Soumission d'une note pour l'établissement " + establishmentId + " par l'utilisateur " + authenticatedUserId);
|
||||
|
||||
try {
|
||||
UUID id = UUID.fromString(establishmentId);
|
||||
UUID userId = UUID.fromString(userIdStr);
|
||||
|
||||
EstablishmentRating rating = ratingService.submitRating(id, userId, requestDTO);
|
||||
EstablishmentRating rating = ratingService.submitRating(id, authenticatedUserId, requestDTO);
|
||||
EstablishmentRatingResponseDTO responseDTO = new EstablishmentRatingResponseDTO(rating);
|
||||
return Response.status(Response.Status.CREATED).entity(responseDTO).build();
|
||||
} catch (IllegalArgumentException e) {
|
||||
@@ -79,28 +92,28 @@ public class EstablishmentRatingResource {
|
||||
|
||||
/**
|
||||
* Met à jour une note existante.
|
||||
* Requiert une authentification JWT.
|
||||
*/
|
||||
@PUT
|
||||
@Transactional
|
||||
@RequiresAuth
|
||||
@Operation(summary = "Modifier une note existante",
|
||||
description = "Met à jour une note existante pour un établissement")
|
||||
description = "Met à jour une note existante pour un établissement. Requiert une authentification JWT.")
|
||||
@SecurityRequirement(name = "bearerAuth")
|
||||
@APIResponse(responseCode = "200", description = "Note mise à jour")
|
||||
@APIResponse(responseCode = "401", description = "Non authentifié")
|
||||
@APIResponse(responseCode = "404", description = "Note non trouvée")
|
||||
public Response updateRating(
|
||||
@Context ContainerRequestContext requestContext,
|
||||
@PathParam("establishmentId") String establishmentId,
|
||||
@QueryParam("userId") String userIdStr,
|
||||
@Valid EstablishmentRatingRequestDTO requestDTO) {
|
||||
if (userIdStr == null || userIdStr.isBlank()) {
|
||||
LOG.warn("Mise à jour de note sans userId pour l'établissement " + establishmentId);
|
||||
return Response.status(Response.Status.BAD_REQUEST)
|
||||
.entity("Le paramètre userId est requis")
|
||||
.build();
|
||||
}
|
||||
LOG.info("Mise à jour de la note pour l'établissement " + establishmentId + " par l'utilisateur " + userIdStr);
|
||||
UUID authenticatedUserId = getAuthenticatedUserId(requestContext);
|
||||
LOG.info("Mise à jour de la note pour l'établissement " + establishmentId + " par l'utilisateur " + authenticatedUserId);
|
||||
|
||||
try {
|
||||
UUID id = UUID.fromString(establishmentId);
|
||||
UUID userId = UUID.fromString(userIdStr);
|
||||
|
||||
EstablishmentRating rating = ratingService.updateRating(id, userId, requestDTO);
|
||||
EstablishmentRating rating = ratingService.updateRating(id, authenticatedUserId, requestDTO);
|
||||
EstablishmentRatingResponseDTO responseDTO = new EstablishmentRatingResponseDTO(rating);
|
||||
return Response.ok(responseDTO).build();
|
||||
} catch (IllegalArgumentException e) {
|
||||
|
||||
Reference in New Issue
Block a user