package ru.ulstu.fc.project.controller; import io.swagger.v3.oas.annotations.Hidden; import org.springframework.security.access.annotation.Secured; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import ru.ulstu.fc.project.model.Project; import ru.ulstu.fc.project.model.ProjectForm; import ru.ulstu.fc.project.service.ProjectService; import ru.ulstu.fc.user.model.UserRoleConstants; @Controller @Hidden @RequestMapping("project") @Secured({UserRoleConstants.ADMIN}) public class ProjectController { private final ProjectService projectService; public ProjectController(ProjectService projectService) { this.projectService = projectService; } @GetMapping("list") public String getProjects(Model model) { model.addAttribute("projects", projectService.getCurrentUserProjects()); return "project/list"; } @GetMapping("/edit/{projectId}") public String edit(@PathVariable(value = "projectId") Integer id, Model model) { model.addAttribute("project", new ProjectForm((id != null && id != 0) ? projectService.getById(id) : new Project())); return "project/edit"; } @PostMapping(value = "save", params = "save") public String save(ProjectForm projectForm, Model model) { model.addAttribute("project", projectService.save(projectForm)); return "redirect:/project/list"; } @PostMapping(value = "save", params = "delete") public String delete(ProjectForm projectForm) { if (projectForm != null && projectForm.getId() != null) { projectService.delete(projectForm); } return "redirect:/project/list"; } }