Allow supervisors to request improvements from final seminar opponents #78
@ -435,13 +435,15 @@ public class CoreConfig {
|
|||||||
Provider<EntityManager> em,
|
Provider<EntityManager> em,
|
||||||
FinalSeminarOppositionGrading finalSeminarOppositionGrading,
|
FinalSeminarOppositionGrading finalSeminarOppositionGrading,
|
||||||
EventBus eventBus,
|
EventBus eventBus,
|
||||||
FinalSeminarOppositionRepo finalSeminarOppositionRepository
|
FinalSeminarOppositionRepo finalSeminarOppositionRepository,
|
||||||
|
Clock clock
|
||||||
) {
|
) {
|
||||||
return new FinalSeminarOppositionServiceImpl(
|
return new FinalSeminarOppositionServiceImpl(
|
||||||
em,
|
em,
|
||||||
finalSeminarOppositionGrading,
|
finalSeminarOppositionGrading,
|
||||||
eventBus,
|
eventBus,
|
||||||
finalSeminarOppositionRepository
|
finalSeminarOppositionRepository,
|
||||||
|
clock
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@ import jakarta.persistence.JoinColumn;
|
|||||||
import jakarta.persistence.ManyToOne;
|
import jakarta.persistence.ManyToOne;
|
||||||
import jakarta.persistence.OneToOne;
|
import jakarta.persistence.OneToOne;
|
||||||
import jakarta.persistence.Table;
|
import jakarta.persistence.Table;
|
||||||
|
import java.time.Instant;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import se.su.dsv.scipro.file.FileReference;
|
import se.su.dsv.scipro.file.FileReference;
|
||||||
import se.su.dsv.scipro.project.Project;
|
import se.su.dsv.scipro.project.Project;
|
||||||
@ -31,6 +32,14 @@ public class FinalSeminarOpposition extends FinalSeminarParticipation {
|
|||||||
@Column(name = "feedback", length = FEEDBACK_LENGTH)
|
@Column(name = "feedback", length = FEEDBACK_LENGTH)
|
||||||
private String feedback;
|
private String feedback;
|
||||||
|
|
||||||
|
@Basic
|
||||||
|
@Column(name = "improvements_requested_at")
|
||||||
|
private Instant improvementsRequestedAt;
|
||||||
|
|
||||||
|
@Basic
|
||||||
|
@Column(name = "supervisor_improvements_comment")
|
||||||
|
private String supervisorCommentForImprovements;
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------
|
||||||
// JPA-mappings of foreign keys in this table (final_seminar_opposition) referencing
|
// JPA-mappings of foreign keys in this table (final_seminar_opposition) referencing
|
||||||
// other tables.
|
// other tables.
|
||||||
@ -92,6 +101,22 @@ public class FinalSeminarOpposition extends FinalSeminarParticipation {
|
|||||||
this.oppositionReport = oppositionReport;
|
this.oppositionReport = oppositionReport;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Instant getImprovementsRequestedAt() {
|
||||||
|
return improvementsRequestedAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setImprovementsRequestedAt(Instant improvementsRequestedAt) {
|
||||||
|
this.improvementsRequestedAt = improvementsRequestedAt;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSupervisorCommentForImprovements() {
|
||||||
|
return supervisorCommentForImprovements;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSupervisorCommentForImprovements(String supervisorCommentsForImprovements) {
|
||||||
|
this.supervisorCommentForImprovements = supervisorCommentsForImprovements;
|
||||||
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------
|
||||||
// Methods Common To All Objects
|
// Methods Common To All Objects
|
||||||
// ----------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------
|
||||||
|
@ -10,4 +10,6 @@ public interface FinalSeminarOppositionService extends GenericService<FinalSemin
|
|||||||
|
|
||||||
FinalSeminarOpposition gradeOpponent(FinalSeminarOpposition opposition, int points, String feedback)
|
FinalSeminarOpposition gradeOpponent(FinalSeminarOpposition opposition, int points, String feedback)
|
||||||
throws PointNotValidException;
|
throws PointNotValidException;
|
||||||
|
|
||||||
|
void requestImprovements(FinalSeminarOpposition opposition, String supervisorComment);
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,9 @@ import jakarta.inject.Inject;
|
|||||||
import jakarta.inject.Provider;
|
import jakarta.inject.Provider;
|
||||||
import jakarta.persistence.EntityManager;
|
import jakarta.persistence.EntityManager;
|
||||||
import jakarta.transaction.Transactional;
|
import jakarta.transaction.Transactional;
|
||||||
|
import java.time.Clock;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import se.su.dsv.scipro.report.OppositionReport;
|
||||||
import se.su.dsv.scipro.system.AbstractServiceImpl;
|
import se.su.dsv.scipro.system.AbstractServiceImpl;
|
||||||
|
|
||||||
public class FinalSeminarOppositionServiceImpl
|
public class FinalSeminarOppositionServiceImpl
|
||||||
@ -15,18 +17,21 @@ public class FinalSeminarOppositionServiceImpl
|
|||||||
private final FinalSeminarOppositionGrading finalSeminarOppositionGrading;
|
private final FinalSeminarOppositionGrading finalSeminarOppositionGrading;
|
||||||
private final EventBus eventBus;
|
private final EventBus eventBus;
|
||||||
private final FinalSeminarOppositionRepo finalSeminarOppositionRepository;
|
private final FinalSeminarOppositionRepo finalSeminarOppositionRepository;
|
||||||
|
private final Clock clock;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public FinalSeminarOppositionServiceImpl(
|
public FinalSeminarOppositionServiceImpl(
|
||||||
Provider<EntityManager> em,
|
Provider<EntityManager> em,
|
||||||
FinalSeminarOppositionGrading finalSeminarOppositionGrading,
|
FinalSeminarOppositionGrading finalSeminarOppositionGrading,
|
||||||
EventBus eventBus,
|
EventBus eventBus,
|
||||||
FinalSeminarOppositionRepo finalSeminarOppositionRepository
|
FinalSeminarOppositionRepo finalSeminarOppositionRepository,
|
||||||
|
Clock clock
|
||||||
) {
|
) {
|
||||||
super(em, FinalSeminarOpposition.class, QFinalSeminarOpposition.finalSeminarOpposition);
|
super(em, FinalSeminarOpposition.class, QFinalSeminarOpposition.finalSeminarOpposition);
|
||||||
this.finalSeminarOppositionGrading = finalSeminarOppositionGrading;
|
this.finalSeminarOppositionGrading = finalSeminarOppositionGrading;
|
||||||
this.eventBus = eventBus;
|
this.eventBus = eventBus;
|
||||||
this.finalSeminarOppositionRepository = finalSeminarOppositionRepository;
|
this.finalSeminarOppositionRepository = finalSeminarOppositionRepository;
|
||||||
|
this.clock = clock;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -59,4 +64,16 @@ public class FinalSeminarOppositionServiceImpl
|
|||||||
|
|
||||||
return assessedOpposition;
|
return assessedOpposition;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void requestImprovements(FinalSeminarOpposition opposition, String supervisorComment) {
|
||||||
|
OppositionReport oppositionReport = opposition.getOppositionReport();
|
||||||
|
if (oppositionReport == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
oppositionReport.setSubmitted(false);
|
||||||
|
opposition.setImprovementsRequestedAt(clock.instant());
|
||||||
|
opposition.setSupervisorCommentForImprovements(supervisorComment);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,3 @@
|
|||||||
|
ALTER TABLE `final_seminar_opposition`
|
||||||
|
ADD COLUMN `improvements_requested_at` DATETIME NULL,
|
||||||
|
ADD COLUMN `supervisor_improvements_comment` TEXT NULL;
|
Loading…
x
Reference in New Issue
Block a user