diff --git a/backend/src/main/java/com/nttdata/calender/changes/Change.java b/backend/src/main/java/com/nttdata/calender/changes/Change.java index eb2810e..d626b49 100644 --- a/backend/src/main/java/com/nttdata/calender/changes/Change.java +++ b/backend/src/main/java/com/nttdata/calender/changes/Change.java @@ -92,6 +92,9 @@ public class Change { var peopleFullName = processPeopleInfo(request); var filter = request.getFilter(); + for (var v : filter.getFilterElement()) { + System.out.println(v.getFilter() + ", " + v.getColumn() +", " + v.getCriteria()); + } var qualifier = filter.constructQualifier(queryChange, api); SortInfo sort = request.constructSortInfo(queryChange); 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 0d12c72..3620ffe 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 @@ -103,60 +103,43 @@ public class Filter { var column = current_filter.getColumn(); var criterias = current_filter.getCriteria(); - + System.out.println(current_filter + " | "); if (column.isEmpty() || criterias.length <= 0) { throw new ValidationError("Fields inside filter empty"); } var inner_qualifier = ""; - // if (column.equals("SupportGroup")) { - // qualifier = "(" + "'1000000015' = \""+criterias[0]+"\" OR '1000003229' = \""+criterias[0]+"\")"; - // // } - // if(column.equals("SupportGroup")) { - // String supportGroupColumn = "1000000015"; // api.getFieldDatabaseName(query.getFormName(), query.getFieldId("SupportGroup")); - // String coordGroupColumn = "1000003229"; //api.getFieldDatabaseName(query.getFormName(), query.getFieldId("ManagerGroup")); - // for (int j = 0; j < criterias.length; j++) { - // var criteria = criterias[j]; - // if (j > 0) { - // qualifier += " AND "; - // } - // var orCondition = String.format("('%s' = \"%s\" OR '%s' = \"%s\")", supportGroupColumn, criteria, coordGroupColumn, criteria); - // qualifier += orCondition; - // } - // } - if (column.equals("D2")) { var dateQualifier = constructDateQualifier(current_filter, column, query, api); qualifier = "(" + dateQualifier + ")"; - }else if(column.equals("SupportGroup")){ - String supportGroupColumn = api.getFieldDatabaseName(query.getFormName(), query.getFieldId("SupportGroup")); - String coordGroupColumn = api.getFieldDatabaseName(query.getFormName(), query.getFieldId("ManagerGroup")); - System.out.println(coordGroupColumn); - + } else if (column.equals("SupportGroup")) { + String supportGroupColumn = api.getFieldDatabaseName(query.getFormName(), + query.getFieldId("SupportGroup")); + String coordGroupColumn = api.getFieldDatabaseName(query.getFormName(), + query.getFieldId("ManagerGroup")); + for (int j = 0; j < criterias.length; j++) { - var criteria = criterias[j]; + var criteria = criterias[j]; if (j > 0) { - qualifier += " OR "; + qualifier += " OR "; } - var orCondition = String.format("('%s' = \"%s\" OR '%s' = \"%s\")", supportGroupColumn, criteria, coordGroupColumn, criteria); + var orCondition = String.format("('%s' = \"%s\" OR '%s' = \"%s\")", supportGroupColumn, criteria, + coordGroupColumn, criteria); qualifier += orCondition; } } else { - if(column.equals("ASF_WI_HighestIntervall") ){ + 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{ + qualifier += "(" + "'ASF_WI_HighestIntervall'" + ">" + crit + ")"; + } 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 += "= "; @@ -169,18 +152,30 @@ public class Filter { 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] + "\")"; + String criteria = inner_criteria_prefix + criterias[j] + inner_criteria_prefix; + String condition = "\"" + criterias[j] + "\")"; + + if (criteria.contains("Completed")) { + inner_qualifier += "(" + inner_filter + "\"Completed\" AND '1000000150' = " + + (criteria.contains("Completed (final review finished)") ? "9000)" : "10000)"); + } else if (criteria.contains("Rejected")) { + inner_qualifier += "(" + inner_filter + "\"Rejected\" AND '301541700' = " + + (criteria.contains("Rejected (begin)") ? "1)" : "9)"); + } else { + inner_qualifier += "(" + inner_filter + condition; + } + if (j < criterias.length - 1) { inner_qualifier += inner_concat; } } + qualifier += "(" + inner_qualifier + ")"; } } @@ -190,8 +185,6 @@ public class Filter { } } - System.out.println("\n"+qualifier+"\n"); - return qualifier; }