UNPKG

ca-mfe-page-scoring-ui

Version:

This is a react shell for the SPGI Platform MFE implementation

114 lines (103 loc) 4.91 kB
import { useSelector } from 'react-redux'; import { companyInformation as companyInformationSelector } from '@root/store/companyInformation/companyInformation.selector'; import { stepIds } from '@root/constants'; import { progressTracker } from '@root/store/progressTracker/progressTracker.selector'; import { scoringInputsResp } from '@root/store/scoringInputs/scoringInputs.selector'; import { loadPitAdjResp } from '@root/store/loadPitAdj/loadPitAdj.selector'; import { userInformationResp } from '@store/userInformation/userInformation.selector'; import { loggingService } from '@spglobal/ca-mfe-package-utils'; export const ActivityTracking = () => { const getAdjustmentsSelected = (steppers, adjustments = []) => { steppers.forEach(step => { if (step.isSubSection && step?.nestedSteps?.length && step?.stepId === 'adjustments') { if (step?.nestedSteps) { step?.nestedSteps.forEach(nestedStep => { if (nestedStep.status === 'completed') { const adjName = { [stepIds.QUALITATIVE_ADJUSTMENTS]: 'qAdj', [stepIds.SIZE_ADJUSTMENTS]: 'sizeAdj', [stepIds.PARENT_ADJUSTMENTS]: 'pAdj', [stepIds.GOVERNMENT_SUPPORT]: 'gAdj', [stepIds.Pd_ADJUSTMENTS]: 'pitAdj' }; adjustments.push(adjName[nestedStep?.stepId]); } }); } } }); return adjustments.join('-'); }; const getFinancialList = (scoringInputs, financials = []) => { const originalFinancialResp = scoringInputs?.originalResp?.data?.financial; const currentFinancialResp = scoringInputs?.currentResp?.data?.financial; currentFinancialResp?.forEach(currentFinancial => { originalFinancialResp?.forEach(originalFinancial => { if (originalFinancial?.metrics?.length && currentFinancial?.metrics?.length) { currentFinancial?.metrics?.forEach(currentMetrics => { originalFinancial?.metrics?.forEach(originalMetrics => { if (originalMetrics?.analyticsName === currentMetrics?.analyticsName) { if (!(originalMetrics?.numValue === currentMetrics?.numValue)) { financials.push(currentMetrics?.analyticsName); } } }); }); } }); }); return financials.join('-'); }; const getNonFinancialList = (scoringInputs, nonFinancials = []) => { const originalNonFinancialResp = scoringInputs?.originalResp?.data?.nonFinancial; const currentNonFinancialResp = scoringInputs?.currentResp?.data?.nonFinancial; currentNonFinancialResp?.forEach(currentNonFinancial => { originalNonFinancialResp.forEach(originalNonFinancial => { if (originalNonFinancial?.metrics?.length && currentNonFinancial?.metrics?.length) { currentNonFinancial?.metrics?.forEach(currentMetrics => { originalNonFinancial?.metrics?.forEach(originalMetrics => { if (originalMetrics?.analyticsName === currentMetrics?.analyticsName) { if (!(originalMetrics?.numValue === currentMetrics?.numValue)) { nonFinancials.push(currentMetrics?.analyticsName); } } }); }); } }); }); return nonFinancials.join('-'); }; const { companySelectedData, companyData, epdState } = useSelector(companyInformationSelector); const { steppers } = useSelector(progressTracker); const { scoringInputs } = useSelector(scoringInputsResp); const { loadPitAdj } = useSelector(loadPitAdjResp); const { userInfo } = useSelector(userInformationResp); const { currentResp } = loadPitAdj; const createActivityJson = { companyCategory: companyData?.isPropCompany ? 'PROP' : companyData?.isUnlinkCompany ? 'UNLINKED' : companyData?.companyId ? 'CIQ' : 'NOCOMPANY', companyType: companySelectedData?.type?.label, companyId: companyData?.companyId, appliedAdjustments: getAdjustmentsSelected(steppers), isEPD: typeof epdState?.scoreWithFinancials === 'boolean' && !epdState.scoreWithFinancials, pitAdjustmentDate: currentResp?.pitAdjustmentDate, isImputed: scoringInputs?.isImputation, financials: getFinancialList(scoringInputs), nonFinancials: getNonFinancialList(scoringInputs), modalFamily: 'RG', modelVersion: userInfo?.hasRiskGaugePlusCap ? '3.0' : '2.0' }; let serializeData = ''; for (const key in createActivityJson) { if (createActivityJson.hasOwnProperty(key) && createActivityJson[key]) { serializeData += `${createActivityJson[key]}|`; } } return serializeData; }; export const logActivity = (logId, activityData) => { loggingService.activityLogs(logId, activityData); };