diff --git a/src/main/java/org/hbp/mip/controllers/AppsApi.java b/src/main/java/org/hbp/mip/controllers/AppsApi.java
index 7c2794d22dea301f2d7278145620a60c8238c62f..aa0bd2357c08c99f8e121ccc85ecb71af9ef6f7c 100644
--- a/src/main/java/org/hbp/mip/controllers/AppsApi.java
+++ b/src/main/java/org/hbp/mip/controllers/AppsApi.java
@@ -74,16 +74,35 @@ public class AppsApi {
         try {
             session.beginTransaction();
 
+            Vote vote = (Vote) session.createQuery("" +
+                    "SELECT v FROM Vote v, User u, App a " +
+                    "WHERE u=v.user " +
+                    "AND a=v.app " +
+                    "AND u.username= :username " +
+                    "AND a.id= :app_id")
+                    .setString("username", user.getUsername())
+                    .setLong("app_id", id)
+                    .uniqueResult();
             App app = (App) session.createQuery("FROM App where id= :id").setLong("id", id).uniqueResult();
 
-            Vote vote = new Vote();
-            vote.setUser(user);
-            vote.setValue(value);
-            vote.setApp(app);
+            if (vote != null) {
+                vote.setValue(value);
 
-            session.save(vote);
-
-            session.getTransaction().commit();
+                session.update(vote);
+                session.getTransaction().commit();
+                return new ResponseEntity<>(HttpStatus.NO_CONTENT);
+            }
+            else
+            {
+                vote = new Vote();
+                vote.setUser(user);
+                vote.setValue(value);
+                vote.setApp(app);
+
+                session.save(vote);
+                session.getTransaction().commit();
+                return new ResponseEntity<>(HttpStatus.CREATED);
+            }
         }
         catch (ConstraintViolationException cve)
         {
@@ -108,8 +127,7 @@ public class AppsApi {
                 session.getTransaction().rollback();
                 throw e;
             }
+            return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
         }
-
-        return new ResponseEntity<>(HttpStatus.CREATED);
     }
 }