From d505642866e40147882e5838458cf9c737885f1a Mon Sep 17 00:00:00 2001
From: Julian Dehne <julian.dehne@uni-potsdam.de>
Date: Thu, 18 Oct 2018 14:42:58 +0200
Subject: [PATCH] bugfixing: fixed feedbackassignment

---
 .../gf/config/GFApplicationBinder.java        |  2 ++
 .../gf/modules/feedback/FeedbackImpl.java     |  6 ++--
 .../controller/SubmissionController.java      | 36 ++++++++++---------
 .../gf/process/DossierCreationProcess.java    |  8 +----
 .../unipotsdam/gf/process/tasks/TaskDAO.java  | 10 ++----
 5 files changed, 29 insertions(+), 33 deletions(-)

diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java
index bc8d28a3..f0307c3b 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/config/GFApplicationBinder.java
@@ -6,6 +6,7 @@ import unipotsdam.gf.modules.annotation.controller.AnnotationController;
 import unipotsdam.gf.modules.assessment.controller.service.AssessmentDBCommunication;
 import unipotsdam.gf.modules.assessment.controller.service.PeerAssessment;
 import unipotsdam.gf.modules.communication.service.CommunicationDummyService;
+import unipotsdam.gf.modules.feedback.FeedbackImpl;
 import unipotsdam.gf.modules.group.DummyProjectCreationService;
 import unipotsdam.gf.modules.group.GroupDAO;
 import unipotsdam.gf.modules.group.GroupfindingImpl;
@@ -55,6 +56,7 @@ public class GFApplicationBinder extends AbstractBinder {
         bind(ProjectDAO.class).to(ProjectDAO.class);
         bind(GroupDAO.class).to(GroupDAO.class);
         bind(TaskDAO.class).to(TaskDAO.class);
+        bind(FeedbackImpl.class).to(Feedback.class);
 
         bindMore();
     }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/FeedbackImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/FeedbackImpl.java
