From 2aec1eeab1de1832ba3ddde78f7478111bac2e8b Mon Sep 17 00:00:00 2001 From: Said Gedik Date: Mon, 16 Oct 2023 17:30:00 +0200 Subject: [PATCH] getusersupportgroup, admin check --- .../nttdata/calender/api/RemedyJavaAPI.java | 4 ++ .../com/nttdata/calender/changes/Change.java | 4 ++ .../calender/supportgroup/SupportGroup.java | 42 ++++++++++++++----- 3 files changed, 39 insertions(+), 11 deletions(-) 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 bc7791b..b956166 100644 --- a/backend/src/main/java/com/nttdata/calender/api/RemedyJavaAPI.java +++ b/backend/src/main/java/com/nttdata/calender/api/RemedyJavaAPI.java @@ -47,6 +47,7 @@ public class RemedyJavaAPI { server.setPort(50000); this.connect(); + // TODO: move to APIApplication.java or State.java - see where it fits State.getInstance().queryState(this); SupportGroup.getInstance().querySupportGroups(this); @@ -350,4 +351,7 @@ public class RemedyJavaAPI { } } + public boolean isAdministrator() throws ARException { + return server.isAdministrator(); + } } \ No newline at end of file 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 12ed06c..8bbbb66 100644 --- a/backend/src/main/java/com/nttdata/calender/changes/Change.java +++ b/backend/src/main/java/com/nttdata/calender/changes/Change.java @@ -90,6 +90,8 @@ public class Change { this.queryChange.getFormName(), sort, request.getSliceStart(), request.getSliceEnd()); + + System.out.println(qualifier); // "\'1000000182\'!=\".\"" var entriesSize = api.getFormSize(qualifier, this.queryChange.getFormName()); var changes = new ArrayList(); @@ -151,7 +153,9 @@ public class Change { changes.add(change); } + System.out.println(entries.size()); api.freeImpersonatedUser(); + return new ChangeResponse(entriesSize, changes); } diff --git a/backend/src/main/java/com/nttdata/calender/supportgroup/SupportGroup.java b/backend/src/main/java/com/nttdata/calender/supportgroup/SupportGroup.java index 3ead15a..5d61688 100644 --- a/backend/src/main/java/com/nttdata/calender/supportgroup/SupportGroup.java +++ b/backend/src/main/java/com/nttdata/calender/supportgroup/SupportGroup.java @@ -15,6 +15,7 @@ import com.nttdata.calender.errorhandling.ErrorTypes.NotFoundError; */ public class SupportGroup { private static final String formName = "CTM:Support Group"; + private static final String formAssoc = "CTM:Support Group Assoc LookUp"; private static final SupportGroup INSTANCE = new SupportGroup(); private ArrayList supportGroups; private SupportGroupGetResponse userSupportGroup; @@ -43,24 +44,43 @@ public class SupportGroup { * @throws NotFoundError if no support groups are found in this context. */ public void querySupportGroups(RemedyJavaAPI api) throws ARException, NotFoundError { - var querySupportGroups = new Query.QueryBuilder(formName) + + // TODO: if remedy admin, permission group id 1 + api.impersonateUser("ext_StanzPa"); + var querySupportGroups = new Query.QueryBuilder(formAssoc) .addFieldId("SupportGroup", 1000000015) - .addFieldId("SupportGroupId", 1) + .addFieldId("SupportGroupId", 1000000079) .build(); - this.supportGroups = api - .queryFieldsById("\'Support Group ID\' != \"\"", querySupportGroups.getFieldIds(), - querySupportGroups.getFormName(), null, 0, 0) - .stream() - .map(entry -> new SupportGroupGetResponse( - entry.get(querySupportGroups.getFieldId("SupportGroup")).toString(), - entry.get(querySupportGroups.getFieldId("SupportGroupId")).toString())) - .distinct() - .collect(Collectors.toCollection(ArrayList::new)); + System.out.println(api.isAdministrator()); + + if (api.isAdministrator()) { + this.supportGroups = api + .queryFieldsById("\'4\' == \"_\"", querySupportGroups.getFieldIds(), + querySupportGroups.getFormName(), null, 0, 0) + .stream() + .map(entry -> new SupportGroupGetResponse( + entry.get(querySupportGroups.getFieldId("SupportGroup")).toString(), + entry.get(querySupportGroups.getFieldId("SupportGroupId")).toString())) + .distinct() + .collect(Collectors.toCollection(ArrayList::new)); + } else { + this.supportGroups = api + .queryFieldsById("\'4\' == \"" + api.getUser() + "\"", querySupportGroups.getFieldIds(), + querySupportGroups.getFormName(), null, 0, 0) + .stream() + .map(entry -> new SupportGroupGetResponse( + entry.get(querySupportGroups.getFieldId("SupportGroup")).toString(), + entry.get(querySupportGroups.getFieldId("SupportGroupId")).toString())) + .distinct() + .collect(Collectors.toCollection(ArrayList::new)); + } + if (this.supportGroups.isEmpty()) { throw new NotFoundError("No support groups found in this context"); } + api.freeImpersonatedUser(); } /**