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); } }