56 lines
2.0 KiB
Java

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