diff --git a/eatsnowsoap/src/main/java/com/eatsnowsoap/services/EatsnowService.java b/eatsnowsoap/src/main/java/com/eatsnowsoap/services/EatsnowService.java
index 609db06b21420cc34f3b94410f9dc0946641fb27..88a85d8fba910c43face1bd16c8304239d3418eb 100644
--- a/eatsnowsoap/src/main/java/com/eatsnowsoap/services/EatsnowService.java
+++ b/eatsnowsoap/src/main/java/com/eatsnowsoap/services/EatsnowService.java
@@ -47,7 +47,7 @@ public class EatsnowService {
     }
 
     @WebMethod
-    public String addReview(String content, Float rating, Integer id_user, String name_user, String profile_img, Integer restaurant_id) {
+    public String addReview(String content, Float rating, String email, String name_user, String profile_img, Integer restaurant_id) {
         if (!isKeyValid()) {
             String message = "API Key tidak valid";
             return message;
@@ -56,12 +56,12 @@ public class EatsnowService {
         Connection connection = db.getConnection();
         try {
             if (connection != null) {
-                String query = "INSERT INTO review (content, rating, id_user, name_user, profile_img, id_restaurant) VALUES (?, ?, ?, ?, ?, ?)";
+                String query = "INSERT INTO review (content, rating, email, name_user, profile_img, id_restaurant) VALUES (?, ?, ?, ?, ?, ?)";
 
                 try (PreparedStatement preparedQueryStatement = connection.prepareStatement(query)) {
                     preparedQueryStatement.setString(1, content);
                     preparedQueryStatement.setFloat(2, rating);
-                    preparedQueryStatement.setInt(3, id_user);
+                    preparedQueryStatement.setString(3, email);
                     preparedQueryStatement.setString(4, name_user);
                     preparedQueryStatement.setString(5, profile_img);
                     preparedQueryStatement.setInt(6, restaurant_id);
@@ -81,4 +81,130 @@ public class EatsnowService {
         log(message);
         return message;
     }
+
+    @WebMethod
+    public String getReview(Integer id_restaurant) {
+        if (!isKeyValid()) {
+            String message = "API Key tidak valid";
+            return message;
+        }
+        String message;
+        Database db = new Database();
+        Connection connection = db.getConnection();
+        try {
+            if (connection != null) {
+                String query = "SELECT * FROM review WHERE id_restaurant = ?";
+
+                try (PreparedStatement preparedStatement = connection.prepareStatement(query)) {
+                    preparedStatement.setInt(1, id_restaurant);
+                    ResultSet resultSet = preparedStatement.executeQuery();
+                    Boolean hasil = false;
+                    message = "{\"hasil\": [";
+
+                    while (resultSet.next()) {
+                        message += "{\"content\": \"" + resultSet.getString("content") + "\", \"rating\": " + resultSet.getString("rating") + ", \"email\": \"" + resultSet.getString("email") + "\", \"name_user\": \"" + resultSet.getString("name_user") + "\", \"profile_img\": \"" + resultSet.getString("profile_img") + "\", \"id_restaurant\": " + resultSet.getString("id_restaurant") + "},";
+                        hasil = true;
+                    }
+                    message = message.substring(0, message.length() - 1);
+                    message += "]}";
+
+                    if (!hasil) {
+                        log("Berhasil mengambil review, data hasil kosong");
+                        message = "{\"hasil\": []}";
+                    } else {
+                        log("Berhasil mengambil review");
+                    }
+                    return message;
+                }
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+            message = "Kesalahan saat mengambil review : " + e.getMessage();
+            log(message);
+            return message;
+        }
+        db.closeConnection(connection);
+        return "Database tidak dapat diakses";
+    }
+
+    @WebMethod
+    public String getUserReview(String email){
+        if (!isKeyValid()) {
+            String message = "API Key tidak valid";
+            return message;
+        }
+        String message;
+        Database db = new Database();
+        Connection connection = db.getConnection();
+        try {
+            if (connection != null) {
+                String query = "SELECT * FROM review WHERE email = ?";
+
+                try (PreparedStatement preparedStatement = connection.prepareStatement(query)) {
+                    preparedStatement.setString(1, email);
+                    ResultSet resultSet = preparedStatement.executeQuery();
+                    Boolean hasil = false;
+                    message = "{\"hasil\": [";
+
+                    while (resultSet.next()) {
+                        message += "{\"content\": \"" + resultSet.getString("content") + "\", \"rating\": " + resultSet.getString("rating") + ", \"email\": \"" + resultSet.getString("email") + "\", \"name_user\": \"" + resultSet.getString("name_user") + "\", \"profile_img\": \"" + resultSet.getString("profile_img") + "\", \"id_restaurant\": " + resultSet.getString("id_restaurant") + "},";
+                        hasil = true;
+                    }
+                    message = message.substring(0, message.length() - 1);
+                    message += "]}";
+
+                    if (!hasil) {
+                        log("Berhasil mengambil review, data hasil kosong");
+                        message = "{\"hasil\": []}";
+                    } else {
+                        log("Berhasil mengambil review");
+                    }
+                    return message;
+                }
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+            message = "Kesalahan saat mengambil review : " + e.getMessage();
+            log(message);
+            return message;
+        }
+        db.closeConnection(connection);
+        return "Database tidak dapat diakses";
+
+    }
+
+    @WebMethod
+    public String updateReview(Integer review_id, String content, Float rating){
+        if(!isKeyValid()){
+            String message = "API Key tidak valid";
+            return message;
+        }
+        Database db = new Database();
+        Connection connection = db.getConnection();
+        try {
+            if (connection != null) {
+                String query = "UPDATE review SET content = ?, rating = ? WHERE review_id = ?";
+                // String query = "INSERT INTO review (content, rating, email, name_user, profile_img, id_restaurant) VALUES (?, ?, ?, ?, ?, ?)";
+
+                try (PreparedStatement preparedQueryStatement = connection.prepareStatement(query)) {
+                    preparedQueryStatement.setString(1, content);
+                    preparedQueryStatement.setFloat(2, rating);
+                    preparedQueryStatement.setInt(3, review_id);
+
+                    preparedQueryStatement.executeUpdate();
+                }
+            }
+        } catch (SQLException e) {
+            e.printStackTrace();
+            String message = "Kesalahan saat menambahkan review : " + e.getMessage();
+            log(message);
+            return message;
+        } finally {
+            db.closeConnection(connection);
+        }
+        String message = "Berhasil mengubah review dengan id" + review_id;
+        log(message);
+        return message;
+    }
+
 }
\ No newline at end of file