function hasNotificationMessages(pConnect) { return !!pConnect.getValue('caseMessages'); } function isCaseWideLocalAction(pConnect) { const { CASE_INFO } = PCore.getConstants(); const actionID = pConnect.getValue(CASE_INFO.ACTIVE_ACTION_ID); const caseActions = pConnect.getValue(CASE_INFO.CASE_INFO_ACTIONS); if (caseActions && actionID) { const activeAction = caseActions.find(caseAction => caseAction.ID === actionID); return activeAction?.type === 'Case'; } return false; } function getChildCaseAssignments(pConnect) { const childCases = pConnect.getValue(PCore.getConstants().CASE_INFO.CHILD_ASSIGNMENTS); let allAssignments: any[] = []; if (childCases && childCases.length > 0) { childCases.forEach(({ assignments = [], Name }) => { const childCaseAssignments = assignments.map((assignment: any) => ({ ...assignment, caseName: Name })); allAssignments = allAssignments.concat(childCaseAssignments); }); } return allAssignments; } export function hasAssignments(pConnect) { const { CASE_INFO } = PCore.getConstants(); const assignments = pConnect.getValue(CASE_INFO.D_CASE_ASSIGNMENTS_RESULTS); const childCasesAssignments = getChildCaseAssignments(pConnect); return assignments?.length || childCasesAssignments?.length || isCaseWideLocalAction(pConnect); } export const showBanner = getPConnect => { const pConnect = getPConnect; return hasNotificationMessages(pConnect) || !hasAssignments(pConnect); }; function getActiveCaseActionName(pConnect) { const caseActions = pConnect.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ACTIONS); const activeActionID = pConnect.getValue(PCore.getConstants().CASE_INFO.ACTIVE_ACTION_ID); const activeAction = caseActions.find(action => action.ID === activeActionID); return activeAction?.name || ''; } function showTodo(pConnect) { const caseViewMode = pConnect.getValue('context_data.caseViewMode'); return caseViewMode !== 'perform'; } export function getToDoAssignments(pConnect) { const caseActions = pConnect.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ACTIONS); const assignmentLabel = pConnect.getValue(PCore.getConstants().CASE_INFO.ASSIGNMENT_LABEL); const assignments = pConnect.getValue(PCore.getConstants().CASE_INFO.D_CASE_ASSIGNMENTS_RESULTS) || []; const childCasesAssignments = getChildCaseAssignments(pConnect) || []; let childCasesAssignmentsCopy = JSON.parse(JSON.stringify(childCasesAssignments)); childCasesAssignmentsCopy = childCasesAssignmentsCopy.map(assignment => { assignment.isChild = true; return assignment; }); const todoAssignments = [...assignments, ...childCasesAssignmentsCopy]; let todoAssignmentsCopy = JSON.parse(JSON.stringify(todoAssignments)); if (caseActions && !showTodo(pConnect)) { todoAssignmentsCopy = todoAssignmentsCopy.map(assignment => { assignment.name = getActiveCaseActionName(pConnect) || assignmentLabel; return assignment; }); } return todoAssignmentsCopy; }