working on meaningfull messages for task and project related events

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2026-01-19 21:09:25 +01:00
parent be8f21c734
commit a8d1b376a2
11 changed files with 148 additions and 32 deletions

View File

@@ -7,6 +7,7 @@ import static de.srsoftware.umbrella.core.ModuleRegistry.*;
import static de.srsoftware.umbrella.core.ResponseCode.HTTP_NOT_IMPLEMENTED;
import static de.srsoftware.umbrella.core.Util.mapValues;
import static de.srsoftware.umbrella.core.constants.Field.*;
import static de.srsoftware.umbrella.core.constants.Field.PROJECT;
import static de.srsoftware.umbrella.core.constants.Field.TAGS;
import static de.srsoftware.umbrella.core.constants.Field.TASKS;
import static de.srsoftware.umbrella.core.constants.Module.TASK;
@@ -56,11 +57,12 @@ public class TaskModule extends BaseHandler implements TaskService {
ModuleRegistry.add(this);
}
private void addMember(Task task, long userId) {
private UmbrellaUser addMember(Task task, long userId) {
var user = userService().loadUser(userId);
var member = new Member(user, READ_ONLY);
task.members().put(userId, member);
task.dirty(MEMBERS);
return user;
}
private boolean deleteTask(HttpExchange ex, long taskId, UmbrellaUser user) throws IOException {
@@ -328,12 +330,15 @@ public class TaskModule extends BaseHandler implements TaskService {
var member = task.members().get(user.id());
if (member == null || member.permission() == READ_ONLY) throw forbidden("You are not a allowed to edit {object}!", OBJECT, task.name());
var json = json(ex);
if (json.has(PARENT_TASK_ID) && json.get(PARENT_TASK_ID) instanceof Number ptid && newParentIsSubtask(task, ptid.longValue())) throw forbidden("Task must not be sub-task of itself.");
UmbrellaUser newMember = null;
if (json.has(DROP_MEMBER) && json.get(DROP_MEMBER) instanceof Number id) dropMember(task, id.longValue());
if (json.has(MEMBERS) && json.get(MEMBERS) instanceof JSONObject memberJson) patchMembers(task, memberJson);
if (json.has(NEW_MEMBER) && json.get(NEW_MEMBER) instanceof Number num) addMember(task, num.longValue());
if (json.has(PARENT_TASK_ID) && json.get(PARENT_TASK_ID) instanceof Number ptid && newParentIsSubtask(task, ptid.longValue())) throw forbidden("Task must not be sub-task of itself.");
if (json.has(NEW_MEMBER) && json.get(NEW_MEMBER) instanceof Number num) newMember = addMember(task, num.longValue());
task = taskDb.save(task.patch(json)).tags(tagService().getTags(TASK, taskId, user));
messageBus().dispatch(new TaskEvent(user, task, old));
messageBus().dispatch(newMember != null ? new TaskEvent(user, task, newMember) : new TaskEvent(user, task, old));
return sendContent(ex, task);
}