diff --git a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java index e54e77c..6b7c5a7 100644 --- a/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java +++ b/backend/src/main/java/com/nttdata/calender/api/KalenderRestController.java @@ -36,6 +36,7 @@ import com.nttdata.calender.packageType.PackageType; import com.nttdata.calender.planTimes.CalendarWeek; import com.nttdata.calender.planTimes.PlanTimes; import com.nttdata.calender.planTimes.PlanTimesRequest; +import com.nttdata.calender.presets.DeletePresetRequest; import com.nttdata.calender.presets.EditUserPreferencesRequest; import com.nttdata.calender.presets.Preset; import com.nttdata.calender.presets.Presets; @@ -339,6 +340,14 @@ public class KalenderRestController { return presets.getAll(); } + @CrossOrigin("*") + @PostMapping("api/deletePreset") + @ResponseBody + public Object deletePreset(@RequestBody DeletePresetRequest request) throws ARException, NotFoundError { + Presets presets = new Presets(javaAPI); + presets.deletePreset(request); + return presets.getAll(); + } @CrossOrigin @PostMapping("api/renamePreset") diff --git a/backend/src/main/java/com/nttdata/calender/api/RemedyJavaAPI.java b/backend/src/main/java/com/nttdata/calender/api/RemedyJavaAPI.java index d54850e..bc7791b 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RemedyJavaAPI.java +++ b/backend/src/main/java/com/nttdata/calender/api/RemedyJavaAPI.java @@ -136,6 +136,25 @@ public class RemedyJavaAPI { return "Entry created successfully. ID: " + entryIdOut; } + public String deleteEntry(String formName, String entryId) throws ARException { + // Specify 0 for the deleteOption as mentioned in the documentation + int deleteOption = 0; + + // Attempt to delete the entry + server.deleteEntry(formName, entryId, deleteOption); + + // Check for any status or warnings after the deletion + var lastStatus = server.getLastStatus(); + if (!lastStatus.isEmpty()) { + applicationLogger.warn("Warning after deleting entry: " + lastStatus); + return "Warning: " + lastStatus.toString(); + } + + applicationLogger.info("Entry with ID " + entryId + " deleted successfully from form " + formName); + return "Entry deleted successfully. ID: " + entryId; + } + + /** * Takes an entry ID and a {@link Query} object with values and updates the * selected entry with the values provided in the query. diff --git a/backend/src/main/java/com/nttdata/calender/presets/DeletePresetRequest.java b/backend/src/main/java/com/nttdata/calender/presets/DeletePresetRequest.java new file mode 100644 index 0000000..9abdd27 --- /dev/null +++ b/backend/src/main/java/com/nttdata/calender/presets/DeletePresetRequest.java @@ -0,0 +1,14 @@ +package com.nttdata.calender.presets; + +public class DeletePresetRequest { + private String id; + + public String getId() { + return this.id; + } + + public void setId(String id) { + this.id = id; + } + +} diff --git a/backend/src/main/java/com/nttdata/calender/presets/Presets.java b/backend/src/main/java/com/nttdata/calender/presets/Presets.java index 6ed2085..0e67119 100644 --- a/backend/src/main/java/com/nttdata/calender/presets/Presets.java +++ b/backend/src/main/java/com/nttdata/calender/presets/Presets.java @@ -12,152 +12,162 @@ import com.nttdata.calender.api.RemedyJavaAPI; import com.nttdata.calender.errorhandling.ErrorTypes.NotFoundError; public class Presets { - private final static String formName = "ASF:CHG_CAL_UserPreferencesJoinFilterDefinitions"; - private final static String formDefault = "ASF:CHG_CAL_FilterDefinitions"; - private final static String formUserPref = "ASF:CHG_CAL_UserPreferences"; - private Query query; - private Query defQuery; - private Query prefQuery; - private RemedyJavaAPI api; - private List presets; + private final static String formName = "ASF:CHG_CAL_UserPreferencesJoinFilterDefinitions"; + private final static String formDefault = "ASF:CHG_CAL_FilterDefinitions"; + private final static String formUserPref = "ASF:CHG_CAL_UserPreferences"; + private Query query; + private Query defQuery; + private Query prefQuery; + private RemedyJavaAPI api; + private List presets; - @Autowired - public Presets(RemedyJavaAPI api) throws ARException, NotFoundError { - this.api = api; + @Autowired + public Presets(RemedyJavaAPI api) throws ARException, NotFoundError { + this.api = api; - this.query = new Query.QueryBuilder(formName) - .addFieldId("RequestId", 6) - .addFieldId("InstanceId", 179) - .addFieldId("Status", 7) - .addFieldId("GUID", 364000001) // current active preset - .addFieldId("Details", 364000002) - .addFieldId("View", 364000003) - .addFieldId("Language", 364000004) - .addFieldId("Submitter", 2) - .addFieldId("Name", 364200001) - .addFieldId("Definition", 364200002) - .build(); + this.query = new Query.QueryBuilder(formName) + .addFieldId("RequestId", 6) + .addFieldId("InstanceId", 179) + .addFieldId("Status", 7) + .addFieldId("GUID", 364000001) // current active preset + .addFieldId("Details", 364000002) + .addFieldId("View", 364000003) + .addFieldId("Language", 364000004) + .addFieldId("Submitter", 2) + .addFieldId("Name", 364200001) + .addFieldId("Definition", 364200002) + .build(); - this.defQuery = new Query.QueryBuilder(formDefault) - .addFieldId("Name", 364000001) - .addFieldId("Definition", 364000002) - .addFieldId("isSystemDefault", 364000004) - .addFieldId("isGlobal", 364000003) - .addFieldId("InstanceId", 179) - .build(); + this.defQuery = new Query.QueryBuilder(formDefault) + .addFieldId("Name", 364000001) + .addFieldId("Definition", 364000002) + .addFieldId("isSystemDefault", 364000004) + .addFieldId("isGlobal", 364000003) + .addFieldId("InstanceId", 179) + .build(); - this.prefQuery = new Query.QueryBuilder(formUserPref) - .addFieldId("GUID", 364000001) - .addFieldId("Details", 364000002) - .addFieldId("View", 364000003) - .addFieldId("Language", 364000004) - .build(); + this.prefQuery = new Query.QueryBuilder(formUserPref) + .addFieldId("GUID", 364000001) + .addFieldId("Details", 364000002) + .addFieldId("View", 364000003) + .addFieldId("Language", 364000004) + .build(); - this.presets = new ArrayList<>(); - api.impersonateUser("ext_StanzPa"); - } - - public Object initPresets() throws ARException, NotFoundError { - List entries = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", query.getFieldIds(), formName, - null, - 0, 0); - PresetsGetResponse response = new PresetsGetResponse(); - - if (entries.isEmpty() || entries == null) { - var sysdef = api.queryFieldsById("\'364000001\'==\"Systemdefault\"", defQuery.getFieldIds(), - formDefault, null, 0, 0).get(0); - return new Preset(sysdef.get(defQuery.getFieldId("InstanceId")).toString(), - sysdef.get(defQuery.getFieldId("Name")).toString(), - sysdef.get(defQuery.getFieldId("Definition")).toString(), "Admin"); - } else { - allPresets(); - response.setPresets(presets); - response.setSelectedPreset(entries.get(0).get(query.getFieldId("GUID")).toString()); - response.setUserPreferences(new UserPreferences(entries.get(0).get(query.getFieldId("Details")).toString(), - entries.get(0).get(query.getFieldId("View")).toString(), - entries.get(0).get(query.getFieldId("Language")).toString())); + this.presets = new ArrayList<>(); + api.impersonateUser("ext_StanzPa"); } - return response; - } + public Object initPresets() throws ARException, NotFoundError { + List entries = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", query.getFieldIds(), + formName, + null, + 0, 0); + PresetsGetResponse response = new PresetsGetResponse(); - public void savePreset(Preset request) throws ARException, NotFoundError { - var saveQuery = new Query.QueryBuilder(formDefault) - .addFieldValue("FilterPresetName", 364000001, new Value(request.getName())) - .addFieldValue("FilterPresetDefinition", 364000002, new Value(request.getDefinition())) - .build(); + if (entries.isEmpty() || entries == null) { + var sysdef = api.queryFieldsById("\'364000001\'==\"Systemdefault\"", defQuery.getFieldIds(), + formDefault, null, 0, 0).get(0); + return new Preset(sysdef.get(defQuery.getFieldId("InstanceId")).toString(), + sysdef.get(defQuery.getFieldId("Name")).toString(), + sysdef.get(defQuery.getFieldId("Definition")).toString(), "Admin"); + } else { + allPresets(); + response.setPresets(presets); + response.setSelectedPreset(entries.get(0).get(query.getFieldId("GUID")).toString()); + response.setUserPreferences( + new UserPreferences(entries.get(0).get(query.getFieldId("Details")).toString(), + entries.get(0).get(query.getFieldId("View")).toString(), + entries.get(0).get(query.getFieldId("Language")).toString())); + } + return response; - api.createEntry(saveQuery); - } + } - public boolean selectPreset(SelectPresetRequest guid) throws ARException { - var queryP = new Query.QueryBuilder(formUserPref) - .addFieldValue("GUID", 364000001, new Value(guid.getGuid())).build(); + public void savePreset(Preset request) throws ARException, NotFoundError { + var saveQuery = new Query.QueryBuilder(formDefault) + .addFieldValue("FilterPresetName", 364000001, new Value(request.getName())) + .addFieldValue("FilterPresetDefinition", 364000002, new Value(request.getDefinition())) + .build(); - var pref = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", queryP.getFieldIds(), formUserPref, null, 0, - 0); + api.createEntry(saveQuery); + } - if (pref.isEmpty() || pref == null) - return false; + public boolean selectPreset(SelectPresetRequest guid) throws ARException { + var queryP = new Query.QueryBuilder(formUserPref) + .addFieldValue("GUID", 364000001, new Value(guid.getGuid())).build(); - api.modifyEntry(pref.get(0).getEntryId(), queryP); - return true; - } + var pref = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", queryP.getFieldIds(), formUserPref, + null, 0, + 0); - public void updatePreset(UpdatePresetRequest request) throws ARException { - var queryPresets = new Query.QueryBuilder(formDefault) - .addFieldValue("Definition", 364000002, new Value(request.getDefinition())).build(); - var preset = api.queryFieldsById("\'179\'==\"" + request.getId() + "\"", - queryPresets.getFieldIds(), formDefault, null, 0, 0).get(0); + if (pref.isEmpty() || pref == null) + return false; - api.modifyEntry(preset.getEntryId(), queryPresets); - } + api.modifyEntry(pref.get(0).getEntryId(), queryP); + return true; + } - public void renamePreset(RenamePresetRequest request) throws ARException { + public void updatePreset(UpdatePresetRequest request) throws ARException { + var queryPresets = new Query.QueryBuilder(formDefault) + .addFieldValue("Definition", 364000002, new Value(request.getDefinition())).build(); + var preset = api.queryFieldsById("\'179\'==\"" + request.getId() + "\"", + queryPresets.getFieldIds(), formDefault, null, 0, 0).get(0); - var queryPresets = new Query.QueryBuilder(formDefault) - .addFieldValue("Name", 364000001, new Value(request.getNewName())).build(); - var preset = api.queryFieldsById("\'179\'==\"" + request.getId() + "\"", - queryPresets.getFieldIds(), formDefault, null, 0, 0).get(0); + api.modifyEntry(preset.getEntryId(), queryPresets); + } - api.modifyEntry(preset.getEntryId(), queryPresets); - } + public void renamePreset(RenamePresetRequest request) throws ARException { - public String editUserPreferences(EditUserPreferencesRequest request) throws ARException { - var queryUserPreferences = new Query.QueryBuilder(formUserPref) - .addFieldValue("Details", 364000002, new Value(request.getDetails())) - .addFieldValue("View", 364000003, new Value(request.getView())) - .addFieldValue("Language", 364000004, new Value(request.getLanguage())) - .build(); + var queryPresets = new Query.QueryBuilder(formDefault) + .addFieldValue("Name", 364000001, new Value(request.getNewName())).build(); + var preset = api.queryFieldsById("\'179\'==\"" + request.getId() + "\"", + queryPresets.getFieldIds(), formDefault, null, 0, 0).get(0); - var preferences = api.queryFieldsById("\'2\'==\"ext_GedikSa\"", queryUserPreferences.getFieldIds(), - formUserPref, null, 0, 0).get(0); + api.modifyEntry(preset.getEntryId(), queryPresets); + } + + public String editUserPreferences(EditUserPreferencesRequest request) throws ARException { + var queryUserPreferences = new Query.QueryBuilder(formUserPref) + .addFieldValue("Details", 364000002, new Value(request.getDetails())) + .addFieldValue("View", 364000003, new Value(request.getView())) + .addFieldValue("Language", 364000004, new Value(request.getLanguage())) + .build(); + + var preferences = api.queryFieldsById("\'2\'==\"ext_GedikSa\"", queryUserPreferences.getFieldIds(), + formUserPref, null, 0, 0).get(0); // bei falschen input parameter - if (preferences.isEmpty() || preferences == null) - return "Error"; - api.modifyEntry(preferences.getEntryId(), queryUserPreferences); - return "Success"; - } - - public void allPresets() throws ARException, NotFoundError { - var entries = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", query.getFieldIds(), formName, null, 0, - 0); - - if (entries.isEmpty() || entries == null) { - throw new NotFoundError("No presets found in this context"); - } else { - for (var v : entries) { - presets.add(new Preset(v.get(query.getFieldId("InstanceId")).toString(), - v.get(query.getFieldId("Name")).toString(), v.get(query.getFieldId("Definition")).toString(), - "")); - } + if (preferences.isEmpty() || preferences == null) + return "Error"; + api.modifyEntry(preferences.getEntryId(), queryUserPreferences); + return "Success"; } - } - public List getAll() throws NotFoundError, ARException { - allPresets(); - return this.presets; - } + public void allPresets() throws ARException, NotFoundError { + var entries = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", query.getFieldIds(), formName, + null, 0, + 0); + + if (entries.isEmpty() || entries == null) { + throw new NotFoundError("No presets found in this context"); + } else { + for (var v : entries) { + presets.add(new Preset(v.get(query.getFieldId("InstanceId")).toString(), + v.get(query.getFieldId("Name")).toString(), + v.get(query.getFieldId("Definition")).toString(), + "")); + } + } + } + + public void deletePreset(DeletePresetRequest request) throws ARException { + var entries = api.queryFieldsById("\'179\'==\""+ request.getId() + "\"", null, formDefault, null, 0, 0).get(0); + api.deleteEntry(formDefault, entries.getEntryId()); + } + + public List getAll() throws NotFoundError, ARException { + allPresets(); + return this.presets; + } }