Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
"/api/v1/categories/**",
"/api/v1/mentors/**",
"/api/v1/courses/**",
"/api/v1/module/*/quizzes/**",
"/api/v1/quiz/*/questions/**",
"/api/v1/courses/**",
"/api/v1/courses/peers-questions/**",
"/api/v1/courses/mentor-questions/**",
"/api/v1/courses/peers-questions/answer/**",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import app.openschool.course.module.EnrolledModule;
import app.openschool.course.module.Module;
import app.openschool.course.module.item.ModuleItem;
import app.openschool.course.module.quiz.EnrolledQuiz;
import app.openschool.course.status.CourseStatus;
import app.openschool.user.User;
import app.openschool.user.api.mapper.MentorMapper;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import app.openschool.course.module.EnrolledModule;
import app.openschool.course.module.item.EnrolledModuleItem;
import app.openschool.course.module.item.status.ModuleItemStatus;
import app.openschool.course.module.quiz.EnrolledQuiz;
import app.openschool.course.module.quiz.status.QuizStatus;
import app.openschool.course.module.status.ModuleStatus;
import java.util.Set;
import java.util.stream.Collectors;
Expand All @@ -19,10 +21,10 @@ public static Set<EnrolledModule> toEnrolledModules(
.collect(Collectors.toSet());

return enrolledModules.stream()
.map(
.peek(
enrolledModule -> {
enrolledModule.setEnrolledModuleItems(getEnrolledModuleItems(enrolledModule));
return enrolledModule;
enrolledModule.setEnrolledQuizzes(getEnrolledQuiz(enrolledModule));
})
.collect(Collectors.toSet());
}
Expand All @@ -34,4 +36,10 @@ private static Set<EnrolledModuleItem> getEnrolledModuleItems(EnrolledModule enr
new EnrolledModuleItem(moduleItem, enrolledModule, ModuleItemStatus.inProgress()))
.collect(Collectors.toSet());
}

