3122 tr fIX Stöd för manuell hantering av slutsem för handledare

This commit is contained in:
Wayne Westmoreland 2024-01-25 16:26:09 +01:00
parent d027551c98
commit 0acf5f2bad
4 changed files with 19 additions and 10 deletions
core/src/main/java/se/su/dsv/scipro/finalseminar
view/src/main/java/se/su/dsv/scipro/finalseminar

@ -269,10 +269,13 @@ public class FinalSeminarServiceImpl extends AbstractServiceImpl<FinalSeminar, L
@Override
@Transactional
public Either<OpposeError, FinalSeminarOpposition> attemptAddOppositionAsSupervisor(User student, FinalSeminar finalSeminar, Project project) {
if (finalSeminar.getActiveParticipants().contains(student)) {
if (alreadyActiveParticipant(student, finalSeminar)) {
return Either.left(OpposeError.ALREADY_PARTICIPANT);
} else if (finalSeminar.getOpponents().contains(student)) {
} else if (alreadyOpponent(student, finalSeminar)) {
return Either.left(OpposeError.ALREADY_OPPONENT);
} else if (isAuthor(student, finalSeminar)) {
return Either.left(OpposeError.IS_AUTHOR);
} else {
return Either.right(createAndSaveOpposition(student, finalSeminar, project));
}
@ -298,10 +301,12 @@ public class FinalSeminarServiceImpl extends AbstractServiceImpl<FinalSeminar, L
@Override
@Transactional
public Either<ParticipateError, FinalSeminarActiveParticipation> attemptAddActiveParticipationAsSupervisor(User student, FinalSeminar finalSeminar, Project project) {
if (finalSeminar.getActiveParticipants().contains(student)) {
return Either.left(ParticipateError.AlreadyParticipant);
} else if (finalSeminar.getOpponents().contains(student)) {
return Either.left(ParticipateError.AlreadyOpponent);
if (alreadyActiveParticipant(student, finalSeminar)) {
return Either.left(ParticipateError.ALREADY_PARTICIPANT);
} else if (alreadyOpponent(student, finalSeminar)) {
return Either.left(ParticipateError.ALREADY_OPPONENT);
} else if (isAuthor(student, finalSeminar)) {
return Either.left(ParticipateError.IS_AUTHOR);
} else {
return Either.right(createAndSaveActiveParticipation(student, finalSeminar, project));
}

@ -1,5 +1,5 @@
package se.su.dsv.scipro.finalseminar;
public enum OpposeError {
ALREADY_OPPONENT, ALREADY_PARTICIPANT
ALREADY_OPPONENT, ALREADY_PARTICIPANT, IS_AUTHOR
}

@ -1,5 +1,5 @@
package se.su.dsv.scipro.finalseminar;
public enum ParticipateError {
AlreadyOpponent, AlreadyParticipant
ALREADY_OPPONENT, ALREADY_PARTICIPANT, IS_AUTHOR
}

@ -224,9 +224,11 @@ public class SeminarCRUDPanel extends GenericPanel<FinalSeminar> {
result.fold(
error -> {
switch (error) {
case AlreadyOpponent ->
case IS_AUTHOR ->
error(potentialParticipant.getFullName() + " that you selected as an active participant is an author");
case ALREADY_OPPONENT ->
error(potentialParticipant.getFullName() + " that you selected as an active participant is already an opponent");
case AlreadyParticipant ->
case ALREADY_PARTICIPANT ->
error(potentialParticipant.getFullName() + " that you selected as an active participant is already an active participant");
}
return false;
@ -261,6 +263,8 @@ public class SeminarCRUDPanel extends GenericPanel<FinalSeminar> {
result.fold(
error -> {
switch (error) {
case IS_AUTHOR ->
error(potentialOpponent.getFullName() + " that you selected as an active participant is an author");
case ALREADY_OPPONENT ->
error(potentialOpponent.getFullName() + " that you selected as an opponent is already an opponent");
case ALREADY_PARTICIPANT ->