diff --git a/backend/src/main/java/com/nttdata/calender/changes/query/Filter.java b/backend/src/main/java/com/nttdata/calender/changes/query/Filter.java index e9b2b78..49f5414 100644 --- a/backend/src/main/java/com/nttdata/calender/changes/query/Filter.java +++ b/backend/src/main/java/com/nttdata/calender/changes/query/Filter.java @@ -102,6 +102,8 @@ public class Filter { var column = current_filter.getColumn(); var criterias = current_filter.getCriteria(); + + if (column.isEmpty() || criterias.length <= 0) { throw new ValidationError("Fields inside filter empty"); } @@ -111,33 +113,45 @@ public class Filter { var dateQualifier = constructDateQualifier(current_filter, column, query, api); qualifier = "(" + dateQualifier + ")"; } else { - column = api.getFieldDatabaseName(query.getFormName(), query.getFieldId(column)); - - var inner_filter = "\'" + column + "\' "; - var inner_concat = " OR "; - var inner_criteria_prefix = ""; - - switch (current_filter.getFilter()) { - case "equals": - inner_filter += "= "; - break; - case "contains": - inner_filter += "LIKE "; - inner_concat = " AND "; - inner_criteria_prefix = "%"; - break; - default: - throw new ValidationError("Invalid inner filter argument"); + if(column.equals("ASF_WI_HighestIntervall") ){ + Integer crit = Integer.parseInt(current_filter.getCriteria()[0]); + System.out.println("\n VORHER: "+qualifier); + qualifier +="(" + "'ASF_WI_HighestIntervall'"+ ">"+ crit + ")"; + System.out.println("\n NACHER: "+qualifier); } + else{ + column = api.getFieldDatabaseName(query.getFormName(), query.getFieldId(column)); - for (int j = 0; j < criterias.length; j++) { - criterias[j] = inner_criteria_prefix + criterias[j] + inner_criteria_prefix; - inner_qualifier += "(" + inner_filter + "\"" + criterias[j] + "\")"; - if (j < criterias.length - 1) { - inner_qualifier += inner_concat; + var inner_filter = "\'" + column + "\' "; + var inner_concat = " OR "; + var inner_criteria_prefix = ""; + + switch (current_filter.getFilter()) { + case "equals": + inner_filter += "= "; + break; + case ">": + inner_filter += ">"; + break; + case "contains": + inner_filter += "LIKE "; + inner_concat = " AND "; + inner_criteria_prefix = "%"; + break; + + default: + throw new ValidationError("Invalid inner filter argument"); } + + for (int j = 0; j < criterias.length; j++) { + criterias[j] = inner_criteria_prefix + criterias[j] + inner_criteria_prefix; + inner_qualifier += "(" + inner_filter + "\"" + criterias[j] + "\")"; + if (j < criterias.length - 1) { + inner_qualifier += inner_concat; + } + } + qualifier += "(" + inner_qualifier + ")"; } - qualifier += "(" + inner_qualifier + ")"; } if (i < filterElement.size() - 1) { diff --git a/frontend/src/app/filter-dialog/filter-dialog.component.html b/frontend/src/app/filter-dialog/filter-dialog.component.html index 0871a25..dc474ee 100644 --- a/frontend/src/app/filter-dialog/filter-dialog.component.html +++ b/frontend/src/app/filter-dialog/filter-dialog.component.html @@ -90,6 +90,15 @@ + + + + Intervall + Pakete mit Intervall > ein Jahr + + + Zeige nur Pakete mit Intervall > 1 Jahr! +