diff --git a/pom.xml b/pom.xml
index 5b354f5..4bb7c50 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,7 +33,11 @@
basiclti-util
1.1.2
-
+
+ javax.xml.parsers
+ jaxp-api
+ 1.4.5
+
mysql
mysql-connector-java
diff --git a/src/main/java/com/wmi/lti/controllers/GradeController.java b/src/main/java/com/wmi/lti/controllers/GradeController.java
index 30f0c11..6df7c13 100644
--- a/src/main/java/com/wmi/lti/controllers/GradeController.java
+++ b/src/main/java/com/wmi/lti/controllers/GradeController.java
@@ -1,17 +1,28 @@
package com.wmi.lti.controllers;
+import com.wmi.lti.model.course.Course;
+import com.wmi.lti.model.course.CourseRepository;
import com.wmi.lti.model.grade.Grade;
import com.wmi.lti.model.grade.GradeRepository;
+import com.wmi.lti.model.user.User;
+import com.wmi.lti.model.user.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
+import org.w3c.dom.Document;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
import javax.servlet.http.HttpServletRequest;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
+import java.io.StringReader;
import java.util.Map;
+import java.util.Optional;
import java.util.Scanner;
@RequestMapping("/grades")
@@ -21,14 +32,27 @@ public class GradeController {
@Autowired
private GradeRepository gradeRepository;
+ @Autowired
+ private UserRepository userRepository;
+
+ @Autowired
+ private CourseRepository courseRepository;
+
@PostMapping("")
public String addCourse(@RequestParam(required = false) Map args, HttpServletRequest request) throws IOException {
+ String gradeXML = extractPostRequestBody(request);
+ double gradeValue = Double.valueOf(gradeXML.split("")[1].split("")[0]);
+ String cell = gradeXML.split("")[1].split("")[0];
+ User user = userRepository.findByUsername(cell.replaceFirst("_.*", ""));
+ Course course = courseRepository.findFirstByName(cell.replaceFirst(".*_", ""));
- Grade grade = new Grade();
- grade.setDescription(extractPostRequestBody(request));
- System.out.println(grade.getDescription());
+ Optional gradeCheck = gradeRepository.findGradeByCourseAndUser(course, user);
+ Grade grade = gradeCheck.orElseGet(Grade::new);
+ grade.setCourse(course);
+ grade.setGrade(gradeValue);
+ grade.setUser(user);
gradeRepository.save(grade);
- return "done";
+ return response();
}
static String extractPostRequestBody(HttpServletRequest request) throws IOException {
@@ -39,4 +63,28 @@ public class GradeController {
return "";
}
+
+
+
+ private String response(){
+ return "\n" +
+ "\n" +
+ " \n" +
+ " \n" +
+ " V1.0\n" +
+ " 4560\n" +
+ " \n" +
+ " success\n" +
+ " status\n" +
+ " 999999123\n" +
+ " replaceResult\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ "";
+ }
+
}
diff --git a/src/main/java/com/wmi/lti/controllers/StartController.java b/src/main/java/com/wmi/lti/controllers/StartController.java
index 9a1d162..07f0c17 100644
--- a/src/main/java/com/wmi/lti/controllers/StartController.java
+++ b/src/main/java/com/wmi/lti/controllers/StartController.java
@@ -2,6 +2,9 @@ package com.wmi.lti.controllers;
import com.wmi.lti.model.course.Course;
import com.wmi.lti.model.course.CourseRepository;
+import com.wmi.lti.model.grade.Grade;
+import com.wmi.lti.model.grade.GradeDTO;
+import com.wmi.lti.model.grade.GradeRepository;
import com.wmi.lti.model.user.User;
import com.wmi.lti.model.user.UserPrincipal;
import com.wmi.lti.model.user.UserRepository;
@@ -30,6 +33,9 @@ public class StartController {
@Autowired
private UserRepository userRepository;
+ @Autowired
+ private GradeRepository gradeRepository;
+
@GetMapping("")
public String start(Model model){
List courses = courseRepository.findAll();
@@ -44,7 +50,9 @@ public class StartController {
parameters.put("user_id", user.getId().toString());
parameters.put("lis_person_name_given", user.getUsername());
parameters.put("tool_consumer_instance_name", "wmi.lti");
- parameters.put("target", "frame");
+ //parameters.put("target", "frame");
+ parameters.put("lis_outcome_service_url", "http://localhost:8080/grades");
+ parameters.put("lis_result_sourcedid", user.getUsername() + "_" + course.getCourse_key());
try {
Map signedParameters = signer.signParameters(parameters, course.getCourse_key(), course.getSecret(), course.getUrl(), "POST");
/* String link = course.getUrl();
@@ -57,7 +65,15 @@ public class StartController {
e.printStackTrace();
}
}
+
+ List grades = gradeRepository.findAllByUser(user);
+ List gradeDTOS = new ArrayList<>();
+ for (Grade grade : grades){
+ gradeDTOS.add(new GradeDTO(grade.getCourse().getName(), grade.getGrade()* 100 + "%"));
+ }
+
model.addAttribute("courses", coursesToReturn);
+ model.addAttribute("grades", gradeDTOS);
return "start"; //view
}
}
diff --git a/src/main/java/com/wmi/lti/model/course/CourseRepository.java b/src/main/java/com/wmi/lti/model/course/CourseRepository.java
index c56d0e4..b66920f 100644
--- a/src/main/java/com/wmi/lti/model/course/CourseRepository.java
+++ b/src/main/java/com/wmi/lti/model/course/CourseRepository.java
@@ -4,6 +4,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
public interface CourseRepository extends JpaRepository {
-
+ Course findFirstByName(String name);
}
diff --git a/src/main/java/com/wmi/lti/model/grade/GradeDTO.java b/src/main/java/com/wmi/lti/model/grade/GradeDTO.java
new file mode 100644
index 0000000..612b1c9
--- /dev/null
+++ b/src/main/java/com/wmi/lti/model/grade/GradeDTO.java
@@ -0,0 +1,14 @@
+package com.wmi.lti.model.grade;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.Setter;
+
+@AllArgsConstructor
+@Getter
+@Setter
+public class GradeDTO {
+
+ private String courseName;
+ private String score;
+}
diff --git a/src/main/java/com/wmi/lti/model/grade/GradeRepository.java b/src/main/java/com/wmi/lti/model/grade/GradeRepository.java
index 1303d15..fae5f03 100644
--- a/src/main/java/com/wmi/lti/model/grade/GradeRepository.java
+++ b/src/main/java/com/wmi/lti/model/grade/GradeRepository.java
@@ -1,6 +1,14 @@
package com.wmi.lti.model.grade;
+import com.wmi.lti.model.course.Course;
+import com.wmi.lti.model.user.User;
import org.springframework.data.jpa.repository.JpaRepository;
+import java.util.List;
+import java.util.Optional;
+
public interface GradeRepository extends JpaRepository {
+ Optional findGradeByCourseAndUser(Course course, User user);
+
+ List findAllByUser(User user);
}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 6b40d1d..1f01fea 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,5 +1,5 @@
spring.jpa.hibernate.ddl-auto=update
-spring.datasource.url=jdbc:mysql://localhost:3306/lti
+spring.datasource.url=jdbc:mysql://localhost:3307/lti
spring.datasource.username=lti
spring.datasource.password=YnBDC0hqqhKaxt94
diff --git a/src/main/resources/templates/start.html b/src/main/resources/templates/start.html
index 870e572..9bb28b1 100644
--- a/src/main/resources/templates/start.html
+++ b/src/main/resources/templates/start.html
@@ -10,6 +10,23 @@
+
+