From 28c5bbfabb224c56071df2d4190afd9e3aeefabf Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 5 Jan 2020 14:46:12 +0100 Subject: [PATCH] =?UTF-8?q?PUNKT-54=20ogranczenia=20rozwi=C4=85zywania=20t?= =?UTF-8?q?estu=20w=20grupie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/TestController.java | 38 ++++++++++++++++++- .../model/test/dto/TestOwnerDTO.java | 2 + .../userActivity/UserActivityRepository.java | 3 ++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/BackEnd/src/main/java/studycave/studycaverestservice/controller/TestController.java b/BackEnd/src/main/java/studycave/studycaverestservice/controller/TestController.java index 9603226..f7eda0b 100644 --- a/BackEnd/src/main/java/studycave/studycaverestservice/controller/TestController.java +++ b/BackEnd/src/main/java/studycave/studycaverestservice/controller/TestController.java @@ -31,6 +31,8 @@ import studycave.studycaverestservice.model.simpleTest.SimpleTest; import studycave.studycaverestservice.model.simpleTest.SimpleTestRepository; import studycave.studycaverestservice.model.simpleTest.dto.SimpleTestDTO; import studycave.studycaverestservice.model.studyGroup.GroupRepository; +import studycave.studycaverestservice.model.studyGroup.StudyGroup; +import studycave.studycaverestservice.model.studyGroupMember.StudyGroupMember; import studycave.studycaverestservice.model.test.Test; import studycave.studycaverestservice.model.test.TestRepository; import studycave.studycaverestservice.model.test.dto.*; @@ -40,6 +42,8 @@ import studycave.studycaverestservice.model.test.result.TestResultRepository; import studycave.studycaverestservice.model.test.verifier.QuestionVerifier; import studycave.studycaverestservice.model.user.User; import studycave.studycaverestservice.model.user.UserRepository; +import studycave.studycaverestservice.model.userActivity.UserActivity; +import studycave.studycaverestservice.model.userActivity.UserActivityRepository; import studycave.studycaverestservice.model.userActivity.UserActivityService; import studycave.studycaverestservice.model.userBadge.UserBadge; import studycave.studycaverestservice.model.userBadge.UserBadgeRepository; @@ -74,6 +78,8 @@ public class TestController { TestResultRepository testResultRepository; @Autowired UserActivityService userActivityService; + @Autowired + private UserActivityRepository userActivityRepository; @GetMapping("/{id}") public Optional getTest(@PathVariable(required = true) Long id) { @@ -93,6 +99,9 @@ public class TestController { @GetMapping("/{id}/solve") public TestOwnerDTO getTestToSolve(@PathVariable(required = true) Long id) { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + User userAuth = userRepository.findByUsername(authentication.getName()).get(); + Optional test = testRepository.findById(id); for (Question question : test.get().getQuestions()) { @@ -143,10 +152,37 @@ public class TestController { ((QuestionPairs) question).setAnswers(answersDTOs); } } + User user = userRepository.findById(test.get().getIdOwner()).get(); TestOwnerDTO testDTO = modelMapper.map(test.get(), TestOwnerDTO.class); testDTO.setOwner(user.getUsername()); - + if (test.get().getPermission().equals("GROUP")) { + List groupUsers = test.get().getGroup().getMembers(); + for (StudyGroupMember studyGroupMember : groupUsers) { + if (studyGroupMember.getIsGroupLeader()) { + if (studyGroupMember.getUser().equals(userAuth)) { + testDTO.setAttempted(false); + break; + } + } + } + if (testDTO.getAttempted() == null) { + for (StudyGroupMember studyGroupMember : groupUsers) { + if (studyGroupMember.getUser().equals(userAuth)){ + List userActivities = userActivityRepository.findAllByTestAndToUser(test.get(), userAuth); + for (UserActivity userActivity : userActivities){ + if (userActivity.getType().equals("solvedTest")){ + testDTO.setAttempted(true); + break; + } + } + } + } + } + } + if (testDTO.getAttempted() == null){ + testDTO.setAttempted(false); + } return testDTO; } diff --git a/BackEnd/src/main/java/studycave/studycaverestservice/model/test/dto/TestOwnerDTO.java b/BackEnd/src/main/java/studycave/studycaverestservice/model/test/dto/TestOwnerDTO.java index 2ed27c2..9955729 100644 --- a/BackEnd/src/main/java/studycave/studycaverestservice/model/test/dto/TestOwnerDTO.java +++ b/BackEnd/src/main/java/studycave/studycaverestservice/model/test/dto/TestOwnerDTO.java @@ -32,6 +32,8 @@ public class TestOwnerDTO { private String permission; private int grade; + private Boolean attempted = null; + @JsonProperty("body") List questions = new ArrayList<>(); diff --git a/BackEnd/src/main/java/studycave/studycaverestservice/model/userActivity/UserActivityRepository.java b/BackEnd/src/main/java/studycave/studycaverestservice/model/userActivity/UserActivityRepository.java index c1bb60b..3ef20da 100644 --- a/BackEnd/src/main/java/studycave/studycaverestservice/model/userActivity/UserActivityRepository.java +++ b/BackEnd/src/main/java/studycave/studycaverestservice/model/userActivity/UserActivityRepository.java @@ -2,6 +2,8 @@ package studycave.studycaverestservice.model.userActivity; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; +import studycave.studycaverestservice.model.test.Test; +import studycave.studycaverestservice.model.user.User; import java.sql.Date; import java.sql.Timestamp; @@ -14,4 +16,5 @@ public interface UserActivityRepository extends JpaRepository findAllByToUserOrFromUserAndGroupAndTime(Long userId, Long groupId, Date start, Timestamp end); + List findAllByTestAndToUser(Test test, User userAuth); }