From 70da687ea488ecfbecffc00b07669039fe221ea2 Mon Sep 17 00:00:00 2001
From: Axel <wiepke@uni-potsdam.de>
Date: Mon, 3 Sep 2018 14:14:21 +0200
Subject: [PATCH] fix: #72 contribution rating is done for a group now. feat:
 first approach of solving the group Tasks (getStudentsInSameGroup works)

---
 .../gf/interfaces/IPeerAssessment.java        |  10 +-
 .../service/AssessmentDBCommunication.java    |  61 +++++--
 .../controller/service/FBAssessement.java     |   8 +-
 .../controller/service/PeerAssessment.java    |  16 +-
 .../service/PeerAssessmentDummy.java          |   8 +-
 .../assessment/controller/view/QuizView.java  |  20 ++-
 .../groupfinding/GroupfindingImpl.java        |   8 +
 .../groupfinding/service/GroupDAO.java        |  34 ++++
 .../modules/groupfinding/view/GroupView.java  |  24 +++
 .../main/webapp/assets/js/finalAssessment.js  | 162 +++++++++++++++---
 .../main/webapp/assets/js/rateContribution.js |  26 ++-
 .../main/webapp/pages/finalAssessments.jsp    |   8 +-
 .../main/webapp/pages/rateContribution.jsp    |   3 +-
 13 files changed, 325 insertions(+), 63 deletions(-)
 create mode 100644 gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupDAO.java
 create mode 100644 gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/view/GroupView.java

diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
index d2109728..842513f4 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/interfaces/IPeerAssessment.java
@@ -1,6 +1,5 @@
 package unipotsdam.gf.interfaces;
 
-import unipotsdam.gf.modules.assessment.QuizAnswer;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
 import java.util.ArrayList;
