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 @@ + +
@@ -24,5 +41,23 @@
+ +


+

Grades

+ + + + + + + + + + + + + +
CourseGrade
......
+ \ No newline at end of file