private static Set<EnrolledQuiz> getEnrolledQuiz(EnrolledModule enrolledModule) {
return enrolledModule.getModule().getQuizzes().stream()
.map(quiz -> new EnrolledQuiz(QuizStatus.inProgress(), quiz, enrolledModule))
.collect(Collectors.toSet());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import app.openschool.course.EnrolledCourse;
import app.openschool.course.module.item.EnrolledModuleItem;
import app.openschool.course.module.quiz.EnrolledQuiz;
import app.openschool.course.module.status.ModuleStatus;
import java.util.Set;
import javax.persistence.CascadeType;
Expand Down Expand Up @@ -39,6 +40,9 @@ public class EnrolledModule {
@OneToMany(cascade = CascadeType.MERGE, mappedBy = "enrolledModule")
private Set<EnrolledModuleItem> enrolledModuleItems;

@OneToMany(cascade = CascadeType.MERGE, mappedBy = "enrolledModule")
private Set<EnrolledQuiz> enrolledQuizzes;

public EnrolledModule() {}

public EnrolledModule(Module module, ModuleStatus moduleStatus, EnrolledCourse enrolledCourse) {
Expand All @@ -52,12 +56,14 @@ public EnrolledModule(
Module module,
EnrolledCourse enrolledCourse,
ModuleStatus moduleStatus,
Set<EnrolledModuleItem> enrolledModuleItems) {
Set<EnrolledModuleItem> enrolledModuleItems,
Set<EnrolledQuiz> enrolledQuizzes) {
this.id = id;
this.module = module;
this.enrolledCourse = enrolledCourse;
this.moduleStatus = moduleStatus;
this.enrolledModuleItems = enrolledModuleItems;
this.enrolledQuizzes = enrolledQuizzes;
}

public Long getId() {
Expand Down Expand Up @@ -88,6 +94,14 @@ public ModuleStatus getModuleStatus() {
return moduleStatus;
}

public Set<EnrolledQuiz> getEnrolledQuizzes() {
return enrolledQuizzes;
}

public void setEnrolledQuizzes(Set<EnrolledQuiz> enrolledQuizzes) {
this.enrolledQuizzes = enrolledQuizzes;
}

public void setModuleStatus(ModuleStatus moduleStatus) {
this.moduleStatus = moduleStatus;
}
Expand Down
15 changes: 14 additions & 1 deletion os-server/src/main/java/app/openschool/course/module/Module.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import app.openschool.course.Course;
import app.openschool.course.module.item.ModuleItem;
import app.openschool.course.module.quiz.Quiz;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
Expand Down Expand Up @@ -37,16 +38,20 @@ public class Module {
@OneToMany(cascade = CascadeType.ALL, mappedBy = "module")
private Set<ModuleItem> moduleItems = new HashSet<>();

@OneToMany(mappedBy = "module", cascade = CascadeType.ALL)
private Set<Quiz> quizzes;

public Module() {}

public Module(Course course) {
this.course = course;
}

public Module(Long id, Course course, Set<ModuleItem> moduleItems) {
public Module(Long id, Course course, Set<ModuleItem> moduleItems, Set<Quiz> quizzes) {
this.id = id;
this.course = course;
this.moduleItems = moduleItems;
this.quizzes = quizzes;
}

public Long getId() {
Expand Down Expand Up @@ -88,4 +93,12 @@ public String getDescription() {
public void setDescription(String description) {
this.description = description;
}

public Set<Quiz> getQuizzes() {
return quizzes;
}

public void setQuizzes(Set<Quiz> quizzes) {
this.quizzes = quizzes;
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package app.openschool.course.module;

import app.openschool.course.module.Module;
import org.springframework.data.jpa.repository.JpaRepository;

public interface ModuleRepository extends JpaRepository<Module, Long> {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package app.openschool.course.module.quiz;

import app.openschool.course.module.EnrolledModule;
import app.openschool.course.module.quiz.status.QuizStatus;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name = "enrolled_quiz")
public class EnrolledQuiz {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;

@Column(name = "student_grade")
private int studentGrade = 0;

@ManyToOne
@JoinColumn(name = "quiz_status_id")
private QuizStatus quizStatus;

@ManyToOne
@JoinColumn(name = "quiz_id")
private Quiz quiz;

@ManyToOne
@JoinColumn(name = "enrolled_module_id")
private EnrolledModule enrolledModule;

public EnrolledQuiz() {}

public EnrolledQuiz(QuizStatus quizStatus, Quiz quiz, EnrolledModule enrolledModule) {
this.quizStatus = quizStatus;
this.quiz = quiz;
this.enrolledModule = enrolledModule;
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public QuizStatus getQuizStatus() {
return quizStatus;
}

public void setQuizStatus(QuizStatus quizStatus) {
this.quizStatus = quizStatus;
}

public Quiz getQuiz() {
return quiz;
}

public void setQuiz(Quiz quiz) {
this.quiz = quiz;
}

public EnrolledModule getEnrolledModule() {
return enrolledModule;
}

public void setEnrolledModule(EnrolledModule enrolledModule) {
this.enrolledModule = enrolledModule;
}

public int getStudentGrade() {
return studentGrade;
}

public void setStudentGrade(int studentGrade) {
this.studentGrade = studentGrade;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package app.openschool.course.module.quiz;

import org.springframework.data.jpa.repository.JpaRepository;

public interface EnrolledQuizRepository extends JpaRepository<EnrolledQuiz, Long> {}
104 changes: 104 additions & 0 deletions os-server/src/main/java/app/openschool/course/module/quiz/Quiz.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
package app.openschool.course.module.quiz;

import app.openschool.course.module.Module;
import app.openschool.course.module.quiz.question.Question;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "quiz")
public class Quiz {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;

@Column(name = "title", nullable = false)
private String title;

@Column(name = "description", nullable = false)
private String description;

@Column(name = "max_grade", nullable = false)
private int maxGrade;

@Column(name = "passing_score", nullable = false)
private int passingScore;

@OneToMany(mappedBy = "quiz", cascade = CascadeType.ALL)
private Set<Question> questions;

@ManyToOne
@JoinColumn(name = "module_id")
private Module module;

public static Quiz getInstance() {
return new Quiz();
}

public Long getId() {
return id;
}

public void setId(Long id) {
this.id = id;
}

public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getDescription() {
return description;
}

public void setDescription(String description) {
this.description = description;
}

public int getMaxGrade() {
return maxGrade;
}

public void setMaxGrade(int maxGrade) {
this.maxGrade = maxGrade;
}

public int getPassingScore() {
return passingScore;
}

public void setPassingScore(int passingScore) {
this.passingScore = passingScore;
}

public Set<Question> getQuestions() {
return questions;
}

public void setQuestions(Set<Question> questions) {
this.questions = questions;
}

public Module getModule() {
return module;
}

public void setModule(Module module) {
this.module = module;
}
}
Loading