81 lines
2.6 KiB
Java
81 lines
2.6 KiB
Java
package ru.oa2.lti.application.controller;
|
||
|
||
import jakarta.servlet.http.HttpServletRequest;
|
||
import jakarta.servlet.http.HttpSession;
|
||
import org.springframework.http.ResponseEntity;
|
||
import org.springframework.stereotype.Controller;
|
||
import org.springframework.ui.Model;
|
||
import org.springframework.web.bind.annotation.GetMapping;
|
||
import org.springframework.web.bind.annotation.PostMapping;
|
||
import org.springframework.web.bind.annotation.RequestMapping;
|
||
import ru.oa2.lti.domain.model.auth.Payload;
|
||
import ru.oa2.lti.application.service.task.TaskService;
|
||
import ru.oa2.lti.domain.model.auth.LtiLogin;
|
||
import ru.oa2.lti.domain.model.ResultRequest;
|
||
|
||
import java.util.Objects;
|
||
|
||
/*
|
||
Контроллер работы с задачами(лабораторными работами)
|
||
|
||
GET - возвращает контекст лабораторной работы
|
||
POST - обновление/создание лабораторной работы (только для преподавателей/администраторов)
|
||
POST /submit - отправка на автоматическую проверку
|
||
|
||
*/
|
||
@Controller
|
||
@RequestMapping("/tool/lti/task")
|
||
public class TaskController {
|
||
|
||
private final TaskService taskService;
|
||
|
||
public TaskController(TaskService taskService) {
|
||
this.taskService = taskService;
|
||
}
|
||
|
||
@GetMapping
|
||
public String showDockerTas(Model model,
|
||
HttpServletRequest request) {
|
||
|
||
var session = request.getSession();
|
||
var payload = (Payload) session.getAttribute("payload");
|
||
|
||
if (payload != null) {
|
||
var data = taskService.getTask(payload.getContextId());
|
||
|
||
if (data == null) {
|
||
return "redirect:/error";
|
||
}
|
||
|
||
model.addAttribute("description", data);
|
||
}
|
||
|
||
if (Objects.requireNonNull(payload).getCoach()) {
|
||
return "task-editor";
|
||
}
|
||
return "task";
|
||
}
|
||
|
||
@PostMapping
|
||
public ResponseEntity updateTask() {
|
||
|
||
//TODO exception
|
||
taskService.saveTask("TODO", "TODO", "TODO");
|
||
return ResponseEntity.accepted().build();
|
||
}
|
||
|
||
@PostMapping("/submit")
|
||
public ResponseEntity result(HttpServletRequest req) {
|
||
|
||
HttpSession session = req.getSession(false);
|
||
if (session == null) return ResponseEntity.status(401).build();
|
||
|
||
var ltiLogin = (LtiLogin) session.getAttribute("lti_login");
|
||
var idToken = (String) session.getAttribute("id_token");
|
||
|
||
return ResponseEntity
|
||
.accepted()
|
||
.body(taskService.checkTask(new ResultRequest(ltiLogin.getClientId(), idToken)));
|
||
}
|
||
}
|