117 lines
4.6 KiB
Java
117 lines
4.6 KiB
Java
package ovh.herisson.Clyde.EndPoints;
|
|
|
|
/******************************************************
|
|
* @file ScheduleController.java
|
|
* @author William Karpinski
|
|
* @scope Extension Horaire
|
|
*
|
|
* Controller of Schedule API
|
|
******************************************************/
|
|
|
|
|
|
import org.springframework.http.HttpStatus;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.web.bind.annotation.*;
|
|
import ovh.herisson.Clyde.Responses.UnauthorizedResponse;
|
|
import ovh.herisson.Clyde.Services.AuthenticatorService;
|
|
import ovh.herisson.Clyde.Services.ScheduleLessonService;
|
|
import ovh.herisson.Clyde.Services.ScheduleService;
|
|
import ovh.herisson.Clyde.Services.UserCurriculumService;
|
|
import ovh.herisson.Clyde.Services.CurriculumService;
|
|
import ovh.herisson.Clyde.Tables.*;
|
|
import ovh.herisson.Clyde.Services.LessonService;
|
|
|
|
import java.util.Map;
|
|
|
|
@RestController
|
|
@CrossOrigin(originPatterns = "*", allowCredentials = "true")
|
|
public class ScheduleController {
|
|
|
|
private final ScheduleService scheduleServ;
|
|
private final LessonService lessonServ;
|
|
|
|
private final CurriculumService curriculumServ;
|
|
private final AuthenticatorService authServ;
|
|
|
|
private final ScheduleLessonService scheduleLessonServ;
|
|
|
|
public ScheduleController(ScheduleService scheduleServ, AuthenticatorService authServ, ScheduleLessonService scheduleLessonServ, CurriculumService curriculumServ,LessonService lessonServ) {
|
|
this.scheduleServ = scheduleServ;
|
|
this.authServ = authServ;
|
|
this.scheduleLessonServ = scheduleLessonServ;
|
|
this.curriculumServ = curriculumServ;
|
|
this.lessonServ = lessonServ;
|
|
}
|
|
/**
|
|
* Return schedule via its id
|
|
*/
|
|
@GetMapping("/schedule/{id}")
|
|
public ResponseEntity<Map<String,Object>> findById(@PathVariable long id){
|
|
Schedule schedule = scheduleServ.findById(id);
|
|
|
|
if(schedule == null)
|
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
|
return new ResponseEntity<>(scheduleLessonServ.getDepthScheduleBySchedule(schedule),HttpStatus.OK);
|
|
}
|
|
|
|
/**
|
|
* Return a schedule via its curriculum id
|
|
*/
|
|
@GetMapping("/schedule/curriculum/{id}")
|
|
public ResponseEntity<Map<String, Object>> findCurriculumSchedule(@PathVariable Long id){
|
|
Schedule schedule = scheduleLessonServ.getScheduleByCurriculum(curriculumServ.findById(id));
|
|
if(schedule == null)
|
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
|
return new ResponseEntity<>(scheduleLessonServ.getDepthScheduleBySchedule(schedule),HttpStatus.OK);
|
|
}
|
|
/**
|
|
* Return all schedules
|
|
*/
|
|
@GetMapping("/schedules")
|
|
public ResponseEntity<Iterable<Map<String , Object>>> findAllSchedule(){
|
|
return new ResponseEntity<>(scheduleLessonServ.getAllSchedule(),HttpStatus.OK);
|
|
}
|
|
/**
|
|
* Post a new schedule
|
|
*/
|
|
@PostMapping("/schedule")
|
|
public ResponseEntity<Schedule> postSchedule(@RequestHeader("Authorization") String token,
|
|
@RequestBody Schedule schedule){
|
|
if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary},token))
|
|
return new UnauthorizedResponse<>(null);
|
|
return new ResponseEntity<>(scheduleServ.save(schedule),HttpStatus.OK);
|
|
}
|
|
/**
|
|
* Post a lesson to a schedule
|
|
*/
|
|
@PostMapping("/schedule/{id}")
|
|
public ResponseEntity<String> postLessonToSchedule(@RequestHeader("Authorization") String token,
|
|
@RequestBody Long lessonId,
|
|
@PathVariable long id)
|
|
{
|
|
|
|
if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary},token))
|
|
return new UnauthorizedResponse<>(null);
|
|
|
|
if (!scheduleLessonServ.save(new ScheduleLesson( scheduleServ.findById(id), lessonServ.findById(lessonId))))
|
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
|
|
|
return new ResponseEntity<>(HttpStatus.OK);
|
|
}
|
|
/**
|
|
* Delete a lesson from a schedule
|
|
*/
|
|
@DeleteMapping("/schedule/lesson/{id}")
|
|
public ResponseEntity<String> deleteLessonFromSchedule(@RequestHeader("Authorization") String token,
|
|
@RequestBody Long lessonId,
|
|
@PathVariable Long id)
|
|
{
|
|
if (authServ.isNotIn(new Role[]{Role.Admin,Role.Secretary},token))
|
|
return new UnauthorizedResponse<>(null);
|
|
if (!scheduleLessonServ.delete(lessonId))
|
|
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
|
|
|
|
return new ResponseEntity<>(HttpStatus.OK);
|
|
}
|
|
}
|