Implement an endpoint to get all the courses of an user
This commit is contained in:
		| @ -3,14 +3,15 @@ package ovh.herisson.Clyde.EndPoints; | ||||
| import org.springframework.http.HttpStatus; | ||||
| import org.springframework.http.ResponseEntity; | ||||
| import org.springframework.web.bind.annotation.*; | ||||
| import ovh.herisson.Clyde.Repositories.CurriculumCourseRepository; | ||||
| import ovh.herisson.Clyde.Responses.UnauthorizedResponse; | ||||
| import ovh.herisson.Clyde.Services.AuthenticatorService; | ||||
| import ovh.herisson.Clyde.Services.CourseService; | ||||
| import ovh.herisson.Clyde.Services.ProtectionService; | ||||
| import ovh.herisson.Clyde.Services.TeacherCourseService; | ||||
| import ovh.herisson.Clyde.Services.*; | ||||
| import ovh.herisson.Clyde.Tables.Course; | ||||
| import ovh.herisson.Clyde.Tables.Role; | ||||
| import ovh.herisson.Clyde.Tables.User; | ||||
| import ovh.herisson.Clyde.Tables.UserCurriculum; | ||||
|  | ||||
| import java.util.ArrayList; | ||||
| import java.util.HashMap; | ||||
| import java.util.Map; | ||||
|  | ||||
| @ -24,10 +25,20 @@ public class CourseController { | ||||
|  | ||||
|     private final AuthenticatorService authServ; | ||||
|  | ||||
|     public CourseController(CourseService courseServ, TeacherCourseService teacherCourseServ, AuthenticatorService authServ) { | ||||
|     private final UserService userService; | ||||
|  | ||||
|     private final UserCurriculumService userCurriculumService; | ||||
|  | ||||
|     private final CurriculumCourseRepository curriculumCourseRepository; | ||||
|     private final CurriculumCourseService curriculumCourseService; | ||||
|     public CourseController(CourseService courseServ, TeacherCourseService teacherCourseServ, AuthenticatorService authServ, UserService userService, UserCurriculumService userCurriculumService, CurriculumCourseRepository curriculumCourseRepository, CurriculumCourseService curriculumCourseService) { | ||||
|         this.courseServ = courseServ; | ||||
|         this.teacherCourseServ = teacherCourseServ; | ||||
|         this.authServ = authServ; | ||||
|         this.userService = userService; | ||||
|         this.userCurriculumService = userCurriculumService; | ||||
|         this.curriculumCourseRepository = curriculumCourseRepository; | ||||
|         this.curriculumCourseService = curriculumCourseService; | ||||
|     } | ||||
|  | ||||
|     @GetMapping("/course/{id}") | ||||
| @ -136,4 +147,28 @@ public class CourseController { | ||||
|         return new ResponseEntity<>(HttpStatus.OK); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     //Get all the courses followed by an user | ||||
|     @GetMapping("/usercourses/{userId}") | ||||
|     public ResponseEntity<ArrayList<Course>> getAllUserCourses(@PathVariable long userId){ | ||||
|         User u = userService.getUserById(userId); | ||||
|  | ||||
|         //We get all the actual curriculums of the user | ||||
|         ArrayList<UserCurriculum> userCurricula = userCurriculumService.findByStudentAndActual(u, true); | ||||
|         ArrayList<Course> toReturn = new ArrayList<>(); | ||||
|  | ||||
|         //We iterate through all the curriculums and we extract the courses | ||||
|         for (int i = 0; i < userCurricula.size(); i++){ | ||||
|             curriculumCourseRepository.findCoursesByCurriculum(userCurricula.get(i).getCurriculum()).forEach((item) -> { | ||||
|                 //We need this to eliminate clones because a course can belong to several curriculums | ||||
|                 if(!toReturn.contains(item)){ | ||||
|                     toReturn.add(item); | ||||
|                 } | ||||
|             }); | ||||
|         } | ||||
|  | ||||
|         return new ResponseEntity<>(toReturn, HttpStatus.OK); | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -16,4 +16,6 @@ public interface UserCurriculumRepository extends CrudRepository<UserCurriculum, | ||||
|     ArrayList<UserCurriculum> findByUserOrderByCurriculum(User student); | ||||
|     UserCurriculum findByUserAndCurriculumAndActual(User user, Curriculum curriculum, boolean actual); | ||||
|  | ||||
|     ArrayList<UserCurriculum> findByUserAndActual(User user, boolean actual); | ||||
|  | ||||
| } | ||||
|  | ||||
| @ -49,5 +49,7 @@ public class UserCurriculumService { | ||||
|         return toReturn; | ||||
|     } | ||||
|  | ||||
|  | ||||
|     public ArrayList<UserCurriculum> findByStudentAndActual(User u, boolean actual){ | ||||
|         return userCurriculumRepository.findByUserAndActual(u, actual); | ||||
|     } | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user