From 515c643dd1aac5811b995c4b307fffc32b67bae9 Mon Sep 17 00:00:00 2001
From: Axel <wiepke@uni-potsdam.de>
Date: Thu, 13 Sep 2018 13:16:10 +0200
Subject: [PATCH] feat: working on phase shift

---
 .../gf/core/management/ManagementImpl.java    |  4 +-
 .../core/management/ManagementImpl.java.orig  |  2 +-
 .../management/pageAppearance/Footer.java     |  2 +-
 .../core/management/pageAppearance/Menu.java  |  2 +-
 .../gf/core/management/project/Project.java   |  2 +-
 .../project/ProjectConfiguration.java         |  2 +-
 .../project/ProjectConfigurationDAO.java      |  4 +-
 .../gf/core/management/user/UserService.java  |  4 --
 .../unipotsdam/gf/core/session/GFContext.java |  2 +-
 .../unipotsdam/gf/core/states/PhasesImpl.java | 54 ++++++++++++++++---
 .../gf/core/states/PhasesService.java         |  5 +-
 .../gf/core/states/configPhaseShift.java      | 11 ----
 .../gf/core/states/model/Constraints.java     | 34 ++++++++++++
 .../core/states/{ => model}/ProjectPhase.java |  2 +-
 .../gf/interfaces/IPeerAssessment.java        |  7 ++-
 .../unipotsdam/gf/interfaces/IPhases.java     |  2 +-
 .../controller/service/FBAssessement.java     | 11 ++++
 .../controller/service/PeerAssessment.java    | 11 ++++
 .../service/PeerAssessmentDummy.java          | 11 ++++
 .../peer2peerfeedback/DummyFeedback.java      |  8 +--
 .../java/unipotsdam/gf/view/Messages.java     |  5 ++
 .../gf/interfaces/ActivityFlowTest.java       |  2 +-
 .../unipotsdam/gf/interfaces/PhaseTest.java   |  2 +-
 23 files changed, 144 insertions(+), 45 deletions(-)
 delete mode 100644 gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/configPhaseShift.java
 create mode 100644 gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java
 rename gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/{ => model}/ProjectPhase.java (75%)

diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
index c5bcc092..c7aaeea3 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java
@@ -1,6 +1,5 @@
 package unipotsdam.gf.core.management;
 
-import sun.misc.IOUtils;
 import unipotsdam.gf.core.database.mysql.MysqlConnect;
 import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
 import unipotsdam.gf.core.management.group.Group;
@@ -10,13 +9,12 @@ import unipotsdam.gf.core.management.project.ProjectConfigurationDAO;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.core.management.user.UserInterests;
 import unipotsdam.gf.core.management.user.UserProfile;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 
 import javax.annotation.ManagedBean;
 import javax.annotation.Resource;
 import javax.inject.Singleton;
-import java.io.File;
 import java.io.FileInputStream;
 import java.sql.Blob;
 import java.sql.Timestamp;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java.orig b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java.orig
index 5f22f04d..a9f8cae5 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java.orig
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/ManagementImpl.java.orig
@@ -10,7 +10,7 @@ import unipotsdam.gf.core.management.project.ProjectConfigurationDAO;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.core.management.user.UserInterests;
 import unipotsdam.gf.core.management.user.UserProfile;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
 
 import javax.annotation.ManagedBean;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java
index c4a98679..d517c79e 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Footer.java
@@ -1,7 +1,7 @@
 package unipotsdam.gf.core.management.pageAppearance;
 
 import unipotsdam.gf.core.management.ManagementImpl;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.jsp.JspWriter;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java
index a6538bca..22c4f044 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/pageAppearance/Menu.java
@@ -2,7 +2,7 @@ package unipotsdam.gf.core.management.pageAppearance;
 
 import unipotsdam.gf.core.management.ManagementImpl;
 import unipotsdam.gf.core.management.user.User;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.jsp.JspWriter;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java
