diff --git a/src/main/java/org/hbp/mip/controllers/AppsApi.java b/src/main/java/org/hbp/mip/controllers/AppsApi.java index 70bc3f037609d1e056f9c451449a22324dd8ffbe..351a2efb069e6b23831857e461a2a7db6f16a1a2 100644 --- a/src/main/java/org/hbp/mip/controllers/AppsApi.java +++ b/src/main/java/org/hbp/mip/controllers/AppsApi.java @@ -11,6 +11,7 @@ import org.hbp.mip.model.App; import org.hbp.mip.model.User; import org.hbp.mip.model.Vote; import org.hbp.mip.repositories.AppRepository; +import org.hbp.mip.repositories.UserRepository; import org.hbp.mip.repositories.VoteRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -20,6 +21,8 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import java.util.Iterator; + import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; @RestController @@ -38,6 +41,9 @@ public class AppsApi { @Autowired VoteRepository voteRepository; + @Autowired + UserRepository userRepository; + @ApiOperation(value = "Get apps", response = App.class, responseContainer = "List") @ApiResponses(value = { @ApiResponse(code = 200, message = "Success") }) @RequestMapping(method = RequestMethod.GET) @@ -53,26 +59,26 @@ public class AppsApi { @ApiParam(value = "id", required = true) @PathVariable("id") Integer id, @ApiParam(value = "value", required = true) @PathVariable("value") Integer value ) { - - User user = securityConfiguration.getUser(); + User user = userRepository.findOne(securityConfiguration.getUser().getUsername()); App app = appRepository.findOne(id); + Vote vote; - Vote vote = voteRepository.findByUserAndApp(user, app).iterator().next(); - - if (vote != null) { - vote.setValue(value); - voteRepository.save(vote); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); + Iterator<Vote> voteIter = voteRepository.findByUserAndApp(user, app).iterator(); + if(voteIter.hasNext()) + { + vote = voteIter.next(); } else { vote = new Vote(); vote.setUser(user); - vote.setValue(value); vote.setApp(app); - voteRepository.save(vote); - return new ResponseEntity<>(HttpStatus.CREATED); } + vote.setValue(value); + voteRepository.save(vote); + + return new ResponseEntity<>(HttpStatus.CREATED); + } }