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 b09389c..ba2e9e8 100644 --- a/backend/src/main/java/com/nttdata/calender/changes/Change.java +++ b/backend/src/main/java/com/nttdata/calender/changes/Change.java @@ -142,9 +142,14 @@ public class Change { .isPresent()); try { var inApproval = inApprovalList(api.getUser(), getValueStringByID(entry, "ChangeNr")); - var flag = Flag(inApproval, getValue(entry, "State").getIntValue()); - change.setFlagApprove(flag); - change.setFlagReject(flag); + + var approveAndRejectFlag = approveAndReject(inApproval, getValue(entry, "State").getIntValue()); + change.setFlagApprove(approveAndRejectFlag); + change.setFlagReject(approveAndRejectFlag); + + var cancelFlag = cancel(getValueStringByID(entry, "SupportGroupId"), getValue(entry, "State").getIntValue()); + change.setFlagCancel(cancelFlag); + } catch (ARException e) { e.printStackTrace(); } @@ -166,11 +171,21 @@ public class Change { return approvers != null ? approvers.contains(user) : false; } - public boolean Flag(boolean approval, int status) { + public boolean approveAndReject(boolean approval, int status) { boolean approvableStatus = (status == 1 || status == 10); return approval && approvableStatus; } + public boolean cancel(String supportGroupId, int status) throws ARException { + var queryRoles = new Query.QueryBuilder("CTM:SupportGroupFuncRoleLookUp").addFieldId("Role", 1000000014).build(); + var role = api.queryFieldsById("\'Support Group ID\' = \"" + supportGroupId + "\"", queryRoles.getFieldIds(), queryRoles.getFormName(), null, 0, 0) + .get(0).get(queryRoles.getFieldId("Role")).toString(); + + boolean approvableStatus = status == 1; + boolean isChangeManager = role.equals("Change Manager"); + return approvableStatus && isChangeManager; + } + /** * Returns the {@link Value} of an entry based on the provided description.