|
|
|
|
@ -13,8 +13,8 @@ import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*;
@@ -13,8 +13,8 @@ import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*;
|
|
|
|
|
import static de.srsoftware.umbrella.core.model.Permission.*; |
|
|
|
|
import static de.srsoftware.umbrella.project.Constants.PERMISSIONS; |
|
|
|
|
import static de.srsoftware.umbrella.task.Constants.*; |
|
|
|
|
import static java.lang.System.Logger.Level.DEBUG; |
|
|
|
|
import static java.lang.System.Logger.Level.WARNING; |
|
|
|
|
import static java.net.HttpURLConnection.HTTP_BAD_REQUEST; |
|
|
|
|
|
|
|
|
|
import com.sun.net.httpserver.HttpExchange; |
|
|
|
|
import de.srsoftware.configuration.Configuration; |
|
|
|
|
@ -385,14 +385,20 @@ public class TaskModule extends BaseHandler implements TaskService {
@@ -385,14 +385,20 @@ public class TaskModule extends BaseHandler implements TaskService {
|
|
|
|
|
private boolean postTaskList(UmbrellaUser user, HttpExchange ex) throws IOException { |
|
|
|
|
var json = json(ex); |
|
|
|
|
LOG.log(WARNING, "Missing permission check in {0}.postTaskList!", getClass().getSimpleName()); |
|
|
|
|
var showClosed = json.has(SHOW_CLOSED) && json.get(SHOW_CLOSED) instanceof Boolean bool ? bool : false; |
|
|
|
|
var noIndex = json.has(NO_INDEX) && json.get(NO_INDEX) instanceof Boolean bool ? bool : false; |
|
|
|
|
var projectId = json.has(PROJECT_ID) && json.get(PROJECT_ID) instanceof Number number ? number.longValue() : null; |
|
|
|
|
var showClosed = json.has(SHOW_CLOSED) && json.get(SHOW_CLOSED) instanceof Boolean bool ? bool : false; |
|
|
|
|
var noIndex = json.has(NO_INDEX) && json.get(NO_INDEX) instanceof Boolean bool ? bool : false; |
|
|
|
|
var projectId = json.has(PROJECT_ID) && json.get(PROJECT_ID) instanceof Number number ? number.longValue() : null; |
|
|
|
|
var parentTaskId = json.has(PARENT_TASK_ID) && json.get(PARENT_TASK_ID) instanceof Number number ? number.longValue() : null; |
|
|
|
|
if (isSet(projectId)) { |
|
|
|
|
if (parentTaskId == null) return sendContent(ex, mapValues(taskDb.listRootTasks(projectId, user, showClosed))); |
|
|
|
|
if (parentTaskId == null) { |
|
|
|
|
var list = taskDb.listRootTasks(projectId, user, showClosed); |
|
|
|
|
return sendContent(ex, mapValues(list)); |
|
|
|
|
} |
|
|
|
|
var projectTasks = taskDb.listProjectTasks(projectId, parentTaskId, noIndex); |
|
|
|
|
loadMembers(projectTasks.values()); |
|
|
|
|
var tags = tagService().getTags(TASK,projectTasks.keySet(),user); |
|
|
|
|
|
|
|
|
|
projectTasks = addTags(projectTasks, tags); |
|
|
|
|
return sendContent(ex, mapValues(projectTasks)); |
|
|
|
|
} |
|
|
|
|
if (isSet(parentTaskId)) return sendContent(ex, mapValues(taskDb.listChildrenOf(parentTaskId, user, showClosed))); |
|
|
|
|
@ -400,4 +406,25 @@ public class TaskModule extends BaseHandler implements TaskService {
@@ -400,4 +406,25 @@ public class TaskModule extends BaseHandler implements TaskService {
|
|
|
|
|
if (isSet(taskIds)) return sendContent(ex, mapValues(taskDb.load(taskIds))); |
|
|
|
|
return sendEmptyResponse(HTTP_NOT_IMPLEMENTED, ex); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private static class TaggedTask extends Task{ |
|
|
|
|
|
|
|
|
|
private final Collection<String> tags; |
|
|
|
|
|
|
|
|
|
public TaggedTask(Task task, Collection<String> tags) { |
|
|
|
|
super(task.id(), task.projectId(), task.parentTaskId(), task.name(), task.description(), task.status(), task.estimatedTime(), task.start(), task.dueDate(), task.showClosed(), task.noIndex(), task.members(), task.priority()); |
|
|
|
|
this.tags = tags; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public Map<String, Object> toMap() { |
|
|
|
|
var map = super.toMap(); |
|
|
|
|
map.put(TAGS,tags); |
|
|
|
|
return map; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Map<Long, Task> addTags(Map<Long, Task> taskList, Map<Long, ? extends Collection<String>> tags) { |
|
|
|
|
return taskList.values().stream().map(task -> new TaggedTask(task, tags.get(task.id()))).collect(Collectors.toMap(Task::id, t -> t)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|