Skip to content

Commit 5436ca2

Browse files
author
Hattinger04
committed
finishing many functions
1 parent 323ee17 commit 5436ca2

File tree

5 files changed

+81
-17
lines changed

5 files changed

+81
-17
lines changed

src/main/java/io/github/Hattinger04/course/model/CourseService.java

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -64,37 +64,45 @@ public Teacher getCourseTeacher(Course course) {
6464
}
6565

6666
public void setCourseTeacher(Course course, Teacher teacher) {
67-
67+
teacherRepository.save(teacher);
68+
courseRepository.addUserToCourse(teacher.getId(), course.getId());
6869
}
6970

7071
// TODO: working with student / teacher table
71-
public void addStudentToCourse(Course course, User student) {
72-
72+
public void addStudentToCourse(Course course, Student student) {
73+
studentRepository.save(student);
74+
courseRepository.addUserToCourse(student.getId(), course.getId());
7375
}
7476

75-
public void addStudentsToCourse(Course course, Set<User> student) {
76-
77+
public void addStudentsToCourse(Course course, Set<Student> students) {
78+
for(Student student : students) {
79+
studentRepository.save(student);
80+
courseRepository.addUserToCourse(student.getId(), course.getId());
81+
}
7782
}
7883

79-
public void removeStudentFromCourse(Course course, User student) {
80-
84+
public void removeStudentFromCourse(Course course, Student student) {
85+
studentRepository.delete(student);
86+
courseRepository.removeUserFromCourse(student.getId(), student.getId());
8187
}
8288

83-
public void removeStudentsFromCourse(Course course, Set<User> student) {
84-
89+
public void removeStudentsFromCourse(Course course, Set<Student> students) {
90+
for(Student student : students) {
91+
studentRepository.delete(student);
92+
courseRepository.removeUserFromCourse(student.getId(), student.getId());
93+
}
8594
}
8695

8796
public boolean isUserTeacher(Course course, User user) {
88-
if(isUserInCourse(course, user)) {
89-
// TODO
90-
return true;
91-
}
92-
return false;
97+
return courseRepository.isUserTeacher(user.getId(), course.getId()) != 0;
98+
}
99+
100+
public boolean isUserStudent(Course course, User user) {
101+
return courseRepository.isUserStudent(user.getId(), course.getId()) != 0;
93102
}
94103

95104
public boolean isUserInCourse(Course course, User user) {
96-
// TODO
97-
return false;
105+
return courseRepository.isUserStudent(user.getId(), course.getId()) != 0 || courseRepository.isUserTeacher(user.getId(), course.getId()) != 0;
98106
}
99107

100108
public Exercise createExercise(Exercise exercise) {
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package io.github.Hattinger04.course.model;
2+
3+
import lombok.Getter;
4+
import lombok.Setter;
5+
6+
public class UserCourse {
7+
@Getter @Setter
8+
private int user_id;
9+
@Getter @Setter
10+
private int course_id;
11+
}

src/main/java/io/github/Hattinger04/course/model/course/CourseRepository.java

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
import java.util.List;
44

5+
import javax.transaction.Transactional;
6+
57
import org.springframework.data.jpa.repository.JpaRepository;
8+
import org.springframework.data.jpa.repository.Modifying;
69
import org.springframework.data.jpa.repository.Query;
10+
import org.springframework.data.repository.query.Param;
711
import org.springframework.stereotype.Repository;
812

913
import io.github.Hattinger04.course.model.student.Student;
@@ -13,6 +17,43 @@ public interface CourseRepository extends JpaRepository<Course, Long>{
1317
Course findById(int id);
1418
Course findByName(String name);
1519
// TODO: SQL not tested yet!
16-
@Query(value = "SELECT * FROM STUDENTS s JOIN USER u using(user_id) JOIN course c using(course_id, user_id) where c.course_id=:course_id", nativeQuery = true)
20+
21+
@Query(value = "SELECT * FROM STUDENT s JOIN USER u using(user_id) JOIN course c using(course_id, user_id) where c.course_id=:course_id", nativeQuery = true)
1722
List<Student> getAllStudents(int course_id);
23+
24+
@Modifying
25+
@Query(value = "insert into user_course where user_id = :user_id and course_id=:course_id", nativeQuery = true)
26+
@Transactional
27+
public void addUserToCourse(@Param("user_id") int user_id, @Param("course_id") int course_id);
28+
29+
@Modifying
30+
@Query(value = "delete from user_course where user_id = :user_id and course_id=:course_id", nativeQuery = true)
31+
@Transactional
32+
public void removeUserFromCourse(@Param("user_id") int user_id, @Param("course_id") int course_id);
33+
34+
@Query(value = "SELECT count(*) FROM STUDENT s JOIN USER u using(user_id) JOIN course c using(course_id, user_id) where c.course_id=:course_id", nativeQuery = true)
35+
public int countStudents(@Param("course_id") int course_id);
36+
37+
/**
38+
* If return value equals 0 => no student with this user_id exists
39+
*
40+
* @param user_id
41+
* @param course_id
42+
* @return
43+
*/
44+
@Query(value = "SELECT count(*) FROM STUDENT s JOIN USER u using(user_id) JOIN course c using(course_id, user_id) where c.course_id=:course_id and s.user_id=:user_id", nativeQuery = true)
45+
public int isUserStudent(@Param("user_id") int user_id, @Param("course_id") int course_id);
46+
47+
@Query(value = "SELECT count(*) FROM TEACHER t JOIN USER u using(user_id) JOIN course c using(course_id, user_id) where c.course_id=:course_id", nativeQuery = true)
48+
public int countTeacher(@Param("course_id") int course_id);
49+
50+
/**
51+
* If return value equals 0 => no teacher with this user_id exists
52+
*
53+
* @param user_id
54+
* @param course_id
55+
* @return
56+
*/
57+
@Query(value = "SELECT count(*) FROM TEACHER t JOIN USER u using(user_id) JOIN course c using(course_id, user_id) where c.course_id=:course_id and t.user_id=:user_id", nativeQuery = true)
58+
public int isUserTeacher(@Param("user_id") int user_id, @Param("course_id") int course_id);
1859
}

src/main/java/io/github/Hattinger04/course/model/teacher/Teacher.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
@AllArgsConstructor
2121
@ToString
2222
public class Teacher {
23+
2324
@Id
2425
@GeneratedValue(strategy = GenerationType.IDENTITY)
2526
@Column(name = "teacher_id")

src/main/java/io/github/Hattinger04/user/model/UserRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,15 @@
1414
public interface UserRepository extends JpaRepository<User, Long> {
1515
User findById(int id);
1616
User findByUsername(String username);
17+
1718
@Query(value = "SELECT auto_increment FROM information_schema.tables WHERE table_name='users'", nativeQuery = true)
1819
List<Long> getNextSeriesId();
20+
1921
@Modifying
2022
@Query(value = "Insert into user_role(user_id, role_id) VALUES (:user_id, :role_id)", nativeQuery = true)
2123
@Transactional
2224
public void insertUserRole(@Param("user_id") int user_id, @Param("role_id") int role_id);
25+
2326
@Modifying
2427
@Query(value = "delete from user_role where user_id = :user_id and role_id=:role_id", nativeQuery = true)
2528
@Transactional

0 commit comments

Comments
 (0)