ComputeResultController.java 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package quickpoll.dtos;
  2. import quickpoll.io.zipcoder.tc_spring_poll_application.domain.Vote;
  3. import quickpoll.io.zipcoder.tc_spring_poll_application.repositories.VoteRepository;
  4. import org.springframework.http.HttpStatus;
  5. import org.springframework.http.ResponseEntity;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RequestMethod;
  8. import org.springframework.web.bind.annotation.RequestParam;
  9. import org.springframework.web.bind.annotation.RestController;
  10. import javax.inject.Inject;
  11. import java.util.HashMap;
  12. import java.util.Map;
  13. @RestController
  14. public class ComputeResultController {
  15. @Inject
  16. private VoteRepository voteRepository;
  17. @RequestMapping(value = "/computeresult", method = RequestMethod.GET)
  18. public ResponseEntity<?> computeResult(@RequestParam Long pollId) {
  19. VoteResult voteResult = new VoteResult();
  20. Iterable<Vote> allVotes = voteRepository.findVotesByPoll(pollId);
  21. int totalVotes = 0;
  22. Map<Long, OptionCount> tempMap = new HashMap<>();
  23. for(Vote v : allVotes) {
  24. totalVotes ++;
  25. OptionCount optionCount = tempMap.get(v.getOption().getId());
  26. if(optionCount == null) {
  27. optionCount = new OptionCount();
  28. optionCount.setOptionId(v.getOption().getId());
  29. tempMap.put(v.getOption().getId(), optionCount);
  30. }
  31. optionCount.setCount(optionCount.getCount()+1);
  32. }
  33. voteResult.setTotalVotes(totalVotes);
  34. voteResult.setResults(tempMap.values());
  35. return new ResponseEntity<VoteResult>(voteResult, HttpStatus.OK);
  36. }
  37. }