From cd64edc8e42f0782d71bdc991e90e7517a7e5f72 Mon Sep 17 00:00:00 2001
From: hugcubi <hugo.cubino@estudiantes.uva.es>
Date: Tue, 24 Dec 2024 08:53:52 +0100
Subject: [PATCH] Fixed api response

---
 .../java/com/uva/monolith/api/ManagerAPI.java  |  7 ++++---
 .../hotels/controllers/HotelController.java    | 18 ++++++++++++------
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/java/services/hotels/src/main/java/com/uva/monolith/api/ManagerAPI.java b/java/services/hotels/src/main/java/com/uva/monolith/api/ManagerAPI.java
index 3dc3325..fda9694 100644
--- a/java/services/hotels/src/main/java/com/uva/monolith/api/ManagerAPI.java
+++ b/java/services/hotels/src/main/java/com/uva/monolith/api/ManagerAPI.java
@@ -1,7 +1,5 @@
 package com.uva.monolith.api;
 
-import java.util.Map;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.HttpStatus;
@@ -9,6 +7,8 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.client.HttpClientErrorException;
 import org.springframework.web.client.RestTemplate;
 
+import com.fasterxml.jackson.databind.JsonNode;
+
 @Component
 public class ManagerAPI {
 
@@ -21,8 +21,9 @@ public class ManagerAPI {
   public Boolean existsManagerById(int id) {
     try {
       String url = MANAGERS_API_URL + "/{id}";
-      return restTemplate.getForObject(url, Map.class, id).containsKey("id");
+      return restTemplate.getForEntity(url, JsonNode.class, id).getStatusCode() == HttpStatus.OK;
     } catch (HttpClientErrorException e) {
+      e.printStackTrace(System.err);
       if (e.getStatusCode() != HttpStatus.NOT_FOUND)
         throw e;
       return false;
diff --git a/java/services/hotels/src/main/java/com/uva/monolith/services/hotels/controllers/HotelController.java b/java/services/hotels/src/main/java/com/uva/monolith/services/hotels/controllers/HotelController.java
index 75c9aed..de29352 100644
--- a/java/services/hotels/src/main/java/com/uva/monolith/services/hotels/controllers/HotelController.java
+++ b/java/services/hotels/src/main/java/com/uva/monolith/services/hotels/controllers/HotelController.java
@@ -62,13 +62,19 @@ public class HotelController {
     // AƱadir un hotel con sus habitaciones
     @PostMapping
     public ResponseEntity<?> addHotel(@RequestBody Hotel hotel) {
-        boolean exist = managerAPI.existsManagerById(hotel.getManagerId());
-        if (!exist) {
-            return new ResponseEntity<>(
-                    "No existe el manager con id " + String.valueOf(hotel.getManagerId()), HttpStatus.BAD_REQUEST);
+        try {
+
+            boolean exist = managerAPI.existsManagerById(hotel.getManagerId());
+            String message = "No existe el manager con id " + String.valueOf(hotel.getManagerId());
+            if (!exist) {
+                return new ResponseEntity<>(message, HttpStatus.BAD_REQUEST);
+            }
+            Hotel savedHotel = hotelRepository.save(hotel);
+            return new ResponseEntity<>(savedHotel, HttpStatus.CREATED);
+        } catch (Exception e) {
+            e.printStackTrace(System.err);
+            throw e;
         }
-        Hotel savedHotel = hotelRepository.save(hotel);
-        return new ResponseEntity<>(savedHotel, HttpStatus.CREATED);
     }
 
     // Obtener un hotel por su ID
-- 
GitLab