implemented patching of project tasks when new user is added to project
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -260,7 +260,7 @@ CREATE TABLE IF NOT EXISTS {0} (
|
||||
try {
|
||||
var query = select(ALL).from(TABLE_TASKS).leftJoin(ID,TABLE_TASKS_USERS,TASK_ID).where(USER_ID,equal(userId));
|
||||
if (!showClosed) query.where(STATUS,lessThan(COMPLETE.code()));
|
||||
var rs = query.sort("(CASE due_date WHEN \"\" THEN '9999-99-99' ELSE IFNULL(due_date,'9999-99-99') END), status COLLATE NOCASE").limit(limit).skip(offset).exec(db);
|
||||
var rs = query.sort("(CASE due_date WHEN \"\" THEN '9999-99-99' ELSE IFNULL(due_date,'9999-99-99') END), status COLLATE NOCASE").limit(limit == null ? -1 : limit).skip(offset).exec(db);
|
||||
var map = new ArrayList<Task>();
|
||||
while (rs.next()) map.add(Task.of(rs));
|
||||
rs.close();
|
||||
|
||||
@@ -66,6 +66,28 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
return user;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clonePermissions(long project_id, UmbrellaUser source, UmbrellaUser dest) {
|
||||
var taskMap = taskDb.listProjectTasks(project_id,null,true);
|
||||
loadMembers(taskMap.values());
|
||||
for (var task : taskMap.values()) {
|
||||
var memberShip = task.members().get(source.id());
|
||||
|
||||
Permission granted = memberShip == null ? EDIT : switch (memberShip.permission()) {
|
||||
case ASSIGNEE,
|
||||
EDIT,
|
||||
OWNER ->
|
||||
EDIT;
|
||||
case READ_ONLY ->
|
||||
READ_ONLY;
|
||||
};
|
||||
var newMember = new Member(dest, granted);
|
||||
task.members().put(dest.id(), newMember);
|
||||
task.dirty(MEMBERS);
|
||||
taskDb.save(task);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean deleteTask(HttpExchange ex, long taskId, UmbrellaUser user) throws IOException {
|
||||
var task = loadMembers(taskDb.load(taskId));
|
||||
var member = task.members().get(user.id());
|
||||
|
||||
Reference in New Issue
Block a user