preparing to save ne task

This commit is contained in:
2025-07-23 18:47:52 +02:00
parent 2625c360b8
commit 9cbcfb3b7f
5 changed files with 48 additions and 9 deletions

View File

@@ -5,8 +5,7 @@ import static de.srsoftware.tools.Optionals.is0;
import static de.srsoftware.tools.Optionals.isSet;
import static de.srsoftware.umbrella.core.ConnectionProvider.connect;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.Paths.LIST;
import static de.srsoftware.umbrella.core.Paths.STATES;
import static de.srsoftware.umbrella.core.Paths.*;
import static de.srsoftware.umbrella.core.ResponseCode.HTTP_NOT_IMPLEMENTED;
import static de.srsoftware.umbrella.core.Util.mapValues;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.forbidden;
@@ -38,7 +37,7 @@ public class TaskModule extends BaseHandler implements TaskService {
private final UserService users;
private final CompanyService companies;
public TaskModule(Configuration config, ProjectService projectService) throws UmbrellaException {
public TaskModule(Configuration config, ProjectService projectService) throws UmbrellaException {
var dbFile = config.get(CONFIG_DATABASE).orElseThrow(() -> missingFieldException(CONFIG_DATABASE));
taskDb = new SqliteDb(connect(dbFile));
projects = projectService;
@@ -83,6 +82,7 @@ public class TaskModule extends BaseHandler implements TaskService {
if (user.isEmpty()) return unauthorized(ex);
var head = path.pop();
return switch (head) {
case ADD -> postNewTask(user.get(),ex);
case ESTIMATED_TIMES -> estimatedTimes(user.get(),ex);
case LIST -> postTaskList(user.get(),ex);
default -> super.doGet(path,ex);
@@ -171,6 +171,17 @@ public class TaskModule extends BaseHandler implements TaskService {
return mappedTask;
}
private boolean postNewTask(UmbrellaUser user, HttpExchange ex) throws IOException {
var json = json(ex);
if (!(json.has(PROJECT_ID) && json.get(PROJECT_ID) instanceof Number pid)) throw missingFieldException(PROJECT_ID);
long projectId = pid.longValue();
var project = projects.load(projectId);
var member = project.members().get(user.id());
if (member == null || member.permission() == Permission.READ_ONLY) throw forbidden("You are not allowed to create new tasks in this project");
Task task = Task.of(json);
return taskDb.save(task);
}
private boolean postTaskList(UmbrellaUser user, HttpExchange ex) throws IOException {
var json = json(ex);
var showClosed = json.has(SHOW_CLOSED) && json.get(SHOW_CLOSED) instanceof Boolean bool ? bool : false;