/
elisaveta
/
tasks
Обзор
Документация
Войти
/
elisaveta
/
tasks
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/com/example/taskmanager/controller/TaskController.java
106 строк
6 KB
lisssoxhaa
обавлен Javadoc для классов User, Task и Assignee
14 апр 2025, 21:10
14 апр 2025, 21:10
f5db265
Код
Авторство
О чём код?
package com.example.taskmanager.controller; import com.example.taskmanager.model.Task; import com.example.taskmanager.model.TaskStatus; import com.example.taskmanager.model.TaskPriority; import com.example.taskmanager.repository.TaskRepository; import com.example.taskmanager.service.TaskService; import com.example.taskmanager.utils.TaskPDFExporter; import jakarta.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.util.List; @Controller @RequestMapping("/tasks") // Устанавливаем базовый путь для всех маршрутов в этом контроллере public class TaskController { private final TaskService taskService; private final TaskRepository taskRepository; @Autowired public TaskController(TaskService taskService, TaskRepository taskRepository) { this.taskService = taskService; this.taskRepository = taskRepository; } // Обработка GET-запроса для получения списка всех задач @GetMapping public String getAllTasks(Model model) { model.addAttribute("tasks", taskService.getAllTasks()); // добавляем список задач в модель model.addAttribute("statuses", TaskStatus.values()); // передаём все возможные статусы model.addAttribute("priorities", TaskPriority.values()); // передаём все возможные приоритеты return "task-list"; // возвращаем имя шаблона для отображения задач } // Отображение формы добавления новой задачи @GetMapping("/add") public String showAddTaskForm(Model model) { model.addAttribute("task", new Task()); // создаём пустой объект задачи для формы model.addAttribute("statuses", TaskStatus.values()); model.addAttribute("priorities", TaskPriority.values()); return "task-form"; // шаблон формы задачи } // Обработка отправки формы добавления новой задачи @PostMapping("/add") public String addTask(@ModelAttribute Task task) { taskService.addTask(task); // сохраняем задачу через сервис return "redirect:/tasks"; // редирект на список задач } // Получение задачи по её ID и отображение подробной информации @GetMapping("/{id}") public String getTaskById(@PathVariable Long id, Model model) { taskService.getTaskById(id).ifPresent(task -> model.addAttribute("task", task)); // если задача найдена, добавляем её в модель return "task-detail"; // шаблон подробностей задачи } // Сортировка задач по приоритету (от низкого к высокому) @GetMapping("/filter-priority") public String filterTasksByPriority(Model model) { List<Task> tasks = taskService.getAllTasks(); tasks.sort((task1, task2) -> task1.getPriority().compareTo(task2.getPriority())); // сортировка по приоритету model.addAttribute("tasks", tasks); model.addAttribute("statuses", TaskStatus.values()); model.addAttribute("priorities", TaskPriority.values()); return "task-list"; // используем тот же шаблон списка } // Экспорт задач в PDF @GetMapping("/export-pdf") public void exportToPDF(HttpServletResponse response) throws IOException { response.setContentType("application/pdf"); // устанавливаем тип контента String headerKey = "Content-Disposition"; String headerValue = "attachment; filename=tasks.pdf"; // задаём имя файла response.setHeader(headerKey, headerValue); List<Task> tasks = taskRepository.findAll(); // получаем все задачи TaskPDFExporter exporter = new TaskPDFExporter(tasks); // создаём экспортёр exporter.export(response); // экспортируем в ответ } // Обработка формы назначения исполнителя к задаче @PostMapping("/assignments/send") public String sendInvitation(@RequestParam("firstName") String firstName, @RequestParam("lastName") String lastName, @RequestParam("position") String position, @RequestParam("email") String email, @RequestParam("taskId") Long taskId) { // Получаем задачу по ID Task task = taskService.getTaskById(taskId).orElse(null); if (task != null) { // Формируем строку с ФИО и должностью исполнителя String assignedTo = firstName + " " + lastName + ", " + position; task.setAssignedTo(assignedTo); // сохраняем исполнителя в задаче taskService.updateTask(task); // обновляем задачу } return "redirect:/tasks"; // редирект обратно к списку задач } }