From 7cc6e88c35c506f1cdc84a54b19925dab915a193 Mon Sep 17 00:00:00 2001 From: Anton Romanov Date: Sat, 15 Feb 2025 14:04:31 +0400 Subject: [PATCH] #11 -- Add project crud --- .../project/controller/ProjectController.java | 26 +++++++++---- .../ulstu/fc/project/model/ProjectForm.java | 16 ++++++++ src/main/resources/templates/login.html | 3 +- .../resources/templates/project/edit.html | 39 +++++++++++++++++++ .../resources/templates/project/list.html | 22 +++++++++++ 5 files changed, 97 insertions(+), 9 deletions(-) create mode 100644 src/main/resources/templates/project/edit.html create mode 100644 src/main/resources/templates/project/list.html diff --git a/src/main/java/ru/ulstu/fc/project/controller/ProjectController.java b/src/main/java/ru/ulstu/fc/project/controller/ProjectController.java index 35c42d5..85c28a8 100644 --- a/src/main/java/ru/ulstu/fc/project/controller/ProjectController.java +++ b/src/main/java/ru/ulstu/fc/project/controller/ProjectController.java @@ -4,10 +4,11 @@ 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.DeleteMapping; 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; @@ -26,18 +27,29 @@ public class ProjectController { @GetMapping("list") public String getProjects(Model model) { model.addAttribute("projects", projectService.getCurrentUserProjects()); - return "listProjects"; + return "project/list"; } - @PostMapping("save") + @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:/list"; + return "redirect:/project/list"; } - @DeleteMapping("delete") + @PostMapping(value = "save", params = "delete") public String delete(ProjectForm projectForm) { - projectService.delete(projectForm); - return "redirect:/list"; + if (projectForm != null && projectForm.getId() != null) { + projectService.delete(projectForm); + } + return "redirect:/project/list"; } } diff --git a/src/main/java/ru/ulstu/fc/project/model/ProjectForm.java b/src/main/java/ru/ulstu/fc/project/model/ProjectForm.java index 5c06899..a03532b 100644 --- a/src/main/java/ru/ulstu/fc/project/model/ProjectForm.java +++ b/src/main/java/ru/ulstu/fc/project/model/ProjectForm.java @@ -1,8 +1,20 @@ package ru.ulstu.fc.project.model; +import java.util.Date; + public class ProjectForm { private Integer id; private String name; + private Date createDate; + + public ProjectForm() { + } + + public ProjectForm(Project project) { + this.id = project.getId(); + this.name = project.getName(); + this.createDate = project.getCreateDate(); + } public Integer getId() { return id; @@ -19,4 +31,8 @@ public class ProjectForm { public void setName(String name) { this.name = name; } + + public Date getCreateDate() { + return createDate; + } } diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 20cb039..d84a8aa 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -8,8 +8,7 @@
diff --git a/src/main/resources/templates/project/edit.html b/src/main/resources/templates/project/edit.html new file mode 100644 index 0000000..18aefd0 --- /dev/null +++ b/src/main/resources/templates/project/edit.html @@ -0,0 +1,39 @@ + + + + Редактирование проекта + + +
+

Редактирование проекта:

+
+ +
+ + +

+ Не может быть пустым +

+
+
+ +
+ + + Отмена +
+
+ diff --git a/src/main/resources/templates/project/list.html b/src/main/resources/templates/project/list.html new file mode 100644 index 0000000..69e049c --- /dev/null +++ b/src/main/resources/templates/project/list.html @@ -0,0 +1,22 @@ + + + + Список правил + + + +