package dev.lions.btpxpress.service; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.ws.rs.core.Response; import org.eclipse.microprofile.rest.client.inject.RestClient; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Service de gestion des devis côté client. *

* Ce service encapsule la communication avec l'API backend pour les opérations * liées aux devis. Il utilise le REST Client pour effectuer les appels HTTP * vers le backend. *

* * @author BTP Xpress Development Team * @version 1.0.0 * @since 1.0.0 */ @ApplicationScoped public class DevisService { private static final Logger LOG = LoggerFactory.getLogger(DevisService.class); @Inject @RestClient BtpXpressApiClient apiClient; /** * Récupère tous les devis depuis l'API backend. * * @return Liste des devis, ou liste vide en cas d'erreur. */ public List> getAllDevis() { try { LOG.debug("Récupération de la liste des devis depuis l'API backend."); Response response = apiClient.getDevis(); if (response.getStatus() == Response.Status.OK.getStatusCode()) { @SuppressWarnings("unchecked") List> devis = response.readEntity(List.class); LOG.debug("Devis récupérés avec succès : {} élément(s)", devis != null ? devis.size() : 0); return devis != null ? devis : new ArrayList<>(); } else { LOG.warn("Erreur lors de la récupération des devis. Code HTTP : {}", response.getStatus()); return new ArrayList<>(); } } catch (Exception e) { LOG.error("Erreur lors de la communication avec l'API backend pour récupérer les devis : {}", e.getMessage(), e); return new ArrayList<>(); } } }