implemented deletion of tags upon deletion of task
This commit is contained in:
@@ -4,11 +4,13 @@ package de.srsoftware.umbrella.task;
|
||||
public class Constants {
|
||||
private Constants(){}
|
||||
|
||||
|
||||
public static final String CONFIG_DATABASE = "umbrella.modules.task.database";
|
||||
public static final String CHILDREN = "children";
|
||||
public static final String ESTIMATED_TIMES = "estimated_times";
|
||||
public static final String TABLE_TASKS = "tasks";
|
||||
public static final String TABLE_TASKS_USERS = "tasks_users";
|
||||
public static final String TASK = "task";
|
||||
public static final String TASKS = "tasks";
|
||||
public static final String TASK_ID = "task_id";
|
||||
}
|
||||
|
||||
@@ -21,10 +21,7 @@ import de.srsoftware.configuration.Configuration;
|
||||
import de.srsoftware.tools.Path;
|
||||
import de.srsoftware.tools.SessionToken;
|
||||
import de.srsoftware.umbrella.core.BaseHandler;
|
||||
import de.srsoftware.umbrella.core.api.CompanyService;
|
||||
import de.srsoftware.umbrella.core.api.ProjectService;
|
||||
import de.srsoftware.umbrella.core.api.TaskService;
|
||||
import de.srsoftware.umbrella.core.api.UserService;
|
||||
import de.srsoftware.umbrella.core.api.*;
|
||||
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
|
||||
import de.srsoftware.umbrella.core.model.*;
|
||||
import de.srsoftware.umbrella.core.model.Task;
|
||||
@@ -40,12 +37,14 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
private final ProjectService projects;
|
||||
private final UserService users;
|
||||
private final CompanyService companies;
|
||||
private final TagService tags;
|
||||
|
||||
public TaskModule(Configuration config, ProjectService projectService) throws UmbrellaException {
|
||||
public TaskModule(Configuration config, ProjectService projectService, TagService tagService) throws UmbrellaException {
|
||||
var dbFile = config.get(CONFIG_DATABASE).orElseThrow(() -> missingFieldException(CONFIG_DATABASE));
|
||||
taskDb = new SqliteDb(connect(dbFile));
|
||||
projects = projectService;
|
||||
companies = projectService.companyService();
|
||||
tags = tagService;
|
||||
users = companies.userService();
|
||||
}
|
||||
|
||||
@@ -66,6 +65,7 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
var member = task.members().get(user.id());
|
||||
if (member == null || !member.mayWrite()) throw forbidden("You are not allowed to delete {0}",task.name());
|
||||
taskDb.delete(task);
|
||||
tags.deleteEntity(TASK,taskId);
|
||||
return sendContent(ex,Map.of(DELETED,taskId));
|
||||
}
|
||||
|
||||
@@ -304,12 +304,18 @@ public class TaskModule extends BaseHandler implements TaskService {
|
||||
|
||||
Task task = Task.of(json);
|
||||
task = taskDb.save(task);
|
||||
var memberIds = new HashSet<Long>();
|
||||
for (var key : memberData.keySet()){
|
||||
long userId = Long.parseLong(key);
|
||||
memberIds.add(userId);
|
||||
var nested = memberData.getJSONObject(key).getJSONObject(PERMISSION);
|
||||
var permission = nested.has(CODE) ? Permission.of(nested.getInt(CODE)) : Permission.valueOf(nested.getString(NAME));
|
||||
taskDb.setMember(task.id(),userId,permission);
|
||||
}
|
||||
if (isSet(task.parentTaskId())){
|
||||
var tagList = tags.getTags(TASK,task.parentTaskId(),user);
|
||||
tags.save(TASK,task.id(),memberIds,tagList);
|
||||
}
|
||||
return sendContent(ex,loadMembers(task));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user