ca-mfe-page-scoring-ui
Version:
This is a react shell for the SPGI Platform MFE implementation
114 lines (103 loc) • 4.91 kB
text/typescript
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);
};