PUNKT-54 ogranczenia rozwiązywania testu w grupie

This commit is contained in:
unknown 2020-01-05 14:46:12 +01:00
parent 72a4570253
commit 28c5bbfabb
3 changed files with 42 additions and 1 deletions

View File

@ -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<Test> 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> 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<StudyGroupMember> 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<UserActivity> 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;
}

View File

@ -32,6 +32,8 @@ public class TestOwnerDTO {
private String permission;
private int grade;
private Boolean attempted = null;
@JsonProperty("body")
List<Question> questions = new ArrayList<>();

View File

@ -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<UserActivity, Long
List<UserActivity> findAllByToUserOrFromUserAndGroupAndTime(Long userId, Long groupId,
Date start, Timestamp end);
List<UserActivity> findAllByTestAndToUser(Test test, User userAuth);
}