working on project view

This commit is contained in:
2025-07-20 00:09:02 +02:00
parent a14b541c91
commit 8ab3e8792a
10 changed files with 136 additions and 46 deletions

View File

@@ -11,6 +11,7 @@ import static de.srsoftware.umbrella.task.Constants.*;
import static java.lang.System.Logger.Level.WARNING;
import de.srsoftware.umbrella.core.exceptions.UmbrellaException;
import de.srsoftware.umbrella.core.model.Status;
import de.srsoftware.umbrella.core.model.Task;
import de.srsoftware.umbrella.core.model.UmbrellaUser;
import java.sql.Connection;
@@ -42,14 +43,15 @@ public class SqliteDb implements TaskDb {
}
}
public HashMap<Long, Task> listRootTasks(UmbrellaUser user, Long projectId) {
public HashMap<Long, Task> listRootTasks(Long projectId, UmbrellaUser user, boolean showClosed) {
try {
var tasks = new HashMap<Long,Task>();
var rs = select(ALL).from(TABLE_TASKS).leftJoin(ID,TABLE_TASKS_USERS,TASK_ID)
var query = select(ALL).from(TABLE_TASKS).leftJoin(ID,TABLE_TASKS_USERS,TASK_ID)
.where(PROJECT_ID,equal(projectId))
.where(USER_ID,equal(user.id()))
.where(PARENT_TASK_ID,isNull())
.exec(db);
.where(PARENT_TASK_ID,isNull());
if (!showClosed) query.where(STATUS,lessThan(Status.COMPLETE.code()));
var rs = query.exec(db);
while (rs.next()){
var task = Task.of(rs);
tasks.put(task.id(),task);
@@ -61,4 +63,24 @@ public class SqliteDb implements TaskDb {
throw new UmbrellaException(HTTP_SERVER_ERROR,"Failed to load tasks for project id");
}
}
public HashMap<Long, Task> listChildrenOf(Long parentTaskId, UmbrellaUser user, boolean showClosed) {
try {
var tasks = new HashMap<Long,Task>();
var query = select(ALL).from(TABLE_TASKS).leftJoin(ID,TABLE_TASKS_USERS,TASK_ID)
.where(PARENT_TASK_ID,equal(parentTaskId))
.where(USER_ID,equal(user.id()));
if (!showClosed) query.where(STATUS,lessThan(Status.COMPLETE.code()));
var rs = query.exec(db);
while (rs.next()){
var task = Task.of(rs);
tasks.put(task.id(),task);
}
rs.close();
return tasks;
} catch (SQLException e){
LOG.log(WARNING,"Failed to load child tasks (parentTaskId: {0}, user_id: {1}",parentTaskId,user.id(),e);
throw new UmbrellaException(HTTP_SERVER_ERROR,"Failed to load tasks for project id");
}
}
}

View File

@@ -4,8 +4,7 @@ package de.srsoftware.umbrella.task;
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.COMPANY_ID;
import static de.srsoftware.umbrella.core.Constants.PROJECT_ID;
import static de.srsoftware.umbrella.core.Constants.*;
import static de.srsoftware.umbrella.core.Paths.LIST;
import static de.srsoftware.umbrella.core.ResponseCode.HTTP_NOT_IMPLEMENTED;
import static de.srsoftware.umbrella.core.Util.mapValues;
@@ -117,8 +116,11 @@ public class TaskModule extends BaseHandler implements TaskService {
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;
var projectId = json.has(PROJECT_ID) && json.get(PROJECT_ID) instanceof Number number ? number.longValue() : null;
if (isSet(projectId)) return sendContent(ex,mapValues(taskDb.listRootTasks(user,projectId)));
if (isSet(projectId)) return sendContent(ex,mapValues(taskDb.listRootTasks(projectId, user,showClosed)));
var parentTaskId = json.has(PARENT_TASK_ID) && json.get(PARENT_TASK_ID) instanceof Number number ? number.longValue() : null;
if (isSet(parentTaskId)) return sendContent(ex,mapValues(taskDb.listChildrenOf(parentTaskId,user,showClosed)));
return sendEmptyResponse(HTTP_NOT_IMPLEMENTED,ex);
}