Refactor schematic checks to handle unseen notifications

This commit is contained in:
2025-03-24 16:50:39 +01:00
parent 0da3ebfbcc
commit 71522973a7
4 changed files with 62 additions and 21 deletions
@@ -37,15 +37,26 @@ public class CheckedSchematic {
private static final SelectStatement<CheckedSchematic> nodeHistory = new SelectStatement<>(table, "SELECT * FROM CheckedSchematic WHERE NodeId = ? AND DeclineReason != '' AND DeclineReason != 'Prüfvorgang abgebrochen' ORDER BY EndTime DESC");
private static final Statement insert = table.insertAll();
public static void create(int nodeId, String name, int owner, int validator, Timestamp startTime, Timestamp endTime, String reason){
insert.update(nodeId, owner, name, validator, startTime, endTime, reason);
private static final SelectStatement<CheckedSchematic> getUnseen = new SelectStatement<>(table, "SELECT * FROM CheckedSchematic WHERE Seen = 0 AND NodeOwner = ? ORDER BY StartTime DESC");
private static final Statement updateSeen = new Statement("UPDATE CheckedSchematic SET Seen = ? WHERE StartTime = ? AND EndTime = ? AND NodeName = ?");
public static void create(int nodeId, String name, int owner, int validator, Timestamp startTime, Timestamp endTime, String reason, boolean seen, String nodeType) {
insert.update(nodeId, owner, name, validator, startTime, endTime, reason, seen, nodeType);
}
public static void create(SchematicNode node, int validator, Timestamp startTime, Timestamp endTime, String reason){
create(node.getId(), node.getName(), node.getOwner(), validator, startTime, endTime, reason);
public static void create(int nodeId, String name, int owner, int validator, Timestamp startTime, Timestamp endTime, String reason, String nodeType) {
create(nodeId, name, owner, validator, startTime, endTime, reason, true, nodeType);
}
public static List<CheckedSchematic> getLastDeclinedOfNode(int node){
public static void create(SchematicNode node, int validator, Timestamp startTime, Timestamp endTime, String reason, boolean seen) {
create(node.getId(), node.getName(), node.getOwner(), validator, startTime, endTime, reason, seen, node.getSchemtype().toDB());
}
public static void create(SchematicNode node, int validator, Timestamp startTime, Timestamp endTime, String reason) {
create(node.getId(), node.getName(), node.getOwner(), validator, startTime, endTime, reason, true, node.getSchemtype().toDB());
}
public static List<CheckedSchematic> getLastDeclinedOfNode(int node) {
return statusOfNode.listSelect(node);
}
@@ -53,6 +64,10 @@ public class CheckedSchematic {
return nodeHistory.listSelect(node.getId());
}
public static List<CheckedSchematic> getUnseen(SteamwarUser owner) {
return getUnseen.listSelect(owner);
}
@Field(nullable = true)
private final Integer nodeId;
@Field
@@ -71,6 +86,10 @@ public class CheckedSchematic {
@Getter
@Field
private final String declineReason;
@Getter
private boolean seen;
@Getter
private final String nodeType;
public int getNode() {
return nodeId;
@@ -83,4 +102,9 @@ public class CheckedSchematic {
public int getSchemOwner() {
return nodeOwner;
}
public void setSeen(boolean seen) {
this.seen = seen;
updateSeen.update(seen, startTime, endTime, nodeName);
}
}