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 898273e..a0b6f96 100644 --- a/backend/src/main/java/com/nttdata/calender/presets/Presets.java +++ b/backend/src/main/java/com/nttdata/calender/presets/Presets.java @@ -58,52 +58,51 @@ public class Presets { } public Object initPresets() throws ARException, NotFoundError { + PresetsGetResponse response = new PresetsGetResponse(); - // gets the userPreferences from the logged in user - List entries = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", prefQuery.getFieldIds(), - formUserPref, - null, - 0, 0); - - // systemdefault filter definition - var sysdef = api.queryFieldsById("\'364000001\'==\"Systemdefault\"", defQuery.getFieldIds(), - formDefault, null, 0, 0).get(0); + // SYSTEMDEFAULT + var sysdef = api.queryFieldsById("\'364000001\'==\"Systemdefault\"", defQuery.getFieldIds(), formDefault, null, 0, 0).get(0); String sysdefGUID = sysdef.get(defQuery.getFieldId("InstanceId")).toString(); + System.out.println(sysdefGUID); - // if there are is no userPreference, return Filter Definition ??? - if (entries.isEmpty() || entries == null) { - return new Preset(sysdef.get(defQuery.getFieldId("InstanceId")).toString(), - sysdef.get(defQuery.getFieldId("Name")).toString(), - sysdef.get(defQuery.getFieldId("Definition")).toString(), "Admin"); - } else { // if there is a userPreference, loop through filter defs (presets of this user) - allPresets(); - response.setPresets(presets); // return all filter defs (presets of this user) - response.setSelectedPreset(entries.get(0).get(prefQuery.getFieldId("GUID")).toString()); // return - // selected - // preset - // (GUID) - - // if guid of user preference is empty, put systemdefault guid inside - if (response.getSelectedPreset().isBlank() || response.getSelectedPreset() == null) { - var queryP = new Query.QueryBuilder(formUserPref) - .addFieldValue("GUID", 364000001, new Value(sysdefGUID)).build(); - - var pref = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", queryP.getFieldIds(), formUserPref, null, 0, 0); - api.modifyEntry(pref.get(0).getEntryId(), queryP); - - response.setSelectedPreset(sysdefGUID); + // CHECK IF USER HAS PREFERENCES + var preference = api.queryFieldsById("\'2\'==\"ext_GedikSa\"", prefQuery.getFieldIds(), formUserPref, null, 0, 0); + if (preference != null) { + // CHECK IF PREFERENCE HAS GUID + var guid = preference.get(0).get(prefQuery.getFieldId("GUID")); + if (guid == null) { + // IF GUID IS NULL PUT SYSTEM DEFAULT INSIDE + var queryPreferenceNewValue = new Query.QueryBuilder(formUserPref).addFieldValue("GUID", 364000001, new Value(sysdefGUID)).build(); + var pref = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", queryPreferenceNewValue.getFieldIds(), formUserPref, null, 0, 0); + api.modifyEntry(pref.get(0).getEntryId(), queryPreferenceNewValue); } - - response.setUserPreferences( - new UserPreferences( - entries.get(0).get(prefQuery.getFieldId("Details")).toString(), - entries.get(0).get(prefQuery.getFieldId("View")).toString(), - entries.get(0).get(prefQuery.getFieldId("Language")) - .toString())); + } else { + // IF USER HAS NO PREFERENCES CREATE NEW ENTRY WITH PREFERENCES AND SYSDEF GUID + createUserPreference(sysdefGUID); } - return response; + // INIT ALL PRESETS + getAll(); + response.setPresets(this.presets); + response.setSelectedPreset(preference.get(0).get(prefQuery.getFieldId("GUID")).toString()); + response.setUserPreferences( + new UserPreferences(preference.get(0).get(prefQuery.getFieldId("Details")).toString(), + preference.get(0).get(prefQuery.getFieldId("View")).toString(), + preference.get(0).get(prefQuery.getFieldId("Language")).toString())); + + return response; + } + + public void createUserPreference(String guid) throws ARException { + var savePreference = new Query.QueryBuilder(formUserPref) + .addFieldValue("GUID", 364000001, new Value(guid)) + .addFieldValue("Details", 364000002, new Value(1)) + .addFieldValue("View", 364000003, new Value(1)) + .addFieldValue("Language", 364000004, new Value("DE")) + .build(); + + api.createEntry(savePreference); } public void savePreset(Preset request) throws ARException, NotFoundError {