kanban bugfixes & improvements

This commit is contained in:
2025-07-27 02:02:00 +02:00
parent 880fed250b
commit 2ce9ebbc6d
3 changed files with 71 additions and 24 deletions

View File

@@ -218,13 +218,21 @@ public class TaskModule extends BaseHandler implements TaskService {
} catch (NumberFormatException e) {
throw invalidFieldException(USER_ID,"long");
}
if (!(json.get(key) instanceof Number number)) throw invalidFieldException(PERMISSION,"int");
var permission = Permission.of(number.intValue());
var permission = switch (json.get(key)){
case Number code -> Permission.of(code.intValue());
case String name -> Permission.valueOf(name);
default -> throw invalidFieldException(PERMISSION,"int / String");
};
if (permission == OWNER) { // if a new person is about to become the task owner
for (var member : members.values()){ // alter the previous owners to editors
if (member.permission() == OWNER) members.put(member.user().id(),new Member(member.user(),EDIT));
}
}
if (permission == ASSIGNEE) { // if a new person is about to become the task owner
for (var member : members.values()){ // alter the previous owners to editors
if (member.permission() == ASSIGNEE) members.put(member.user().id(),new Member(member.user(),EDIT));
}
}
members.put(userId,new Member(users.loadUser(userId),permission));
task.dirty(MEMBERS);
}
@@ -253,8 +261,6 @@ public class TaskModule extends BaseHandler implements TaskService {
projects.loadMembers(List.of(project));
var member = project.members().get(user.id());
if (member == null || member.permission() == READ_ONLY) throw forbidden("You are not allowed to create new tasks in this project");
Task task = Task.of(json);
task = taskDb.save(task);
for (var key : memberData.keySet()){
long userId = Long.parseLong(key);
if (!(memberData.get(key) instanceof JSONObject nested)) throw invalidFieldException("members."+userId,"JSON");
@@ -264,7 +270,14 @@ public class TaskModule extends BaseHandler implements TaskService {
String username = nested.has(USER) && nested.get(USER) instanceof JSONObject userData && userData.get(NAME) instanceof String n ? n : key;
throw new UmbrellaException(HTTP_BAD_REQUEST,"User {0} is no member of the leading project and cannot be assigned to this task",username);
}
taskDb.setMember(task.id(),userId,Permission.of(code.intValue()));
}
Task task = Task.of(json);
task = taskDb.save(task);
for (var key : memberData.keySet()){
long userId = Long.parseLong(key);
var code = memberData.getJSONObject(key).getJSONObject(PERMISSION).getInt(CODE);
taskDb.setMember(task.id(),userId,Permission.of(code));
}
return sendContent(ex,task);
}