3283: I Supervisor-vyn av ett projekt visar att en författare har genomfört flera oppositioner
This commit is contained in:
parent
15fa657527
commit
786c4dafda
@ -4,6 +4,7 @@ import com.google.common.eventbus.EventBus;
|
||||
import com.google.inject.persist.Transactional;
|
||||
import com.querydsl.core.BooleanBuilder;
|
||||
import com.querydsl.core.types.dsl.BooleanExpression;
|
||||
import com.querydsl.jpa.impl.JPAQuery;
|
||||
import jakarta.persistence.EntityManager;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import se.su.dsv.scipro.file.FileReference;
|
||||
@ -17,6 +18,7 @@ import se.su.dsv.scipro.report.OppositionReportService;
|
||||
import se.su.dsv.scipro.reviewing.RoughDraftApproval;
|
||||
import se.su.dsv.scipro.reviewing.RoughDraftApprovalService;
|
||||
import se.su.dsv.scipro.system.AbstractServiceImpl;
|
||||
import se.su.dsv.scipro.system.ProjectType;
|
||||
import se.su.dsv.scipro.system.User;
|
||||
import se.su.dsv.scipro.util.Either;
|
||||
|
||||
@ -60,8 +62,7 @@ public class FinalSeminarServiceImpl extends AbstractServiceImpl<FinalSeminar, L
|
||||
FinalSeminarActiveParticipationRepository finalSeminarActiveParticipationRepository,
|
||||
FinalSeminarRepository finalSeminarRepository,
|
||||
Clock clock,
|
||||
RoughDraftApprovalService roughDraftApprovalService)
|
||||
{
|
||||
RoughDraftApprovalService roughDraftApprovalService) {
|
||||
super(em, FinalSeminar.class, QFinalSeminar.finalSeminar);
|
||||
this.eventBus = eventBus;
|
||||
this.authorRepository = authorRepository;
|
||||
@ -113,8 +114,7 @@ public class FinalSeminarServiceImpl extends AbstractServiceImpl<FinalSeminar, L
|
||||
private Either<SchedulingError, FinalSeminar> createSeminar(
|
||||
Project project,
|
||||
LocalDateTime when,
|
||||
FinalSeminarDetails details)
|
||||
{
|
||||
FinalSeminarDetails details) {
|
||||
FinalSeminar finalSeminar = new FinalSeminar(project);
|
||||
FinalSeminar persisted = setDetails(finalSeminar, when, details);
|
||||
eventBus.post(new FinalSeminarCreatedEvent(persisted));
|
||||
@ -376,7 +376,7 @@ public class FinalSeminarServiceImpl extends AbstractServiceImpl<FinalSeminar, L
|
||||
if (params.getOnlyActiveOrCompletedProjects() != null) {
|
||||
bb.and(onlyActiveOrCompletedProjectsFilter());
|
||||
}
|
||||
if (params.getOnlyNonManualParticipants() != null){
|
||||
if (params.getOnlyNonManualParticipants() != null) {
|
||||
bb.and(onlyNonManualParticipantsFilter());
|
||||
}
|
||||
if (params.getDegreeType() != null) {
|
||||
@ -480,14 +480,13 @@ public class FinalSeminarServiceImpl extends AbstractServiceImpl<FinalSeminar, L
|
||||
QFinalSeminar seminar = QFinalSeminar.finalSeminar;
|
||||
if (after == null && before == null) {
|
||||
return seminar.oppositions.any().grade.isNull().or(
|
||||
seminar.activeParticipations.any().grade.isNull().or(
|
||||
seminar.activeParticipations.any().grade.isNull().or(
|
||||
seminar.respondents.any().grade.isNull()));
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
return seminar.startDate.between(after, before)
|
||||
.andAnyOf(seminar.oppositions.any().grade.isNull(),
|
||||
seminar.activeParticipations.any().grade.isNull(),
|
||||
seminar.respondents.any().grade.isNull());
|
||||
.andAnyOf(seminar.oppositions.any().grade.isNull(),
|
||||
seminar.activeParticipations.any().grade.isNull(),
|
||||
seminar.respondents.any().grade.isNull());
|
||||
}
|
||||
}
|
||||
|
||||
@ -500,9 +499,21 @@ public class FinalSeminarServiceImpl extends AbstractServiceImpl<FinalSeminar, L
|
||||
}
|
||||
|
||||
private BooleanExpression projectOpposing(Project project) {
|
||||
return allOf(
|
||||
QFinalSeminar.finalSeminar.oppositions.any().user.in(project.getProjectParticipants()),
|
||||
QFinalSeminar.finalSeminar.oppositions.any().project.projectType.eq(project.getProjectType()));
|
||||
List<BooleanExpression> booleanExpressions = new ArrayList<>();
|
||||
for (User projectParticipant : project.getProjectParticipants()) {
|
||||
final BooleanExpression booleanExpression = QFinalSeminar.finalSeminar.oppositions.any()
|
||||
.in(getFinalSeminarOppositions(projectParticipant, project.getProjectType()));
|
||||
booleanExpressions.add(booleanExpression);
|
||||
}
|
||||
return anyOf(booleanExpressions.toArray(new BooleanExpression[0]));
|
||||
}
|
||||
|
||||
private List<FinalSeminarOpposition> getFinalSeminarOppositions(User projectParticipant, ProjectType projectType) {
|
||||
return new JPAQuery<FinalSeminarOpposition>(em())
|
||||
.from(QFinalSeminarOpposition.finalSeminarOpposition)
|
||||
.where(QFinalSeminarOpposition.finalSeminarOpposition.project.projectType.eq(projectType),
|
||||
QFinalSeminarOpposition.finalSeminarOpposition.user.eq(projectParticipant))
|
||||
.fetch();
|
||||
}
|
||||
|
||||
private BooleanExpression projectParticipating(Project project) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user