lti-provider/src/main/java/ru/oa2/lti/application/controller/TaskController.java

81 lines
2.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)));
}
}