refactoring
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
package dev.lions.btpxpress.adapter.http;
|
||||
|
||||
import dev.lions.btpxpress.adapter.http.util.ResponseHelper;
|
||||
import dev.lions.btpxpress.application.service.ChantierService;
|
||||
import dev.lions.btpxpress.domain.core.entity.Chantier;
|
||||
import dev.lions.btpxpress.domain.core.entity.StatutChantier;
|
||||
import dev.lions.btpxpress.domain.shared.dto.ChantierCreateDTO;
|
||||
import io.quarkus.security.Authenticated;
|
||||
import dev.lions.btpxpress.domain.shared.dto.ChantierResponseDTO;
|
||||
import dev.lions.btpxpress.domain.shared.mapper.ChantierMapper;
|
||||
import jakarta.inject.Inject;
|
||||
import jakarta.validation.Valid;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
@@ -36,6 +38,8 @@ public class ChantierResource {
|
||||
|
||||
@Inject ChantierService chantierService;
|
||||
|
||||
@Inject ChantierMapper chantierMapper;
|
||||
|
||||
// === ENDPOINTS DE CONSULTATION - API CONTRACTS PRÉSERVÉS EXACTEMENT ===
|
||||
|
||||
@GET
|
||||
@@ -58,12 +62,13 @@ public class ChantierResource {
|
||||
chantiers = chantierService.findAll();
|
||||
}
|
||||
|
||||
return Response.ok(chantiers).build();
|
||||
List<ChantierResponseDTO> dtos = chantiers.stream()
|
||||
.map(chantierMapper::toResponseDTO)
|
||||
.toList();
|
||||
return ResponseHelper.ok(dtos);
|
||||
} catch (Exception e) {
|
||||
logger.error("Erreur lors de la récupération des chantiers", e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity("Erreur lors de la récupération des chantiers: " + e.getMessage())
|
||||
.build();
|
||||
return ResponseHelper.internalError("Erreur lors de la récupération des chantiers: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,7 +81,10 @@ public class ChantierResource {
|
||||
public Response getAllActiveChantiers() {
|
||||
try {
|
||||
List<Chantier> chantiers = chantierService.findAllActive();
|
||||
return Response.ok(chantiers).build();
|
||||
List<ChantierResponseDTO> dtos = chantiers.stream()
|
||||
.map(chantierMapper::toResponseDTO)
|
||||
.toList();
|
||||
return ResponseHelper.ok(dtos);
|
||||
} catch (Exception e) {
|
||||
logger.error("Erreur lors de la récupération des chantiers actifs", e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
@@ -96,20 +104,16 @@ public class ChantierResource {
|
||||
UUID chantierId = UUID.fromString(id);
|
||||
return chantierService
|
||||
.findById(chantierId)
|
||||
.map(chantier -> Response.ok(chantier).build())
|
||||
.orElse(
|
||||
Response.status(Response.Status.NOT_FOUND)
|
||||
.entity("Chantier non trouvé avec l'ID: " + id)
|
||||
.build());
|
||||
.map(chantier -> {
|
||||
ChantierResponseDTO dto = chantierMapper.toResponseDTO(chantier);
|
||||
return ResponseHelper.ok(dto);
|
||||
})
|
||||
.orElse(ResponseHelper.notFound("Chantier", id));
|
||||
} catch (IllegalArgumentException e) {
|
||||
return Response.status(Response.Status.BAD_REQUEST)
|
||||
.entity("ID de chantier invalide: " + id)
|
||||
.build();
|
||||
return ResponseHelper.badRequest("ID de chantier invalide: " + id);
|
||||
} catch (Exception e) {
|
||||
logger.error("Erreur lors de la récupération du chantier {}", id, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity("Erreur lors de la récupération du chantier: " + e.getMessage())
|
||||
.build();
|
||||
return ResponseHelper.internalError("Erreur lors de la récupération du chantier: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,7 +124,7 @@ public class ChantierResource {
|
||||
public Response countChantiers() {
|
||||
try {
|
||||
long count = chantierService.count();
|
||||
return Response.ok(new CountResponse(count)).build();
|
||||
return ResponseHelper.ok(new CountResponse(count));
|
||||
} catch (Exception e) {
|
||||
logger.error("Erreur lors du comptage des chantiers", e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
@@ -151,7 +155,10 @@ public class ChantierResource {
|
||||
try {
|
||||
StatutChantier statutEnum = StatutChantier.valueOf(statut.toUpperCase());
|
||||
List<Chantier> chantiers = chantierService.findByStatut(statutEnum);
|
||||
return Response.ok(chantiers).build();
|
||||
List<ChantierResponseDTO> dtos = chantiers.stream()
|
||||
.map(chantierMapper::toResponseDTO)
|
||||
.toList();
|
||||
return ResponseHelper.ok(dtos);
|
||||
} catch (IllegalArgumentException e) {
|
||||
return Response.status(Response.Status.BAD_REQUEST)
|
||||
.entity(
|
||||
@@ -172,7 +179,10 @@ public class ChantierResource {
|
||||
public Response getChantiersEnCours() {
|
||||
try {
|
||||
List<Chantier> chantiers = chantierService.findEnCours();
|
||||
return Response.ok(chantiers).build();
|
||||
List<ChantierResponseDTO> dtos = chantiers.stream()
|
||||
.map(chantierMapper::toResponseDTO)
|
||||
.toList();
|
||||
return ResponseHelper.ok(dtos);
|
||||
} catch (Exception e) {
|
||||
logger.error("Erreur lors de la récupération des chantiers en cours", e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
@@ -186,7 +196,10 @@ public class ChantierResource {
|
||||
public Response getChantiersPlanifies() {
|
||||
try {
|
||||
List<Chantier> chantiers = chantierService.findPlanifies();
|
||||
return Response.ok(chantiers).build();
|
||||
List<ChantierResponseDTO> dtos = chantiers.stream()
|
||||
.map(chantierMapper::toResponseDTO)
|
||||
.toList();
|
||||
return ResponseHelper.ok(dtos);
|
||||
} catch (Exception e) {
|
||||
logger.error("Erreur lors de la récupération des chantiers planifiés", e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
@@ -200,7 +213,10 @@ public class ChantierResource {
|
||||
public Response getChantiersTermines() {
|
||||
try {
|
||||
List<Chantier> chantiers = chantierService.findTermines();
|
||||
return Response.ok(chantiers).build();
|
||||
List<ChantierResponseDTO> dtos = chantiers.stream()
|
||||
.map(chantierMapper::toResponseDTO)
|
||||
.toList();
|
||||
return ResponseHelper.ok(dtos);
|
||||
} catch (Exception e) {
|
||||
logger.error("Erreur lors de la récupération des chantiers terminés", e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
@@ -220,16 +236,13 @@ public class ChantierResource {
|
||||
ChantierCreateDTO chantierDTO) {
|
||||
try {
|
||||
Chantier chantier = chantierService.create(chantierDTO);
|
||||
return Response.status(Response.Status.CREATED).entity(chantier).build();
|
||||
ChantierResponseDTO dto = chantierMapper.toResponseDTO(chantier);
|
||||
return ResponseHelper.created(dto, "Chantier créé avec succès");
|
||||
} catch (IllegalArgumentException e) {
|
||||
return Response.status(Response.Status.BAD_REQUEST)
|
||||
.entity("Données invalides: " + e.getMessage())
|
||||
.build();
|
||||
return ResponseHelper.badRequest("Données invalides: " + e.getMessage());
|
||||
} catch (Exception e) {
|
||||
logger.error("Erreur lors de la création du chantier", e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity("Erreur lors de la création du chantier: " + e.getMessage())
|
||||
.build();
|
||||
return ResponseHelper.internalError("Erreur lors de la création du chantier: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -246,16 +259,13 @@ public class ChantierResource {
|
||||
try {
|
||||
UUID chantierId = UUID.fromString(id);
|
||||
Chantier chantier = chantierService.update(chantierId, chantierDTO);
|
||||
return Response.ok(chantier).build();
|
||||
ChantierResponseDTO dto = chantierMapper.toResponseDTO(chantier);
|
||||
return ResponseHelper.ok(dto, "Chantier mis à jour avec succès");
|
||||
} catch (IllegalArgumentException e) {
|
||||
return Response.status(Response.Status.BAD_REQUEST)
|
||||
.entity("Données invalides: " + e.getMessage())
|
||||
.build();
|
||||
return ResponseHelper.badRequest("Données invalides: " + e.getMessage());
|
||||
} catch (Exception e) {
|
||||
logger.error("Erreur lors de la mise à jour du chantier {}", id, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity("Erreur lors de la mise à jour du chantier: " + e.getMessage())
|
||||
.build();
|
||||
return ResponseHelper.internalError("Erreur lors de la mise à jour du chantier: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -266,20 +276,15 @@ public class ChantierResource {
|
||||
UUID chantierId = UUID.fromString(id);
|
||||
StatutChantier nouveauStatut = StatutChantier.valueOf(request.statut.toUpperCase());
|
||||
Chantier chantier = chantierService.updateStatut(chantierId, nouveauStatut);
|
||||
return Response.ok(chantier).build();
|
||||
ChantierResponseDTO dto = chantierMapper.toResponseDTO(chantier);
|
||||
return ResponseHelper.ok(dto, "Statut mis à jour avec succès");
|
||||
} catch (IllegalArgumentException e) {
|
||||
return Response.status(Response.Status.BAD_REQUEST)
|
||||
.entity("Données invalides: " + e.getMessage())
|
||||
.build();
|
||||
return ResponseHelper.badRequest("Données invalides: " + e.getMessage());
|
||||
} catch (IllegalStateException e) {
|
||||
return Response.status(Response.Status.CONFLICT)
|
||||
.entity("Transition de statut non autorisée: " + e.getMessage())
|
||||
.build();
|
||||
return ResponseHelper.conflict("Transition de statut non autorisée: " + e.getMessage());
|
||||
} catch (Exception e) {
|
||||
logger.error("Erreur lors de la mise à jour du statut du chantier {}", id, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity("Erreur lors de la mise à jour du statut: " + e.getMessage())
|
||||
.build();
|
||||
return ResponseHelper.internalError("Erreur lors de la mise à jour du statut: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -305,20 +310,14 @@ public class ChantierResource {
|
||||
chantierService.delete(chantierId);
|
||||
}
|
||||
|
||||
return Response.noContent().build();
|
||||
return ResponseHelper.noContent("Chantier supprimé avec succès");
|
||||
} catch (IllegalArgumentException e) {
|
||||
return Response.status(Response.Status.BAD_REQUEST)
|
||||
.entity("ID invalide: " + e.getMessage())
|
||||
.build();
|
||||
return ResponseHelper.badRequest("ID invalide: " + e.getMessage());
|
||||
} catch (IllegalStateException e) {
|
||||
return Response.status(Response.Status.CONFLICT)
|
||||
.entity("Impossible de supprimer: " + e.getMessage())
|
||||
.build();
|
||||
return ResponseHelper.conflict("Impossible de supprimer: " + e.getMessage());
|
||||
} catch (Exception e) {
|
||||
logger.error("Erreur lors de la suppression du chantier {}", id, e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity("Erreur lors de la suppression du chantier: " + e.getMessage())
|
||||
.build();
|
||||
return ResponseHelper.internalError("Erreur lors de la suppression du chantier: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -332,9 +331,7 @@ public class ChantierResource {
|
||||
@QueryParam("dateDebut") String dateDebut, @QueryParam("dateFin") String dateFin) {
|
||||
try {
|
||||
if (dateDebut == null || dateFin == null) {
|
||||
return Response.status(Response.Status.BAD_REQUEST)
|
||||
.entity("Les paramètres dateDebut et dateFin sont obligatoires")
|
||||
.build();
|
||||
return ResponseHelper.badRequest("Les paramètres dateDebut et dateFin sont obligatoires");
|
||||
}
|
||||
|
||||
LocalDate debut = LocalDate.parse(dateDebut);
|
||||
@@ -347,12 +344,13 @@ public class ChantierResource {
|
||||
}
|
||||
|
||||
List<Chantier> chantiers = chantierService.findByDateRange(debut, fin);
|
||||
return Response.ok(chantiers).build();
|
||||
List<ChantierResponseDTO> dtos = chantiers.stream()
|
||||
.map(chantierMapper::toResponseDTO)
|
||||
.toList();
|
||||
return ResponseHelper.ok(dtos);
|
||||
} catch (Exception e) {
|
||||
logger.error("Erreur lors de la recherche par plage de dates", e);
|
||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||
.entity("Erreur lors de la recherche: " + e.getMessage())
|
||||
.build();
|
||||
return ResponseHelper.internalError("Erreur lors de la recherche: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user