src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java

changeset 136
7281bdf43c60
parent 134
f47e82cd6077
child 137
a7e543ab0c5f
--- a/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java	Sat Oct 17 20:06:14 2020 +0200
+++ b/src/main/java/de/uapcore/lightpit/modules/ProjectsModule.java	Thu Oct 22 11:06:15 2020 +0200
@@ -46,6 +46,7 @@
 import java.sql.SQLException;
 import java.util.List;
 import java.util.NoSuchElementException;
+import java.util.Optional;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -453,16 +454,28 @@
     public ResponseType commitIssue(HttpServletRequest req, HttpServletResponse resp, DataAccessObjects dao) throws IOException {
         try {
             final var issue = new Issue(getParameter(req, Integer.class, "id").orElseThrow());
+            final var componentId = getParameter(req, Integer.class, "component");
+            final Component component;
+            if (componentId.isPresent()) {
+                component = dao.getComponentDao().find(componentId.get());
+            } else {
+                component = null;
+            }
             issue.setProject(new Project(getParameter(req, Integer.class, "pid").orElseThrow()));
             getParameter(req, String.class, "category").map(IssueCategory::valueOf).ifPresent(issue::setCategory);
             getParameter(req, String.class, "status").map(IssueStatus::valueOf).ifPresent(issue::setStatus);
             issue.setSubject(getParameter(req, String.class, "subject").orElseThrow());
-            getParameter(req, Integer.class, "assignee").map(
-                    userid -> userid >= 0 ? new User(userid) : null
+            issue.setComponent(component);
+            getParameter(req, Integer.class, "assignee").map(userid -> {
+                if (userid >= 0) {
+                    return new User(userid);
+                } else if (userid == -2) {
+                    return Optional.ofNullable(component).map(Component::getLead).orElse(null);
+                } else {
+                    return null;
+                }
+            }
             ).ifPresent(issue::setAssignee);
-            getParameter(req, Integer.class, "component").map(
-                    cid -> cid >= 0 ? new Component(cid) : null
-            ).ifPresent(issue::setComponent);
             getParameter(req, String.class, "description").ifPresent(issue::setDescription);
             getParameter(req, Date.class, "eta").ifPresent(issue::setEta);
 

mercurial