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 matériels côté client. *

* Ce service encapsule la communication avec l'API backend pour les opérations * liées aux matériels. 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 MaterielService { private static final Logger LOG = LoggerFactory.getLogger(MaterielService.class); @Inject @RestClient BtpXpressApiClient apiClient; /** * Récupère tous les matériels depuis l'API backend. * * @return Liste des matériels, ou liste vide en cas d'erreur. */ public List> getAllMateriels() { try { LOG.debug("Récupération de la liste des matériels depuis l'API backend."); Response response = apiClient.getMateriels(); if (response.getStatus() == Response.Status.OK.getStatusCode()) { @SuppressWarnings("unchecked") List> materiels = response.readEntity(List.class); LOG.debug("Matériels récupérés avec succès : {} élément(s)", materiels != null ? materiels.size() : 0); return materiels != null ? materiels : new ArrayList<>(); } else { LOG.warn("Erreur lors de la récupération des matériels. 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 matériels : {}", e.getMessage(), e); return new ArrayList<>(); } } }