123 lines
4.9 KiB
Java
123 lines
4.9 KiB
Java
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.Inscription.ExternalCurriculumRepository;
|
|
import ovh.herisson.Clyde.Repositories.Inscription.InscriptionRepository;
|
|
import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
|
|
import ovh.herisson.Clyde.Services.*;
|
|
import ovh.herisson.Clyde.Tables.*;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
@RestController
|
|
@CrossOrigin(originPatterns = "*", allowCredentials = "true")
|
|
public class CurriculumController {
|
|
|
|
|
|
private final CurriculumService curriculumServ;
|
|
private final AuthenticatorService authServ;
|
|
|
|
private final UserCurriculumService userCurriculumServ;
|
|
private final CurriculumCourseService curriculumCourseServ;
|
|
private final InscriptionRepository ir;
|
|
private final UserService userServ;
|
|
|
|
private final ExternalCurriculumRepository ecr;
|
|
public CurriculumController(CurriculumService curriculumServ, AuthenticatorService authServ, UserCurriculumService userCurriculumServ, CurriculumCourseService curriculumCourseServ, InscriptionRepository ir, UserService userServ, ExternalCurriculumRepository ecr){
|
|
this.curriculumServ = curriculumServ;
|
|
this.authServ = authServ;
|
|
this.userCurriculumServ = userCurriculumServ;
|
|
this.curriculumCourseServ = curriculumCourseServ;
|
|
this.ir = ir;
|
|
this.userServ = userServ;
|
|
this.ecr = ecr;
|
|
}
|
|
|
|
@GetMapping("/curriculum/{id}")
|
|
public ResponseEntity<Map<String,Object>> findById(@PathVariable long id){
|
|
Curriculum foundCurriculum = curriculumServ.findById(id);
|
|
|
|
if (foundCurriculum == null)
|
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
|
|
|
return new ResponseEntity<>(curriculumCourseServ.getDepthCurriculum(foundCurriculum), HttpStatus.OK);
|
|
}
|
|
|
|
@GetMapping("/curriculum")
|
|
public ResponseEntity<Map<String ,Object>> findSelfCurriculum(@RequestHeader("Authorization") String token){
|
|
if (authServ.getUserFromToken(token) == null)
|
|
return new UnauthorizedResponse<>(null);
|
|
|
|
Curriculum curriculum = userCurriculumServ.findByUser(authServ.getUserFromToken(token));
|
|
|
|
if (curriculum == null)
|
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
|
|
|
return new ResponseEntity<>(curriculumCourseServ.getDepthCurriculum(curriculum),HttpStatus.OK);
|
|
}
|
|
|
|
|
|
//Return the list of all curicullums of an user
|
|
@GetMapping("/onescurriculum/{userId}")
|
|
public ResponseEntity<Map<String ,Object>> findOnesCurriculum(@RequestHeader("Authorization") String token, @PathVariable String userId){
|
|
if (authServ.getUserFromToken(token) == null)
|
|
return new UnauthorizedResponse<>(null);
|
|
|
|
User u = userServ.getUserById(Long.parseLong(userId));
|
|
HashMap<String,Object> toReturn = userCurriculumServ.findAllCurriculumByStudent(u);
|
|
|
|
if (toReturn == null)
|
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
|
|
|
return new ResponseEntity<>(toReturn,HttpStatus.OK);
|
|
}
|
|
|
|
@GetMapping("/curriculums")
|
|
public ResponseEntity<Iterable<Map<String, Object>>> findAllIndDepth(){
|
|
return new ResponseEntity<>(curriculumCourseServ.getAllDepthCurriculum(),HttpStatus.OK);
|
|
}
|
|
|
|
@PostMapping("/curriculum")
|
|
public ResponseEntity<Curriculum> postCurriculum(@RequestHeader("Authorization") String token,@RequestBody Curriculum curriculum){
|
|
|
|
if (authServ.isNotIn(new Role[]{Role.Secretary,Role.Admin},token))
|
|
return new UnauthorizedResponse<>(null);
|
|
|
|
return new ResponseEntity<>(curriculumServ.save(curriculum),HttpStatus.CREATED);
|
|
}
|
|
|
|
@PostMapping("/curriculum/{id}")
|
|
public ResponseEntity<String> postCoursesToCurriculum(@RequestHeader("Authorization") String token,
|
|
@RequestBody Iterable<Long> coursesIds,
|
|
@PathVariable long id)
|
|
{
|
|
|
|
if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary},token))
|
|
return new UnauthorizedResponse<>(null);
|
|
|
|
if (!curriculumCourseServ.saveAll(coursesIds, curriculumServ.findById(id)))
|
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
|
|
|
return new ResponseEntity<>(HttpStatus.OK);
|
|
}
|
|
|
|
@DeleteMapping("/curriculum/{id}")
|
|
public ResponseEntity<String > deleteCurriculum(@RequestHeader("Authorization") String token, @PathVariable Long id){
|
|
if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary}, token))
|
|
return new UnauthorizedResponse<>(null);
|
|
|
|
Curriculum toDelete = curriculumServ.findById(id);
|
|
|
|
if (toDelete == null)
|
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
|
|
|
curriculumServ.delete(toDelete);
|
|
return new ResponseEntity<>(HttpStatus.OK);
|
|
}
|
|
|
|
}
|