Skip to content

Commit

Permalink
mid-7124 approver data fix for cases
Browse files Browse the repository at this point in the history
  • Loading branch information
KaterynaHonchar committed Aug 9, 2021
1 parent 4534673 commit 4c88564
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -653,12 +653,9 @@ public boolean isEnabled(IModel<PrismContainerValueWrapper<CaseWorkItemType>> ro
@Override
public void populateItem(Item<ICellPopulator<PrismContainerValueWrapper<CaseWorkItemType>>> cellItem,
String componentId, IModel<PrismContainerValueWrapper<CaseWorkItemType>> rowModel) {
List<ObjectReferenceType> assigneeRefs;
if (CaseWorkItemUtil.doesAssigneeExist(unwrapRowModel(rowModel))) {
assigneeRefs = unwrapRowModel(rowModel).getAssigneeRef();
} else {
assigneeRefs = unwrapRowModel(rowModel).getCandidateRef();
}
CaseWorkItemType caseWorkItemType = unwrapRowModel(rowModel);
CaseType caseType = CaseTypeUtil.getCase(caseWorkItemType);
List<ObjectReferenceType> assigneeRefs = getActorsForWorkitem(caseWorkItemType, CaseTypeUtil.isClosed(caseType));
cellItem.add(getMultilineLinkPanel(componentId, assigneeRefs, pageBase));
}

Expand Down Expand Up @@ -1026,18 +1023,24 @@ public static <C extends Containerable> C unwrapRowModel(IModel<PrismContainerVa
return rowModel.getObject().getRealValue();
}

public static List<ObjectReferenceType> getActorsForCase(CaseType caseType) {
private static List<ObjectReferenceType> getActorsForCase(CaseType caseType) {
List<ObjectReferenceType> actorsList = new ArrayList<>();
if (caseType != null) {
List<CaseWorkItemType> caseWorkItemTypes = caseType.getWorkItem();
for (CaseWorkItemType caseWorkItem : caseWorkItemTypes) {
if (caseWorkItem.getAssigneeRef() != null && !caseWorkItem.getAssigneeRef().isEmpty()) {
actorsList.addAll(caseWorkItem.getAssigneeRef());
} else {
actorsList.addAll(caseWorkItem.getCandidateRef());
}
actorsList.addAll(getActorsForWorkitem(caseWorkItem, CaseTypeUtil.isClosed(caseType)));
}
}
return actorsList;
}

private static List<ObjectReferenceType> getActorsForWorkitem(CaseWorkItemType workItem, boolean isClosed) {
if (isClosed) {
return Collections.singletonList(workItem.getPerformerRef());
} else if (workItem.getAssigneeRef() != null && !workItem.getAssigneeRef().isEmpty()) {
return workItem.getAssigneeRef();
} else {
return workItem.getCandidateRef();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -146,9 +146,7 @@ private void initLayout(){
requestedFor.setOutputMarkupId(true);
add(requestedFor);

LinkedReferencePanel approver = new LinkedReferencePanel(ID_APPROVER,
getModelObject() != null && getModelObject().getAssigneeRef() != null && getModelObject().getAssigneeRef().size() > 0 ?
Model.of(getModelObject().getAssigneeRef().get(0)) : Model.of());
LinkedReferencePanel approver = new LinkedReferencePanel(ID_APPROVER, getApproverModel());
approver.setOutputMarkupId(true);
add(approver);

Expand Down Expand Up @@ -244,12 +242,11 @@ public boolean isVisible() {

Form evidenceForm = new Form(ID_CASE_WORK_ITEM_EVIDENCE_FORM);
evidenceForm.add(new VisibleBehaviour(() -> CaseTypeUtil.isManualProvisioningCase(parentCase) &&
(!SchemaConstants.CASE_STATE_CLOSED.equals(parentCase.getState()) || WorkItemTypeUtil.getEvidence(getModelObject()) != null)));
(!isParentCaseClosed() || WorkItemTypeUtil.getEvidence(getModelObject()) != null)));
evidenceForm.setMultiPart(true);
add(evidenceForm);

UploadDownloadPanel evidencePanel = new UploadDownloadPanel(ID_CASE_WORK_ITEM_EVIDENCE, parentCase != null &&
SchemaConstants.CASE_STATE_CLOSED.equals(parentCase.getState()) && WorkItemTypeUtil.getEvidence(getModelObject()) != null){
UploadDownloadPanel evidencePanel = new UploadDownloadPanel(ID_CASE_WORK_ITEM_EVIDENCE, isParentCaseClosed() && WorkItemTypeUtil.getEvidence(getModelObject()) != null){
private static final long serialVersionUID = 1L;

@Override
Expand Down Expand Up @@ -290,7 +287,7 @@ public boolean isVisible() {
add(commentContainer);

TextArea<String> approverComment = new TextArea<String>(ID_APPROVER_COMMENT, new PropertyModel<>(getModel(), "output.comment"));
approverComment.add(new EnableBehaviour(() -> !SchemaConstants.CASE_STATE_CLOSED.equals(parentCase.getState())));
approverComment.add(new EnableBehaviour(() -> !isParentCaseClosed()));
approverComment.setOutputMarkupId(true);
approverComment.add(new EmptyOnBlurAjaxFormUpdatingBehaviour());
commentContainer.add(approverComment);
Expand Down Expand Up @@ -359,4 +356,19 @@ public ObjectType getCaseFocusObject(CaseType caseType) {
public Component getCustomForm(){
return get(createComponentPath(ID_ADDITIONAL_ATTRIBUTES, ID_CUSTOM_FORM));
}

private boolean isParentCaseClosed() {
CaseType parentCase = CaseTypeUtil.getCase(getModelObject());
return parentCase != null && SchemaConstants.CASE_STATE_CLOSED.equals(parentCase.getState());
}

private IModel<ObjectReferenceType> getApproverModel() {
if (isParentCaseClosed()) {
return getModelObject() != null && getModelObject().getPerformerRef() != null ?
Model.of(getModelObject().getPerformerRef()) : Model.of();
} else {
return getModelObject() != null && getModelObject().getAssigneeRef() != null && getModelObject().getAssigneeRef().size() > 0 ?
Model.of(getModelObject().getAssigneeRef().get(0)) : Model.of();
}
}
}

0 comments on commit 4c88564

Please sign in to comment.