Brian He 8 年之前
父節點
當前提交
30265dd80e

+ 19
- 1
src/main/java/io/zipcoder/tc_spring_poll_application/controller/ComputeResultController.java 查看文件

1
 package io.zipcoder.tc_spring_poll_application.controller;
1
 package io.zipcoder.tc_spring_poll_application.controller;
2
 
2
 
3
 import io.zipcoder.tc_spring_poll_application.domain.Vote;
3
 import io.zipcoder.tc_spring_poll_application.domain.Vote;
4
+import io.zipcoder.tc_spring_poll_application.dto.OptionCount;
4
 import io.zipcoder.tc_spring_poll_application.dto.VoteResult;
5
 import io.zipcoder.tc_spring_poll_application.dto.VoteResult;
5
 import io.zipcoder.tc_spring_poll_application.repositories.VoteRepository;
6
 import io.zipcoder.tc_spring_poll_application.repositories.VoteRepository;
6
 import org.springframework.http.HttpStatus;
7
 import org.springframework.http.HttpStatus;
8
 import org.springframework.web.bind.annotation.*;
9
 import org.springframework.web.bind.annotation.*;
9
 
10
 
10
 import javax.inject.Inject;
11
 import javax.inject.Inject;
12
+import java.util.HashMap;
13
+import java.util.Map;
11
 
14
 
12
 @RestController
15
 @RestController
13
 public class ComputeResultController {
16
 public class ComputeResultController {
20
         VoteResult voteResult = new VoteResult();
23
         VoteResult voteResult = new VoteResult();
21
         Iterable<Vote> allVotes = voteRepository.findVotesByPoll(pollId);
24
         Iterable<Vote> allVotes = voteRepository.findVotesByPoll(pollId);
22
 
25
 
23
-        return new ResponseEntity<VoteResult>(voteResult, HttpStatus.OK);
26
+        int totalVotes = 0;
27
+        Map<Long, OptionCount> tempMap = new HashMap<>();
28
+        for(Vote v : allVotes) {
29
+            totalVotes++;
30
+            OptionCount optionCount = tempMap.get(v.getOption().getId());
31
+            if(optionCount == null) {
32
+                optionCount = new OptionCount();
33
+                optionCount.setOptionId(v.getOption().getId());
34
+                tempMap.put(v.getOption().getId(), optionCount);
35
+            }
36
+            optionCount.setCount(optionCount.getCount() + 1);
37
+        }
38
+        voteResult.setTotalVotes(totalVotes);
39
+        voteResult.setResults(tempMap.values());
40
+
41
+        return new ResponseEntity<>(voteResult, HttpStatus.OK);
24
     }
42
     }
25
 
43
 
26
 }
44
 }