index 6ca31795..3a11a840 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/Project.java
@@ -1,6 +1,6 @@
 package unipotsdam.gf.core.management.project;
 
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 
 import java.sql.Timestamp;
 import java.time.LocalDateTime;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfiguration.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfiguration.java
index cc66f563..13240345 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfiguration.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfiguration.java
@@ -1,6 +1,6 @@
 package unipotsdam.gf.core.management.project;
 
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.modules.assessment.AssessmentMechanism;
 import unipotsdam.gf.modules.groupfinding.GroupFormationMechanism;
 import unipotsdam.gf.modules.peer2peerfeedback.Category;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfigurationDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfigurationDAO.java
index 6a9f1478..ee57c4b4 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfigurationDAO.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/project/ProjectConfigurationDAO.java
@@ -2,13 +2,11 @@ package unipotsdam.gf.core.management.project;
 
 import unipotsdam.gf.core.database.mysql.MysqlConnect;
 import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
-import unipotsdam.gf.core.management.user.User;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.modules.assessment.AssessmentMechanism;
 import unipotsdam.gf.modules.groupfinding.GroupFormationMechanism;
 import unipotsdam.gf.modules.peer2peerfeedback.Category;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 
 public class ProjectConfigurationDAO {
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java
index 94bf3ef8..5df13ac9 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/management/user/UserService.java
@@ -1,8 +1,6 @@
 package unipotsdam.gf.core.management.user;
 
-import org.glassfish.grizzly.streams.BufferedInput;
 import unipotsdam.gf.core.management.ManagementImpl;
-import unipotsdam.gf.core.states.ProjectPhase;
 import unipotsdam.gf.interfaces.ICommunication;
 import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
 
@@ -11,8 +9,6 @@ import javax.inject.Inject;
 import javax.ws.rs.*;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
-import java.awt.image.BufferedImage;
-import java.awt.image.BufferedImageOp;
 import java.io.File;
 import java.io.FileInputStream;
 import java.net.URI;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/GFContext.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/GFContext.java
index bdbac9ae..7c60869c 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/GFContext.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/session/GFContext.java
@@ -2,7 +2,7 @@ package unipotsdam.gf.core.session;
 
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.modules.assessment.controller.model.Quiz;
 import unipotsdam.gf.modules.communication.model.chat.ChatRoom;
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java
index ed289b31..685e6018 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesImpl.java
@@ -2,13 +2,19 @@ package unipotsdam.gf.core.states;
 
 import unipotsdam.gf.core.database.mysql.MysqlConnect;
 import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.core.states.model.Constraints;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.interfaces.*;
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
+import unipotsdam.gf.modules.assessment.controller.service.PeerAssessmentDummy;
+import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
+import unipotsdam.gf.modules.peer2peerfeedback.DummyFeedback;
 import unipotsdam.gf.view.Messages;
 
 import javax.annotation.ManagedBean;
-import javax.annotation.Resource;
 import javax.inject.Inject;
-import javax.inject.Singleton;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * Created by dehne on 31.05.2018.
@@ -19,11 +25,11 @@ import javax.inject.Singleton;
 @ManagedBean
 public class PhasesImpl implements IPhases {
 
-    private IPeerAssessment iPeerAssessment;
+    private IPeerAssessment iPeerAssessment = new PeerAssessmentDummy();
 
-    private Feedback feedback;
+    private Feedback feedback = new DummyFeedback();
 
-    private ICommunication iCommunication;
+    private ICommunication iCommunication = new CommunicationDummyService();
 
     private IJournal iJournal;
 
@@ -45,8 +51,31 @@ public class PhasesImpl implements IPhases {
         this.iJournal = iJournal;
     }
 
+    /*Optionen für die Constraints:
+    Gesucht ist ein Objekt, welches man an den Dozenten übergibt, in dem die fehlenden Abgaben codiert sind
+
+    Als Map<StudentIdentifier, class Constraints>
+        + Immer wenn etwas nicht erfüllt wurde, speichert man es hier ab
+        - Jedes Interface bräuchte eine Funktion, die diese Datenstruktur bedient
+        - einige nutzlose Daten müssten mitgeschliffen werden
+        - Die variable wird immer wieder neu erzeugt und so sollte alles in der DB gespeichert sein!?
+    Constraints als Enum
+        + Die Funktionen der Interfaces checken ob dieser Constraint überall gilt
+        - Jedes Interface muss eine Funktion schreiben, die jeden Studenten untersucht.
+            Sinnvoller wäre nur die Studenten zurück zu geben, die die Constraint nicht erfüllen
+        - Enums können glaube keine Werte als Default tragen
+    Map<StudentIdentifier, String>
+        + Wenn Map keine Elemente trägt, ist alles erfüllt.
+        + zurück zu geben vom Interface wäre die Kennung (StudentIdentifier) und was fehlt (Constraint)
+        - Keine Default Werte
+
+
+    */
+
     @Override
-    public void endPhase(ProjectPhase changeToPhase, Project project) {
+    public void endPhase(ProjectPhase currentPhase, Project project) {
+        ProjectPhase changeToPhase = getNextPhase(currentPhase);
+        Map<StudentIdentifier, Constraints> tasks = new HashMap<>();
         switch (changeToPhase) {
             case CourseCreation:
                 // saving the state
@@ -59,6 +88,7 @@ public class PhasesImpl implements IPhases {
                 break;
             case DossierFeedback:
                 // check if everybody has uploaded a dossier
+
                 Boolean feedbacksGiven = feedback.checkFeedbackConstraints(project);
                 if (!feedbacksGiven) {
                     feedback.assigningMissingFeedbackTasks(project);
@@ -70,7 +100,8 @@ public class PhasesImpl implements IPhases {
                 break;
             case Execution:
                 // check if the portfolios have been prepared for evaluation (relevant entries selected)
-                Boolean portfoliosReady = iJournal.getPortfoliosForEvaluationPrepared(project);
+                // todo: Boolean portfoliosReady = iJournal.getPortfoliosForEvaluationPrepared(project);
+                Boolean portfoliosReady = true;
                 if (portfoliosReady) {
                     // inform users about the end of the phase
                     iCommunication.sendMessageToUsers(project, Messages.AssessmentPhaseStarted(project));
@@ -80,6 +111,15 @@ public class PhasesImpl implements IPhases {
                 }
                 break;
             case Assessment:
+                Boolean allAssessmentsDone = iPeerAssessment.allAssessmentsDone(project.getId());
+                if(allAssessmentsDone){
+                    iCommunication.sendMessageToUsers(project, Messages.CourseEnds(project));
+                    saveState(project, changeToPhase);
+                }else{
+                    iPeerAssessment.assignMissingAssessmentTasks(project);
+                }
+                break;
+            case Projectfinished:
                 closeProject();
                 break;
         }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java
index c0d45a75..49a65404 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/PhasesService.java
@@ -2,16 +2,15 @@ package unipotsdam.gf.core.states;
 
 import unipotsdam.gf.core.management.Management;
 import unipotsdam.gf.core.management.ManagementImpl;
-import unipotsdam.gf.core.management.project.Project;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.interfaces.IPhases;
 
-import javax.inject.Inject;
 import javax.ws.rs.*;
 import javax.ws.rs.core.MediaType;
 
 /**
  * REST API for switching phases
- * In order to look up the possible phases @see unipotsdam.gf.core.states.ProjectPhase
+ * In order to look up the possible phases @see unipotsdam.gf.core.states.model.ProjectPhase
  */
 @Path("/phases")
 public class PhasesService  {
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/configPhaseShift.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/configPhaseShift.java
deleted file mode 100644
index b988f6f7..00000000
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/configPhaseShift.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package unipotsdam.gf.core.states;
-
-public class configPhaseShift {
-    Boolean DossierWritten;
-    Integer FeedbackCount =1;
-    Integer QuizCount =10;
-    Integer JournalCount=5;
-    Boolean DossierFinalized;
-    Boolean JournalFinalized;
-    Boolean AssessmentDone;
-}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java
new file mode 100644
index 00000000..ac413e63
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/Constraints.java
@@ -0,0 +1,34 @@
+package unipotsdam.gf.core.states.model;
+
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
+
+public class Constraints {
+
+    public static String DossierWritten(StudentIdentifier student){
+        return student.getStudentId()+" hat noch kein Dossier hochgeladen.";
+    }
+
+    public static String FeedbackCount(StudentIdentifier student){
+        return student.getStudentId()+" hat noch nicht das erwartete Feedack gegeben.";
+    }
+
+    public static String QuizCount(StudentIdentifier student){
+        return student.getStudentId()+" hat noch kein Quiz erstellt.";
+    }
+
+    public static String JournalCount(StudentIdentifier student){
+        return student.getStudentId()+" hat noch nicht genug Tagebucheinträge verfasst.";
+    }
+
+    public static String DossierFinalized(StudentIdentifier student){
+        return student.getStudentId()+" hat sein Dossier noch nicht finalisiert.";
+    }
+
+    public static String JournalFinalized(StudentIdentifier student){
+        return student.getStudentId()+" hat sein Tagebuch noch nicht finalisiert";
+    }
+
+    public static String AssessmentDone(StudentIdentifier student){
+        return student.getStudentId()+" hat die Bewertung noch nicht abgeschlossen.";
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/ProjectPhase.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ProjectPhase.java
similarity index 75%
rename from gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/ProjectPhase.java
rename to gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ProjectPhase.java
index ba8bffad..433ef0c9 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/ProjectPhase.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/core/states/model/ProjectPhase.java
@@ -1,4 +1,4 @@
-package unipotsdam.gf.core.states;
+package unipotsdam.gf.core.states.model;
 
 public enum ProjectPhase {
     CourseCreation, GroupFormation, DossierFeedback, Execution, Assessment,
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
index b07b9908..1892ec39 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
@@ -1,5 +1,6 @@
 package unipotsdam.gf.interfaces;
 
+import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
 import java.util.ArrayList;
@@ -42,6 +43,7 @@ public interface IPeerAssessment {
      * @param totalPerformance @return
      */
     Map<StudentIdentifier, Double> calculateAssessment(ArrayList<Performance> totalPerformance); // calculates marks for every performance and writes it to an array
+    Map<StudentIdentifier, Double> calculateAssessment(String projectId, String method);
 
 
     /**
@@ -95,5 +97,8 @@ public interface IPeerAssessment {
     void deleteQuiz(String quizId);
 
     String whatToRate(StudentIdentifier student);
-    Map<StudentIdentifier, Double> calculateAssessment(String projectId, String method);
+
+    Boolean allAssessmentsDone(String projectId);
+
+    void assignMissingAssessmentTasks(Project project);
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPhases.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPhases.java
index 976d67d1..5a11474e 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPhases.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPhases.java
@@ -1,7 +1,7 @@
 package unipotsdam.gf.interfaces;
 
 import unipotsdam.gf.core.management.project.Project;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 
 public interface IPhases {
     /**
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java
index 8283f9a2..866d46be 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/FBAssessement.java
@@ -1,5 +1,6 @@
 package unipotsdam.gf.modules.assessment.controller.service;
 
+import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
 import java.util.ArrayList;
@@ -84,6 +85,16 @@ public class FBAssessement extends AssessmentDAO {
         return null;
     }
 
+    @Override
+    public Boolean allAssessmentsDone(String projectId) {
+        return null;
+    }
+
+    @Override
+    public void assignMissingAssessmentTasks(Project project) {
+
+    }
+
     @Override
     public Map<StudentIdentifier, Double> calculateAssessment(String projectId, String method) {
         return null;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java
index d65c047c..871b3c94 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessment.java
@@ -1,5 +1,6 @@
 package unipotsdam.gf.modules.assessment.controller.service;
 
+import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.interfaces.IPeerAssessment;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
@@ -59,6 +60,16 @@ public class PeerAssessment implements IPeerAssessment {
         return "done";
     }
 
+    @Override
+    public Boolean allAssessmentsDone(String projectId) {
+        return null;
+    }
+
+    @Override
+    public void assignMissingAssessmentTasks(Project project) {
+
+    }
+
     @Override
     public Map<StudentIdentifier, Double> calculateAssessment(ArrayList<Performance> totalPerformance) {
         Map<StudentIdentifier, Double> quizMean = new HashMap<>(quizGrade(totalPerformance));
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java
index c00f67d1..a5cb9fae 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/PeerAssessmentDummy.java
@@ -2,6 +2,7 @@ package unipotsdam.gf.modules.assessment.controller.service;
 
 import unipotsdam.gf.assignments.Assignee;
 import unipotsdam.gf.assignments.NotImplementedLogger;
+import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.interfaces.IPeerAssessment;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
@@ -88,6 +89,16 @@ public class PeerAssessmentDummy implements IPeerAssessment {
         return null;
     }
 
+    @Override
+    public Boolean allAssessmentsDone(String projectId) {
+        return true;
+    }
+
+    @Override
+    public void assignMissingAssessmentTasks(Project project) {
+
+    }
+
     @Override
     public Map<StudentIdentifier, Double> calculateAssessment(String projectId, String method) {
         return null;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java
index 443ce212..0bf9d071 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/peer2peerfeedback/DummyFeedback.java
@@ -16,11 +16,12 @@ import java.util.ArrayList;
 public class DummyFeedback implements Feedback {
 
     /**
-     * Utility to creaty dummy data for students
+     * Utility to create dummy data for students
      */
     PodamFactory factory = new PodamFactoryImpl();
 
     private static Boolean missingTaskAssigned = false;
+    private Boolean constraintsFulfilled = false;
 
 
     public DummyFeedback() {
@@ -52,10 +53,11 @@ public class DummyFeedback implements Feedback {
 
     @Override
     public Boolean checkFeedbackConstraints(Project project) {
-        // TODO implement cornstaints
+        // TODO implement constraints
         NotImplementedLogger.logAssignment(Assignee.KATHARINA, Feedback.class, "check Feedback constraints",
                 "checking feedback constraints ");
-        return missingTaskAssigned;
+        constraintsFulfilled = true;
+        return constraintsFulfilled;
     }
 
     @Override
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/view/Messages.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/view/Messages.java
index 986c7d74..cffc1eae 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/view/Messages.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/view/Messages.java
@@ -17,4 +17,9 @@ public class Messages {
         // TODO add link to site + markup
         return "Die Bewertungsphase hat begonnen. Bitte geht auf ... und macht ....";
     }
+
+    public static String CourseEnds(Project project) {
+        // TODO add link to site + markup
+        return "Die Bewertung ist abgeschlossen. Sie erhalten ihre Bewertung in Kürze.";
+    }
 }
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
index 20220989..284258c1 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/ActivityFlowTest.java
@@ -17,7 +17,7 @@ import unipotsdam.gf.core.management.Management;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.project.ProjectConfiguration;
 import unipotsdam.gf.core.management.user.User;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import unipotsdam.gf.modules.groupfinding.GroupFormationMechanism;
 import unipotsdam.gf.modules.groupfinding.GroupfindingCriteria;
 import unipotsdam.gf.modules.journal.model.Journal;
diff --git a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java
index 9d59d39a..fa948cc8 100644
--- a/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java
+++ b/gemeinsamforschen/src/test/java/unipotsdam/gf/interfaces/PhaseTest.java
@@ -10,7 +10,7 @@ import unipotsdam.gf.core.management.ManagementImpl;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.core.management.user.UserProfile;
-import unipotsdam.gf.core.states.ProjectPhase;
+import unipotsdam.gf.core.states.model.ProjectPhase;
 import javax.inject.Inject;
 
 public class PhaseTest {
-- 
GitLab