index 30063544..fabd7d37 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/FeedbackImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/feedback/FeedbackImpl.java
@@ -43,11 +43,11 @@ public class FeedbackImpl implements Feedback {
             case SingleUser:
                 List<User> usersByProjectName = userDAO.getUsersByProjectName(project.getName());
                 User firstUser = usersByProjectName.get(0);
-                User lastUser = usersByProjectName.get(usersByProjectName.size());
+                User lastUser = usersByProjectName.get(usersByProjectName.size()-1);
                 submissionController.updateFullSubmission(firstUser, lastUser);
-                for (int i = 0; i<usersByProjectName.size()-1;i++) {
-                    User submissionOwner = usersByProjectName.get(i+1);
+                for (int i = 0; i <= usersByProjectName.size()-2;i++) {
                     User feedbackGiver =usersByProjectName.get(i);
+                    User submissionOwner = usersByProjectName.get(i+1);
                     submissionController.updateFullSubmission(submissionOwner, feedbackGiver);
                 }
                 break;
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java
index 7574532b..b5aeb648 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/submission/controller/SubmissionController.java
@@ -585,14 +585,14 @@ public class SubmissionController implements ISubmission, HasProgress {
      * link the full submission with a user who is supposed to give feedback to it.
      * this creates a 1:1 relationship between user and submissions
      * in case gorup work is selected the relationship should be with a group instead
+     *
      * @param submissionOwner
      * @param feedbackGiver
      */
     public void updateFullSubmission(User submissionOwner, User feedbackGiver) {
         connection.connect();
         String query = "update fullsubmissions set feedbackUser = ? where user = ?";
-        connection.issueUpdateStatement(query, feedbackGiver.getEmail(),
-                submissionOwner.getEmail());
+        connection.issueUpdateStatement(query, feedbackGiver.getEmail(), submissionOwner.getEmail());
         connection.close();
         // TODO implement linking submission with group
     }
@@ -601,20 +601,22 @@ public class SubmissionController implements ISubmission, HasProgress {
      * @param target
      * @return
      */
-    public FeedbackTaskData getFeedbackTaskData(User target) {
+    public FeedbackTaskData getFeedbackTaskData(User target, Project project) {
         connection.connect();
 
-        String query = "SELECT * from fullsubmissions where feedbackUser = ?";
-        VereinfachtesResultSet vereinfachtesResultSet = connection.issueSelectStatement(query, target.getEmail());
-        vereinfachtesResultSet.next();
-        String submissionId = vereinfachtesResultSet.getString("id");
-        String projectName = vereinfachtesResultSet.getString("projectName");
-        Category category = Category.RECHERCHE;
-        FullSubmission fullSubmission = new FullSubmission(submissionId);
-        fullSubmission.setProjectName(projectName);
-        connection.close();
-
-        return new FeedbackTaskData(target, fullSubmission, category);
+        String query = "SELECT * from fullsubmissions where feedbackUser = ? and projectName = ?";
+        VereinfachtesResultSet vereinfachtesResultSet = connection.issueSelectStatement(query, target.getEmail(),
+                project.getName());
+        if (vereinfachtesResultSet.next()) {
+            String submissionId = vereinfachtesResultSet.getString("id");
+            String projectName = vereinfachtesResultSet.getString("projectName");
+            Category category = Category.RECHERCHE;
+            FullSubmission fullSubmission = new FullSubmission(submissionId);
+            fullSubmission.setProjectName(projectName);
+            connection.close();
+            return new FeedbackTaskData(target, fullSubmission, category);
+        } else
+            return null;
     }
 
     public int getFinalizedDossiersCount(Project project) {
@@ -642,7 +644,8 @@ public class SubmissionController implements ISubmission, HasProgress {
         progressData.setNumberNeeded(dossiersNeeded(project));
         List<User> strugglersWithSubmission = getStrugglersWithSubmission(project);
         progressData.setUsersMissing(strugglersWithSubmission);
-        progressData.setAlmostComplete((progressData.getNumberNeeded()/progressData.getNumberOfCompletion()) <= (1/10));
+        progressData
+                .setAlmostComplete((progressData.getNumberOfCompletion() / progressData.getNumberNeeded()) <= (1 / 10));
         return progressData;
     }
 
@@ -694,8 +697,9 @@ public class SubmissionController implements ISubmission, HasProgress {
     public List<User> getAllUsersWithFeedbackGiven(Project project) {
         List<User> result = new ArrayList<>();
         connection.connect();
-        String query = "select * feedbackUser from fullsubmissions where projectName = ?";
+        String query = "select * from fullsubmissions where projectName = ?";
         VereinfachtesResultSet vereinfachtesResultSet = connection.issueSelectStatement(query, project.getName());
+
         while (vereinfachtesResultSet.next()) {
             result.add(userDAO.getUserByEmail(vereinfachtesResultSet.getString("feedbackUser")));
         }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java
index 6392aeed..7bb9373b 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/DossierCreationProcess.java
@@ -25,12 +25,6 @@ public class DossierCreationProcess {
     @Inject
     private SubmissionController submissionController;
 
-    @Inject
-    private Management management;
-
-    @Inject
-    private UserDAO userDAO;
-
     @Inject
     private TaskDAO taskDAO;
 
@@ -98,7 +92,7 @@ public class DossierCreationProcess {
 
             // persist tasks for feedback
             taskDAO.persistMemberTask(
-                    new Project(fullSubmission.getProjectName()), TaskName.GIVE_FEEDBACK, Phase.DossierFeedback);
+                    project, TaskName.GIVE_FEEDBACK, Phase.DossierFeedback);
         }
     }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java
index 9d15f737..eba823b5 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/process/tasks/TaskDAO.java
@@ -174,7 +174,9 @@ public class TaskDAO {
                 }
 
                 case GIVE_FEEDBACK: {
-                    Task feedbackTask = getFeedbackTask(user, vereinfachtesResultSet);
+                    Task feedbackTask = getGeneralTask(vereinfachtesResultSet);
+                    feedbackTask.setTaskData(submissionController.getFeedbackTaskData(user, project));
+                    feedbackTask.setHasRenderModel(true);
                     result.add(feedbackTask);
                     break;
                 }
@@ -268,10 +270,4 @@ public class TaskDAO {
         persist(project, feedbackTaskData.getTarget(), TaskName.GIVE_FEEDBACK, Phase.DossierFeedback, TaskType.LINKED);
     }
 
-    public  Task getFeedbackTask(User target, VereinfachtesResultSet vereinfachtesResultSet) {
-        Task task = getGeneralTask(vereinfachtesResultSet);
-        FeedbackTaskData feedbackTaskData = submissionController.getFeedbackTaskData(target);
-        task.setTaskData(feedbackTaskData);
-        return task;
-    }
 }
-- 
GitLab