working on project view
This commit is contained in:
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user