|
|
|
|
@ -5,8 +5,7 @@ import static de.srsoftware.tools.Optionals.is0;
@@ -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 {
@@ -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 {
@@ -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 {
@@ -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; |
|
|
|
|
|