implemented editing of custom states
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -97,6 +97,7 @@ public class ProjectModule extends BaseHandler implements ProjectService {
|
||||
head = path.pop();
|
||||
yield switch (head){
|
||||
case null -> patchProject(ex,projectId,user.get());
|
||||
case Path.STATE -> patchProjectState(ex,projectId,user.get());
|
||||
default -> super.doPatch(path,ex);
|
||||
};
|
||||
}
|
||||
@@ -229,6 +230,19 @@ public class ProjectModule extends BaseHandler implements ProjectService {
|
||||
return sendContent(ex,project.toMap());
|
||||
}
|
||||
|
||||
private boolean patchProjectState(HttpExchange ex, long projectId, UmbrellaUser user) throws IOException {
|
||||
var project = loadMembers(projectDb.load(projectId));
|
||||
if (!project.hasMember(user)) throw notAmember(t(PROJECT_WITH_ID,ID,project.name()));
|
||||
var json = json(ex);
|
||||
if (!json.has(ID)) throw missingField(ID);
|
||||
if (!json.has(NAME)) throw missingField(NAME);
|
||||
if (!(json.get(ID) instanceof Number fieldId)) throw invalidField(ID,Text.NUMBER);
|
||||
var newName = json.getString(NAME);
|
||||
if (newName.isBlank()) throw invalidField(NAME, STRING);
|
||||
var newState = new Status(newName,fieldId.intValue());
|
||||
return sendContent(ex, projectDb.save(projectId,newState));
|
||||
|
||||
}
|
||||
|
||||
private boolean postNewState(HttpExchange ex, long projectId, UmbrellaUser user) throws IOException {
|
||||
var project = loadMembers(load(projectId));
|
||||
|
||||
@@ -267,7 +267,7 @@ CREATE TABLE IF NOT EXISTS {0} (
|
||||
@Override
|
||||
public Status save(long projectId, Status newState) {
|
||||
try {
|
||||
insertInto(TABLE_CUSTOM_STATES, PROJECT_ID, Field.CODE, NAME).values(projectId,newState.code(),newState.name()).execute(db).close();
|
||||
replaceInto(TABLE_CUSTOM_STATES, PROJECT_ID, Field.CODE, NAME).values(projectId,newState.code(),newState.name()).execute(db).close();
|
||||
return newState;
|
||||
} catch (SQLException e) {
|
||||
throw databaseException(FAILED_TO_CREATE_STATE).causedBy(e);
|
||||
|
||||
Reference in New Issue
Block a user