Skip to content
Snippets Groups Projects

Make sure we first filter on assignment id

1 file
+ 17
9
Compare changes
  • Side-by-side
  • Inline
@@ -19,8 +19,8 @@ package nl.tudelft.labracore.repository;
import static com.querydsl.jpa.JPAExpressions.select;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.stream.Collectors;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
@@ -99,14 +99,22 @@ public interface SubmissionRepository
* @return The list of Submissions.
*/
default List<Submission> findByAssignmentIdFiltered(Long assignmentId, String filter, Boolean isLatest) {
List<Submission> submissions = findAll(qs.group.name.likeIgnoreCase("%" + filter + "%")
List<Submission> submissions = findAll(qs.assignment.id.eq(assignmentId).and(qs.group.name
.likeIgnoreCase(
"%" + filter + "%")
.or(qs.submitter.id.in(
select(qcp.id).from(qcp).where(qcp.username.likeIgnoreCase("%" + filter + "%")))));
return isLatest
? submissions.stream().map(Submission::getGroup).distinct()
.map(g -> findLatestSubmissionForGroup(g.getId(), assignmentId))
.filter(Optional::isPresent).map(Optional::get).toList()
: submissions;
select(qcp.id).from(qcp).where(qcp.username.likeIgnoreCase("%" + filter + "%"))))));
if (isLatest) {
// Get the latest assignment per group.
return submissions.stream().collect(Collectors.groupingBy(Submission::getGroup)).entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey,
(l) -> l.getValue().stream()
.max(Comparator.comparing(Submission::getSubmissionTime))))
.values().stream().map(Optional::get).toList();
} else {
return submissions;
}
}
/**
Loading