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

@@ -50,11 +50,12 @@ public class ProjectModule extends BaseHandler implements ProjectService {
ModuleRegistry.add(this);
}
private void addMember(Project project, long userId) {
private UmbrellaUser addMember(Project project, long userId) {
var user = userService().loadUser(userId);
var member = new Member(user,READ_ONLY);
project.members().put(userId,member);
project.dirty(MEMBERS);
return user;
}
@Override
@@ -217,12 +218,13 @@ public class ProjectModule extends BaseHandler implements ProjectService {
if (!project.hasMember(user)) throw notAmember(t(PROJECT_WITH_ID,ID,project.name()));
var old = project.toMap();
var json = json(ex);
UmbrellaUser newMember = null;
if (json.has(DROP_MEMBER) && json.get(DROP_MEMBER) instanceof Number id) dropMember(project,id.longValue());
if (json.has(MEMBERS) && json.get(MEMBERS) instanceof JSONObject memberJson) patchMembers(project,memberJson);
if (json.has(NEW_MEMBER) && json.get(NEW_MEMBER) instanceof Number num) addMember(project,num.longValue());
if (json.has(NEW_MEMBER) && json.get(NEW_MEMBER) instanceof Number num) newMember = addMember(project,num.longValue());
project = projectDb.save(project.patch(json), user);
messageBus().dispatch(new ProjectEvent(user,project, old));
messageBus().dispatch(newMember != null ? new ProjectEvent(user,project,newMember) : new ProjectEvent(user,project, old));
return sendContent(ex,project.toMap());
}

View File

@@ -7,6 +7,7 @@ import static de.srsoftware.tools.jdbc.Query.SelectQuery.ALL;
import static de.srsoftware.umbrella.core.Errors.*;
import static de.srsoftware.umbrella.core.constants.Constants.TABLE_SETTINGS;
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.TYPE;
import static de.srsoftware.umbrella.core.constants.Text.*;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*;