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.ProjectDto; import ru.ulstu.fc.project.service.ProjectRulesService; import ru.ulstu.fc.project.service.ProjectService; import ru.ulstu.fc.project.service.ProjectVariableService; import ru.ulstu.fc.user.model.UserRoleConstants; @Controller @Hidden @RequestMapping("project") @Secured({UserRoleConstants.ADMIN}) public class ProjectController { private final ProjectService projectService; private final ProjectRulesService projectRulesService; private final ProjectVariableService projectVariableService; public ProjectController(ProjectService projectService, ProjectRulesService projectRulesService, ProjectVariableService projectVariableService) { this.projectService = projectService; this.projectRulesService = projectRulesService; this.projectVariableService = projectVariableService; } @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 ProjectDto((id != null && id != 0) ? projectService.getById(id) : new Project())); model.addAttribute("rules", projectRulesService.getByProjectId(id)); model.addAttribute("variables", projectVariableService.getByProjectId(id)); return "project/edit"; } @PostMapping(value = "save", params = "save") public String save(ProjectDto projectDto, Model model) { model.addAttribute("project", projectService.save(projectDto)); return "redirect:/project/list"; } @PostMapping(value = "save", params = "delete") public String delete(ProjectDto projectDto) { if (projectDto != null && projectDto.getId() != null) { projectService.delete(projectDto); } return "redirect:/project/list"; } }