@@ -76,7 +75,14 @@ public interface IPeerAssessment {
      */
     void postPeerRating(ArrayList<PeerRating> peerRatings, String projectId);
 
-    void postContributionRating(StudentIdentifier student,
+    /**
+     *
+     * @param student
+     * @return
+     */
+    Integer whichGroupToRate(StudentIdentifier student);
+
+    void postContributionRating(String groupId,
                                 String fromPeer,
                                 Map<String, Integer> contributionRating);
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/AssessmentDBCommunication.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/AssessmentDBCommunication.java
index eaa910c0..a8163cb6 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/AssessmentDBCommunication.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/service/AssessmentDBCommunication.java
@@ -51,13 +51,25 @@ class AssessmentDBCommunication {
         return result;
     }
 
-    ArrayList<Map<String, Double>> getContributionRating(StudentIdentifier student) {
-        ArrayList<Map<String, Double>> result = new ArrayList<>();
+    Integer getGroupByStudent(StudentIdentifier student) {
+        Integer result;
         MysqlConnect connect = new MysqlConnect();
         connect.connect();
-        String mysqlRequest = "SELECT * FROM `contributionrating` WHERE `projectId`=? AND `studentId`=?";
+        String mysqlRequest = "SELECT groupId FROM `groupuser` WHERE `projectId`=? AND `studentId`=?";
         VereinfachtesResultSet vereinfachtesResultSet =
                 connect.issueSelectStatement(mysqlRequest, student.getProjectId(), student.getStudentId());
+        vereinfachtesResultSet.next();
+        result = vereinfachtesResultSet.getInt("groupId");
+        return result;
+    }
+
+    ArrayList<Map<String, Double>> getContributionRating(Integer groupId) {
+        ArrayList<Map<String, Double>> result = new ArrayList<>();
+        MysqlConnect connect = new MysqlConnect();
+        connect.connect();
+        String mysqlRequest = "SELECT * FROM `contributionrating` WHERE `groupId`=?";
+        VereinfachtesResultSet vereinfachtesResultSet =
+                connect.issueSelectStatement(mysqlRequest, groupId);
         boolean next = vereinfachtesResultSet.next();
         while (next) {
             Map<String, Double> contributionRating = new HashMap<>();
@@ -122,20 +134,47 @@ class AssessmentDBCommunication {
         connect.close();
     }
 
-    //todo: Studentidentifier student should be replaced by groupID. then you get the students in the group ...
-    void writeContributionRatingToDB(StudentIdentifier student, String fromStudent, Map<String, Integer> contributionRating) {
+    Integer getWhichGroupToRate(StudentIdentifier student){
+        Integer result;
+        MysqlConnect connect = new MysqlConnect();
+        connect.connect();
+        String mysqlRequest1 = "SELECT groupId FROM `groupuser` WHERE `projectId`=? AND `studentId`=? ";
+        VereinfachtesResultSet vereinfachtesResultSet1 =
+                connect.issueSelectStatement(mysqlRequest1, student.getProjectId(),student.getStudentId());
+        vereinfachtesResultSet1.next();
+        Integer groupId = vereinfachtesResultSet1.getInt("groupId");
+
+        String mysqlRequest2 = "SELECT DISTINCT groupId FROM `groupuser` WHERE `projectId`=? ";
+        VereinfachtesResultSet vereinfachtesResultSet2 =
+                connect.issueSelectStatement(mysqlRequest2, student.getProjectId());
+        Boolean next = vereinfachtesResultSet2.next();
+        result = vereinfachtesResultSet2.getInt("groupId");
+        while(next){
+            if (vereinfachtesResultSet2.getInt("groupId") == groupId){
+                next = vereinfachtesResultSet2.next();
+                if (next){
+                    result = vereinfachtesResultSet2.getInt("groupId");
+                }
+            }else{
+                next = vereinfachtesResultSet2.next();
+            }
+
+        }
+        connect.close();
+        return result;
+    }
+
+    void writeContributionRatingToDB(String groupId, String fromStudent, Map<String, Integer> contributionRating) {
         MysqlConnect connect = new MysqlConnect();
         connect.connect();
         String mysqlRequest = "INSERT INTO `contributionrating`(" +
-                "`studentId`, " +
-                "`projectId`, " +
+                "`groupId`, " +
                 "`fromPeer`, " +
                 "`dossier`, " +
                 "`research`) " +
-                "VALUES (?,?,?,?,?,?)";
+                "VALUES (?,?,?,?)";
         connect.issueInsertOrDeleteStatement(mysqlRequest,
-                student.getStudentId(),
-                student.getProjectId(),
+                groupId,
                 fromStudent,
                 contributionRating.get("dossier"),
                 contributionRating.get("research")
@@ -155,7 +194,7 @@ class AssessmentDBCommunication {
         connect.close();
     }
 
-    public Map<String, Boolean> getAnswers(String projectId, String question) {
+    Map<String, Boolean> getAnswers(String projectId, String question) {
         MysqlConnect connect = new MysqlConnect();
         connect.connect();
         Map<String, Boolean> result = new HashMap<>();
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 ef9dd768..9279df51 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,6 +1,5 @@
 package unipotsdam.gf.modules.assessment.controller.service;
 
-import unipotsdam.gf.modules.assessment.QuizAnswer;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
 import java.util.ArrayList;
@@ -61,7 +60,12 @@ public class FBAssessement extends AssessmentDAO {
     }
 
     @Override
-    public void postContributionRating(StudentIdentifier student, String fromStudent, Map<String, Integer> contributionRating) {
+    public Integer whichGroupToRate(StudentIdentifier student) {
+        return null;
+    }
+
+    @Override
+    public void postContributionRating(String groupId, String fromStudent, Map<String, Integer> contributionRating) {
 
     }
 
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 820adb76..3aafc6e4 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,8 +1,6 @@
 package unipotsdam.gf.modules.assessment.controller.service;
 
-import unipotsdam.gf.core.management.user.User;
 import unipotsdam.gf.interfaces.IPeerAssessment;
-import unipotsdam.gf.modules.assessment.QuizAnswer;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
 import java.util.*;
@@ -64,11 +62,14 @@ public class PeerAssessment implements IPeerAssessment {
         List<String> students = new AssessmentDBCommunication().getStudents(projectId);
         //for each student
         for (String student : students) {
+            Integer groupId;
             Performance performance = new Performance();
             StudentIdentifier studentIdentifier = new StudentIdentifier(projectId, student);
+            groupId = new AssessmentDBCommunication().getGroupByStudent(studentIdentifier);
             List<Integer> answeredQuizzes = new AssessmentDBCommunication().getAnsweredQuizzes(studentIdentifier);
             ArrayList<Map<String, Double>> workRating = new AssessmentDBCommunication().getWorkRating(studentIdentifier);
-            ArrayList<Map<String, Double>> contributionRating = new AssessmentDBCommunication().getContributionRating(studentIdentifier);
+            ArrayList<Map<String, Double>> contributionRating =
+                    new AssessmentDBCommunication().getContributionRating(groupId);
             performance.setStudentIdentifier(studentIdentifier);
             performance.setQuizAnswer(answeredQuizzes);
             performance.setWorkRating(cheatChecker(workRating, cheatCheckerMethods.variance));
@@ -208,10 +209,15 @@ public class PeerAssessment implements IPeerAssessment {
     }
 
     @Override
-    public void postContributionRating(StudentIdentifier student,
+    public Integer whichGroupToRate(StudentIdentifier student) {
+        return new AssessmentDBCommunication().getWhichGroupToRate(student);
+    }
+
+    @Override
+    public void postContributionRating(String groupId,
                                        String fromStudent,
                                        Map<String, Integer> contributionRating) {
-        new AssessmentDBCommunication().writeContributionRatingToDB(student, fromStudent, contributionRating);
+        new AssessmentDBCommunication().writeContributionRatingToDB(groupId, fromStudent, contributionRating);
     }
 
     @Override
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 78291cec..120e2603 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
@@ -3,7 +3,6 @@ package unipotsdam.gf.modules.assessment.controller.service;
 import unipotsdam.gf.assignments.Assignee;
 import unipotsdam.gf.assignments.NotImplementedLogger;
 import unipotsdam.gf.interfaces.IPeerAssessment;
-import unipotsdam.gf.modules.assessment.QuizAnswer;
 import unipotsdam.gf.modules.assessment.controller.model.*;
 
 import java.util.*;
@@ -66,7 +65,12 @@ public class PeerAssessmentDummy implements IPeerAssessment {
     }
 
     @Override
-    public void postContributionRating(StudentIdentifier student, String fromStudent, Map<String, Integer> contributionRating) {
+    public Integer whichGroupToRate(StudentIdentifier student) {
+        return null;
+    }
+
+    @Override
+    public void postContributionRating(String groupId, String fromStudent, Map<String, Integer> contributionRating) {
 
     }
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java
index e41b15a6..35b0b88e 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/assessment/controller/view/QuizView.java
@@ -39,6 +39,7 @@ public class QuizView {
     }
     //////////////////////////////////////////funktioniert///////////////////////////////////////
 
+
     @POST
     @Consumes(MediaType.APPLICATION_JSON)
     @Path("/peerRating/project/{projectId}")
@@ -46,15 +47,22 @@ public class QuizView {
         peer.postPeerRating(peerRatings, projectId);
     }
 
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/groupRate/project/{projectId}/student/{studentId}")
+    public Integer whichGroupToRate(@PathParam("projectId") String projectId, @PathParam("studentId") String studentId)
+    {
+        StudentIdentifier student = new StudentIdentifier(projectId,studentId);
+        return peer.whichGroupToRate(student);
+    }
+
     @POST
     @Consumes(MediaType.APPLICATION_JSON)
-    @Path("/contributionRating/projectId/{projectId}/studentId/{studentId}/fromPeer/{fromPeer}")
+    @Path("/contributionRating/group/{groupId}/fromPeer/{fromPeer}")
     public void postContributionRating(Map<String, Integer> contributionRatings,
-                                       @PathParam("projectId") String projectId,
-                                       @PathParam("studentId") String studentId,
+                                       @PathParam("groupId") String groupId,
                                        @PathParam("fromPeer") String fromPeer) throws IOException {
-        StudentIdentifier student = new StudentIdentifier(projectId, studentId);
-        peer.postContributionRating(student, fromPeer, contributionRatings);
+        peer.postContributionRating(groupId, fromPeer, contributionRatings);
     }
 
     @POST
@@ -140,7 +148,7 @@ public class QuizView {
         return getTotalAssessment(studentIdentifier);
     }  //////////dummy/////////////funktioniert wie geplant//////////////////////////////////
 
-    public ArrayList<Performance> getTotalAssessment(StudentIdentifier studentIdentifier) {
+    private ArrayList<Performance> getTotalAssessment(StudentIdentifier studentIdentifier) {
         return peer.getTotalAssessment(studentIdentifier);
     }  /////////dummy/////////////funktioniert wie geplant//////////////////////////////////
 
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/GroupfindingImpl.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/GroupfindingImpl.java
index 8987f63c..78f8621f 100644
--- a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/GroupfindingImpl.java
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/GroupfindingImpl.java
@@ -3,7 +3,11 @@ package unipotsdam.gf.modules.groupfinding;
 import unipotsdam.gf.core.management.group.Group;
 import unipotsdam.gf.core.management.project.Project;
 import unipotsdam.gf.interfaces.IGroupFinding;
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
+import unipotsdam.gf.modules.groupfinding.service.GroupCreationService;
+import unipotsdam.gf.modules.groupfinding.service.GroupDAO;
 
+import java.util.ArrayList;
 import java.util.List;
 
 public class GroupfindingImpl implements IGroupFinding {
@@ -27,4 +31,8 @@ public class GroupfindingImpl implements IGroupFinding {
     public void formGroups(GroupFormationMechanism groupFindingMechanism) {
 
     }
+
+    public ArrayList<String> getStudentsInSameGroup(StudentIdentifier student){
+        return new GroupDAO().getStudentsInSameGroupAs(student);
+    }
 }
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupDAO.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupDAO.java
new file mode 100644
index 00000000..ffa94b4e
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/service/GroupDAO.java
@@ -0,0 +1,34 @@
+package unipotsdam.gf.modules.groupfinding.service;
+
+import unipotsdam.gf.core.database.mysql.MysqlConnect;
+import unipotsdam.gf.core.database.mysql.VereinfachtesResultSet;
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
+
+import java.util.ArrayList;
+
+public class GroupDAO {
+
+    public ArrayList<String> getStudentsInSameGroupAs(StudentIdentifier student) {
+        MysqlConnect connect = new MysqlConnect();
+        connect.connect();
+        ArrayList<String> result = new ArrayList<>();
+        Integer groupId;
+        String mysqlRequest1 = "SELECT groupId FROM `groupuser` WHERE `projectId`=? AND `studentId`=?";
+        VereinfachtesResultSet vereinfachtesResultSet1 =
+                connect.issueSelectStatement(mysqlRequest1, student.getProjectId(), student.getStudentId());
+        vereinfachtesResultSet1.next();
+        groupId = vereinfachtesResultSet1.getInt("groupId");
+        String mysqlRequest2 = "SELECT * FROM `groupuser` WHERE `groupId`=?";
+        VereinfachtesResultSet vereinfachtesResultSet2 =
+                connect.issueSelectStatement(mysqlRequest2, groupId);
+        boolean next2 = vereinfachtesResultSet2.next();
+        while(next2){
+            String peer = vereinfachtesResultSet2.getString("studentId");
+            if (!peer.equals( student.getStudentId()))
+                result.add(peer);
+            next2=vereinfachtesResultSet2.next();
+        }
+        connect.close();
+        return result;
+    }
+}
diff --git a/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/view/GroupView.java b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/view/GroupView.java
new file mode 100644
index 00000000..0a9f8c66
--- /dev/null
+++ b/gemeinsamforschen/src/main/java/unipotsdam/gf/modules/groupfinding/view/GroupView.java
@@ -0,0 +1,24 @@
+package unipotsdam.gf.modules.groupfinding.view;
+
+import unipotsdam.gf.modules.assessment.controller.model.StudentIdentifier;
+import unipotsdam.gf.modules.groupfinding.GroupfindingImpl;
+
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import java.io.IOException;
+import java.util.ArrayList;
+
+@Path("/group")
+public class GroupView {
+    private GroupfindingImpl groupfinding = new GroupfindingImpl();
+
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    @Path("/project/{projectId}/student/{studentId}")
+    public ArrayList<String> getStudentsInSameGroup(@PathParam("projectId") String projectId, @PathParam("studentId") String studentId) throws IOException {
+        //peer.postPeerRating(peerRatings, projectId);
+        StudentIdentifier student = new StudentIdentifier(projectId, studentId);
+        return groupfinding.getStudentsInSameGroup(student);
+    }
+
+}
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/finalAssessment.js b/gemeinsamforschen/src/main/webapp/assets/js/finalAssessment.js
index ca491672..d8e9fbcb 100644
--- a/gemeinsamforschen/src/main/webapp/assets/js/finalAssessment.js
+++ b/gemeinsamforschen/src/main/webapp/assets/js/finalAssessment.js
@@ -1,66 +1,176 @@
-$(document).ready(function() {
+$(document).ready(function () {
     $('#notAllRated').hide();
     $(".carousel").carousel({
         interval: false
     });
+    buildTablesForPeers();
+
     $('#assessThePeer').on("click", function () {
         assessPeer();
     });
-    $('#btnJournalStudent1').on("click", function(){
-        $('#eJournalStudent1').toggle();
-    });
-    $('#btnJournalStudent2').on("click", function(){
-        $('#eJournalStudent2').toggle();
-    });
-    $('#btnJournalStudent3').on("click", function(){
-        $('#eJournalStudent3').toggle();
-    });
 });
 
-function assessPeer(){
-    let peerStudents =$('.peerStudent');
+function buildTablesForPeers() {
+    let studentId = $('#user').html().trim();
+    let projectId = $('#projectId').html().trim();
+        $.ajax({
+            url: '../rest/group/project/' + projectId + '/student/' + studentId,
+            type: 'GET',
+            headers: {
+                "Content-Type": "application/json",
+                "Cache-Control": "no-cache"
+            },
+            success: function (peers) {
+                let div = document.getElementById('peerTable');
+                for (let peer = 0; peer < peers.length; peer++) {
+                    let tablePeer = document.createElement('DIV');
+                    if (peer === 0) {
+                        tablePeer.className = "item active";
+                    } else {
+                        tablePeer.className = "item";
+                    }
+                    let innerPeerTable = '<table class="table-striped peerStudent" id="' + peers[peer] + '">' +
+                        '<tr>' +
+                        '<td align="center">' +
+                        '<img src="../assets/img/1.jpg" alt="' + peers[peer] + '" style="width:20%;">' +
+                        '</td>' +
+                        '</tr>' +
+                        '<tr>' +
+                        '<td align="center">' +
+                        '<h3>Verantwortungsbewusstsein</h3>' +
+                        '</td>' +
+                        '</tr>' +
+                        '<tr>' +
+                        '<td align="center">' +
+                        '<label>stark ausgeprägt<input type="radio" value="5" name="responsibility' + peers[peer] + '"></label>' +
+                        '<input type="radio" value="4" name="responsibility' + peers[peer] + '">' +
+                        '<input type="radio" value="3" name="responsibility' + peers[peer] + '">' +
+                        '<input type="radio" value="2" name="responsibility' + peers[peer] + '">' +
+                        '<label><input type="radio" value="1" name="responsibility' + peers[peer] + '">ungenügend</label>' +
+                        '</td>' +
+                        '</tr>' +
+                        '<tr>' +
+                        '<td align="center">' +
+                        '<h3>Anteil am Produkt</h3>' +
+                        '</td>' +
+                        '</tr>' +
+                        '<tr>' +
+                        '<td align="center">' +
+                        '<label>großer Anteil<input type="radio" value="5" name="partOfWork' + peers[peer] + '"></label>' +
+                        '<input type="radio" value="4" name="partOfWork' + peers[peer] + '">' +
+                        '<input type="radio" value="3" name="partOfWork' + peers[peer] + '">' +
+                        '<input type="radio" value="2" name="partOfWork' + peers[peer] + '">' +
+                        '<label><input type="radio" value="1" name="partOfWork' + peers[peer] + '">geringer Anteil</label>' +
+                        '</td>' +
+                        '</tr>' +
+                        '<tr>' +
+                        '<td align="center">' +
+                        '<h3>Kooperationsbereitschaft</h3>' +
+                        '</td>' +
+                        '</tr>' +
+                        '<tr>' +
+                        '<td align="center">' +
+                        '<label>sehr kooperativ<input type="radio" value="5" name="cooperation' + peers[peer] + '">' +
+                        '</label>' +
+                        '<input type="radio" value="4" name="cooperation' + peers[peer] + '">' +
+                        '<input type="radio" value="3" name="cooperation' + peers[peer] + '">' +
+                        '<input type="radio" value="2" name="cooperation' + peers[peer] + '">' +
+                        '<label><input type="radio" value="1" name="cooperation' + peers[peer] + '">nicht kooperativ</label>' +
+                        '</td>' +
+                        '</tr>' +
+                        '<tr>' +
+                        '<td align="center">' +
+                        '<h3>Disskusionsfähigkeit</h3>' +
+                        '</td>' +
+                        '</tr>' +
+                        '<tr>' +
+                        '<td align="center">' +
+                        '<label>gut kommuniziert und Meinung vertreten<input type="radio" value="5" name="communication' + peers[peer] + '">' +
+                        '</label>' +
+                        '<input type="radio" value="4" name="communication' + peers[peer] + '">' +
+                        '<input type="radio" value="3" name="communication' + peers[peer] + '">' +
+                        '<input type="radio" value="2" name="communication' + peers[peer] + '">' +
+                        '<label><input type="radio" value="1" name="communication' + peers[peer] + '">keine Meinung und schlecht kommuniziert</label>' +
+                        '</td>' +
+                        '</tr>' +
+                        '<tr>' +
+                        '<td align="center">' +
+                        '<h3>Selbstständigkeit</h3>' +
+                        '</td>' +
+                        '</tr>' +
+                        '<tr>' +
+                        '<td align="center">' +
+                        '<label>selbstständig<input type="radio" value="5" name="autonomous' + peers[peer] + '">' +
+                        '</label>' +
+                        '<input type="radio" value="4" name="autonomous' + peers[peer] + '">' +
+                        '<input type="radio" value="3" name="autonomous' + peers[peer] + '">' +
+                        '<input type="radio" value="2" name="autonomous' + peers[peer] + '">' +
+                        '<label><input type="radio" value="1" name="autonomous' + peers[peer] + '">abhängig</label>' +
+                        '</td>' +
+                        '</tr>' +
+                        '</table>' +
+                        '<div align="center">' +
+                        '   <button class="btn btn-primary" id="btnJournal' + peers[peer] + '">' +
+                        '   zeige Lernzieltagebuch</button>' +
+                        '   <div id="eJournal' + peers[peer] + '">Fasel Blubba Bla</div>' +
+                        '</div>';
+                    tablePeer.innerHTML = innerPeerTable;
+                    div.appendChild(tablePeer);
+                    $('#btnJournal' + peers[peer]).on("click", function () {
+                        $('#eJournal' + peers[peer]).toggle();
+                    });
+                }
+            },
+            error: function () {
+            }
+        }
+    );
+}
+
+function assessPeer() {
+    let peerStudents = $('.peerStudent');
     ///////initialize variables///////
-    let dataP = new Array(peerStudents.size());
-    let rateThis = ['responsibility','partOfWork','cooperation','communication','autonomous'];
+    let dataP = new Array(peerStudents.length);
+    let rateThis = ['responsibility', 'partOfWork', 'cooperation', 'communication', 'autonomous'];
 
     ///////read values from html///////
-    for (let peer=0; peer< peerStudents.length; peer++){
+    for (let peer = 0; peer < peerStudents.length; peer++) {
         let workRating = {};
         let peerRating = {
             "fromPeer": $('#user').html().trim(),
             "toPeer": peerStudents[peer].id,
             "workRating": {}
         };
-        for (let rate=0; rate<rateThis.length; rate++ ){
+        for (let rate = 0; rate < rateThis.length; rate++) {
             let category = rateThis[rate];
-            workRating[category]=($('input[name='+rateThis[rate]+peerStudents[peer].id+']:checked').val());
+            workRating[category] = ($('input[name=' + rateThis[rate] + peerStudents[peer].id + ']:checked').val());
         }
 
         peerRating.workRating = workRating;
         //////write values in Post-Variable
-        dataP[peer]=peerRating;
+        dataP[peer] = peerRating;
     }
-    for (let peer=0; peer< dataP.length; peer++){
-        for (let workRating=0; workRating<rateThis.length;workRating++){
-            if(dataP[peer].workRating[rateThis[workRating]]===undefined){
+    for (let peer = 0; peer < dataP.length; peer++) {
+        for (let workRating = 0; workRating < rateThis.length; workRating++) {
+            if (dataP[peer].workRating[rateThis[workRating]] === undefined) {
                 $('#notAllRated').show();
                 return;
             }
         }
     }
-    let projectId=$('#projectId').html().trim();
+    let projectId = $('#projectId').html().trim();
     $.ajax({
-        url:'../rest/assessments/peerRating/project/'+projectId,
+        url: '../rest/assessments/peerRating/project/' + projectId,
         type: 'POST',
         headers: {
             "Content-Type": "application/json",
             "Cache-Control": "no-cache"
         },
         data: JSON.stringify(dataP),
-        success: function(){
-            location.href="takeQuiz.jsp?token="+getUserTokenFromUrl()+"&projectId="+$('#projectId').html().trim();
+        success: function () {
+            location.href = "takeQuiz.jsp?token=" + getUserTokenFromUrl() + "&projectId=" + $('#projectId').html().trim();
         },
-        error: function(a,b,c){
+        error: function (a, b, c) {
 
         }
     });
diff --git a/gemeinsamforschen/src/main/webapp/assets/js/rateContribution.js b/gemeinsamforschen/src/main/webapp/assets/js/rateContribution.js
index 9d39a066..402b474a 100644
--- a/gemeinsamforschen/src/main/webapp/assets/js/rateContribution.js
+++ b/gemeinsamforschen/src/main/webapp/assets/js/rateContribution.js
@@ -12,6 +12,7 @@ $(document).ready(function () {
         minHeight: "80px",
     });
 
+    whichGroupToRate();
 
     //editor.style = "min-height: 100px";
 
@@ -21,6 +22,25 @@ $(document).ready(function () {
     });
 });
 
+function whichGroupToRate(){
+    let projectId = $('#projectId').html().trim();
+    let studentId = $('#user').html().trim();
+    $.ajax({
+        url: '../rest/assessments/groupRate/project/'+projectId+'/student/'+studentId,
+        type: 'GET',
+        headers: {
+            "Content-Type": "application/json",
+            "Cache-Control": "no-cache"
+        },
+        success: function (groupId) {
+            $('#groupId').html(groupId);
+        },
+        error: function () {
+
+        }
+    })
+}
+
 function safeContributionRating() {
     let contributions = $('.contributionRating');
     ///////initialize variables///////
@@ -31,12 +51,10 @@ function safeContributionRating() {
         let checkbox = $("#" + contributions[contribution].id + " input:checked");
         dataP[checkbox.attr('name')] = checkbox.val();
     }
-    let projectId = $('#projectId').html().trim();
     let fromPeer = $('#user').html().trim();
-    let toGroup = $('.peerStudent').attr('id');
+    let groupId = $('#groupId').html().trim();
     $.ajax({
-        url: '../rest/assessments/contributionRating/projectId/' + projectId +
-        '/studentId/' + toGroup + '/fromPeer/' + fromPeer,
+        url: '../rest/assessments/contributionRating/group/'+groupId+'/fromPeer/' + fromPeer,
         type: 'POST',
         headers: {
             "Content-Type": "application/json",
diff --git a/gemeinsamforschen/src/main/webapp/pages/finalAssessments.jsp b/gemeinsamforschen/src/main/webapp/pages/finalAssessments.jsp
index 7b9112fe..7b7195bf 100644
--- a/gemeinsamforschen/src/main/webapp/pages/finalAssessments.jsp
+++ b/gemeinsamforschen/src/main/webapp/pages/finalAssessments.jsp
@@ -1,4 +1,4 @@
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
+<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
 <%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="menu" %>
 <%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="headLine" %>
 <%@ taglib uri="../core/pages/gemeinsamForschen.tld" prefix="omniDependencies" %>
@@ -49,8 +49,8 @@
                                     Es wurden noch nicht alle Studenten vollständig bewertet
                                 </div>
 
-                                <div class="carousel-inner">
-                                    <div class="item active">
+                                <div class="carousel-inner" id="peerTable">
+                                    <!--<div class="item active">
                                         <table class="table-striped peerStudent"
                                                style="width:70%;border:1px solid; margin:auto;" id="Student1">
                                             <tr>
@@ -342,7 +342,7 @@
                                                 Fasel Blubba Bla
                                             </div>
                                         </div>
-                                    </div>
+                                    </div>-->
                                 </div>
 
                                 <!-- Left and right controls -->
diff --git a/gemeinsamforschen/src/main/webapp/pages/rateContribution.jsp b/gemeinsamforschen/src/main/webapp/pages/rateContribution.jsp
index bf7ea1b7..192c9171 100644
--- a/gemeinsamforschen/src/main/webapp/pages/rateContribution.jsp
+++ b/gemeinsamforschen/src/main/webapp/pages/rateContribution.jsp
@@ -17,6 +17,7 @@
 <body>
 <div id="wrapper">
     <menu:menu/>
+    <p id="groupId" hidden>Hier steht jetzt das richtige</p>
     <div class="page-content-wrapper">
         <headLine:headLine/>
         <div>
@@ -25,7 +26,7 @@
                     <td id="yourContent">
                         <h2>letzter Schritt im Projekt1 </h2>
                         <table class="table-striped peerStudent"
-                               style="width:100%;border:1px solid; margin:auto;" id="student1">
+                               style="width:100%;border:1px solid; margin:auto;" id="2">
                             <tr>
                                 <td align="center">
                                     <h3>Gruppe 4</h3>
-- 
GitLab