refactoring

This commit is contained in:
dahoud
2026-01-03 16:04:47 +00:00
parent 9878d90d67
commit 3bc6661a89
155 changed files with 10277 additions and 2828 deletions

View File

@@ -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());
}
}