appendImportedData_Financial
Thu Sep 19 2024 11:26:05 GMT+0000 (Coordinated Universal Time)
Saved by @alfred.roshan
appendImportedData_Financial = async book => {
try {
const _selectedAnsweredEntry = this.state.selectedfinancialworkshop.answeredEntries;
if (!_selectedAnsweredEntry) {
this.state.selectedfinancialworkshop.answeredEntries = [];
this.setState({
selectedfinancialworkshop: {
...this.state.selectedfinancialworkshop,
answeredEntries: [],
},
});
}
const selectedAnsweredEntry = this.state.selectedfinancialworkshop.answeredEntries;
let _worksheet = this.state.selectedfinancialworkshop.worksheet
.sort((a, b) => {
if (a.framework == 'CSRD') {
let _a =
CSRDAllTopics?.find(
item2 => item2['mainId'] == a['mainId'] && item2['topic'] == a['topic'],
)?.sortIndex || 0;
let _b =
CSRDAllTopics?.find(
item2 => item2['mainId'] == b['mainId'] && item2['topic'] == b['topic'],
)?.sortIndex || 0;
return _a < _b ? -1 : _a > _b ? 1 : 0;
}
if (a.framework == 'GRI') {
let _a = a.id;
let _b = b.id;
return _a < _b ? -1 : _a > _b ? 1 : 0;
}
if (a.topic < b.topic) return -1;
if (a.topic > b.topic) return 1;
})
.sort((a, b) => {
if (this.renderESG(a.dimension) == 'Environmental') return -1;
if (this.renderESG(b.dimension) == 'Environmental') return 1;
if (this.renderESG(a.dimension) == 'Social') return -1;
if (this.renderESG(b.dimension) == 'Social') return 1;
if (this.renderESG(a.dimension) == 'Governance') return -1;
if (this.renderESG(b.dimension) == 'Governance') return 1;
if (this.renderESG(a.dimension) < this.renderESG(b.dimension)) return -1;
if (this.renderESG(a.dimension) > this.renderESG(b.dimension)) return 1;
})
.sort((a, b) => {
if (this.renderESG(a.dimension) == 'Environmental') return -1;
if (this.renderESG(b.dimension) == 'Environmental') return 1;
if (this.renderESG(a.dimension) == 'Social') return -1;
if (this.renderESG(b.dimension) == 'Social') return 1;
if (this.renderESG(a.dimension) == 'Governance') return -1;
if (this.renderESG(b.dimension) == 'Governance') return 1;
if (this.renderESG(a.dimension) < this.renderESG(b.dimension)) return -1;
if (this.renderESG(a.dimension) > this.renderESG(b.dimension)) return 1;
})
.filter((item, index) => {
return item.entryType !== 'comment' && item.entryType !== 'added-entry';
});
let allAnsweredEntries = [];
_worksheet.forEach(item => {
let verifiedTopic = '';
if (item.value) {
if (Array.isArray(item.value)) {
verifiedTopic = item.value.map(item => item.label).join(', ');
} else {
verifiedTopic = item.value;
}
}
const answerData = this.state.answeredTopics.find(data => data.id === item.id);
let answer = '';
if (answerData) {
answer = answerData;
}
const riskValue = answer['Risk']?.value || '';
const oppValue = answer['Opportunities']?.value || '';
let riskValueColor = '#fff';
let oppValueColor = '#fff';
if (riskValue === 'Yes') {
riskValueColor = '#D1060A';
} else if (riskValue === 'No') {
riskValueColor = '#2EB917';
}
if (oppValue === 'Yes') {
oppValueColor = '#2EB917';
}
const topicResult = this.state.surveyResultsIROComments.filter(
item2 => item2.id == item.id,
);
let allComments = this.getAllCommentsFromShortSurvey_Financial(
topicResult,
Array.from(this.state.financialConsolidatedReports || []),
Array.from(this.state.addedCommentTopics || []),
);
if (allComments.length > 0) {
allComments
.filter((v, i, a) => a.findIndex(t => t.id === v.id) === i)
.filter(item => (item.assessmentType ? item.assessmentType == 'Financial' : item))
.forEach((commData, commIndex) => {
let addedEntryTopicName = '';
let item = commData;
const workshopWithEntry = Array.from(this.state.workshops || [])
.concat(Array.from(this.state.financialworkshops || []))
.find(ws => {
return Array.from(ws.worksheet || []).find(data => data.id === commData.id);
});
if (workshopWithEntry) {
const prevItem2 = Array.from(workshopWithEntry.worksheet || []).find(
data => data.id === commData.id,
);
if (prevItem2) {
addedEntryTopicName = prevItem2;
}
}
const prevItem = Array.from(
this.state.selectedfinancialworkshop.worksheet || [],
).find(data => data.id === commData.id);
if (prevItem) {
item = prevItem;
}
let verifiedTopic = '';
if (item.value) {
if (Array.isArray(item.value)) {
verifiedTopic = item.value.map(item => item.label).join(', ');
} else {
verifiedTopic = item.value;
}
}
const answerData = this.state.answeredTopics.find(data => data.id === item.id);
let answer = '';
if (answerData) {
answer = answerData;
}
const entryId = `${this.state.surveyId}__${this.state.selectedfinancialworkshop.id}__${item.id}`;
let entry = {
topic: item.topic,
id: entryId,
surveyId: this.state.surveyId,
workshopId: this.state.selectedfinancialworkshop.id,
oldid: item.id,
};
const answeredEntryData = this.state.selectedfinancialworkshop?.answeredEntries?.find(
entry => entry.id === entryId,
);
if (answeredEntryData) {
entry = {
...entry,
...answeredEntryData,
};
}
if (
item?.entryType == 'comment' &&
(!answer?.['Verification'] ||
answer?.['Verification']?.value == 'No' ||
answer?.['Verification']?.value == '')
) {
return null;
}
allAnsweredEntries.push(entry);
});
}
});
if (book && book.SheetNames) {
book.SheetNames.forEach((parentitem, parentindex) => {
const data = xlsx2.utils.sheet_to_json(book.Sheets[parentitem]);
data.forEach(item => {
const itemFind = selectedAnsweredEntry?.find(item2 => item2.topic == item['Topic']);
if (item?.['Comment or Added Entry'] == 'Yes') {
if (itemFind) {
if (parentindex == 0) {
itemFind[`Type of Impact`] = item[`Type of Impact`] || '';
itemFind[`Consolidated Level`] = item[`Consolidated Level`] || '';
if (item[`Entity-Specific`]) {
itemFind[`Entity-Specific`] =
item[`Entity-Specific`]
?.split(', ')
?.map(item2 => ({ value: item2, label: item2 })) || null;
}
if (item[`Country-Specific`]) {
itemFind[`Country-Specific`] =
item[`Country-Specific`]
?.split(', ')
?.map(item2 => ({ value: item2, label: item2 })) || null;
}
if (item[`Sector-Specific`]) {
itemFind[`Sector-Specific`] =
item[`Sector-Specific`]
?.split(', ')
?.map(item2 => ({ value: item2, label: item2 })) || null;
}
} else if (parentindex == 1) {
if (item[`Stakeholder Type`]) {
itemFind[`Stakeholder Type`] =
item[`Stakeholder Type`]
?.split(', ')
?.map(item2 => ({ value: item2, label: item2 })) || null;
}
if (item[`Location in the Value Chain`]) {
itemFind[`Location in the Value Chain`] =
item[`Location in the Value Chain`]
?.split(', ')
?.map(item2 => ({ value: item2, label: item2 })) || null;
}
if (item[`Significant Assets`]) {
itemFind[`Significant Assets`] =
item[`Significant Assets`]
?.split(', ')
?.map(item2 => ({ value: item2, label: item2 })) || null;
}
itemFind[`Significant Locations`] = item[`Significant Locations`] || '';
} else if (parentindex == 2) {
itemFind[`Type of Impact`] = item[`Type of Impact`] || '';
itemFind[`Actual or Potential`] = item[`Actual or Potential`] || '';
itemFind[`Timeframe`] = item[`Timeframe`] || '';
itemFind[`Likelihood`] = item[`Likelihood`] || '';
itemFind[`Magnitude`] = item[`Magnitude`] || '';
itemFind[`Scoring Comments`] = item[`Comments`] || '';
itemFind[`Scoring Task Description`] = item[`Task Description`] || '';
} else if (parentindex == 3) {
itemFind[`VAR - Maximum Value at Risk`] = item[`Maximum Value at Risk`] || '';
itemFind[`VAR - Opportunity Value`] = item[`Opportunity Value`] || '';
itemFind[`VAR - Revenue`] = item[`Revenue`] || '';
itemFind[`VAR - Expenditure`] = item[`Expenditure`] || '';
itemFind[`VAR - Assets`] = item[`Assets`] || '';
itemFind[`VAR - Liabilities`] = item[`Liabilities`] || '';
itemFind[`VAR - Capital`] = item[`Capital`] || '';
itemFind[`VAR - Financing`] = item[`Financing`] || '';
itemFind[`VAR Task Description`] = item[`Task Description`] || '';
}
} else {
let itemFind = {};
let answeredEntryFind = allAnsweredEntries.find(
item2 => item2['topic'] == item['Topic'],
);
if (answeredEntryFind) {
itemFind = {
...itemFind,
...answeredEntryFind,
};
}
if (parentindex == 0) {
itemFind[`Type of Impact`] = item[`Type of Impact`] || '';
itemFind[`Consolidated Level`] = item[`Consolidated Level`] || '';
if (item[`Entity-Specific`]) {
itemFind[`Entity-Specific`] =
item[`Entity-Specific`]
?.split(', ')
?.map(item2 => ({ value: item2, label: item2 })) || null;
}
if (item[`Country-Specific`]) {
itemFind[`Country-Specific`] =
item[`Country-Specific`]
?.split(', ')
?.map(item2 => ({ value: item2, label: item2 })) || null;
}
if (item[`Sector-Specific`]) {
itemFind[`Sector-Specific`] =
item[`Sector-Specific`]
?.split(', ')
?.map(item2 => ({ value: item2, label: item2 })) || null;
}
} else if (parentindex == 1) {
if (item[`Stakeholder Type`]) {
itemFind[`Stakeholder Type`] =
item[`Stakeholder Type`]
?.split(', ')
?.map(item2 => ({ value: item2, label: item2 })) || null;
}
if (item[`Location in the Value Chain`]) {
itemFind[`Location in the Value Chain`] =
item[`Location in the Value Chain`]
?.split(', ')
?.map(item2 => ({ value: item2, label: item2 })) || null;
}
if (item[`Significant Assets`]) {
itemFind[`Significant Assets`] =
item[`Significant Assets`]
?.split(', ')
?.map(item2 => ({ value: item2, label: item2 })) || null;
}
itemFind[`Significant Locations`] = item[`Significant Locations`] || '';
} else if (parentindex == 2) {
itemFind[`Type of Impact`] = item[`Type of Impact`] || '';
itemFind[`Actual or Potential`] = item[`Actual or Potential`] || '';
itemFind[`Timeframe`] = item[`Timeframe`] || '';
itemFind[`Likelihood`] = item[`Likelihood`] || '';
itemFind[`Magnitude`] = item[`Magnitude`] || '';
itemFind[`Scoring Comments`] = item[`Comments`] || '';
itemFind[`Scoring Task Description`] = item[`Task Description`] || '';
} else if (parentindex == 3) {
itemFind[`VAR - Maximum Value at Risk`] = item[`Maximum Value at Risk`] || '';
itemFind[`VAR - Opportunity Value`] = item[`Opportunity Value`] || '';
itemFind[`VAR - Revenue`] = item[`Revenue`] || '';
itemFind[`VAR - Expenditure`] = item[`Expenditure`] || '';
itemFind[`VAR - Assets`] = item[`Assets`] || '';
itemFind[`VAR - Liabilities`] = item[`Liabilities`] || '';
itemFind[`VAR - Capital`] = item[`Capital`] || '';
itemFind[`VAR - Financing`] = item[`Financing`] || '';
itemFind[`VAR Task Description`] = item[`Task Description`] || '';
}
selectedAnsweredEntry.push(itemFind);
}
}
});
});
}
const { surveyId, currentSurveyId, consultantId, selectedfinancialworkshop } = this.state;
// const matrixWorkshopsRef = firebase
// .firestore()
// .collection(consultantId ? 'portfolio-surveys-consultants' : 'surveys')
// .doc(surveyId ? surveyId : currentSurveyId)
// .collection('financial-workshops')
// .doc(selectedfinancialworkshop.id);
const updatedWorkshop = {
...selectedfinancialworkshop,
answeredEntries: [
...selectedfinancialworkshop.answeredEntries,
...selectedAnsweredEntry,
].filter((item, index, self) => index === self.findIndex(t => t.id === item.id)),
};
this.setState({
selectedfinancialworkshop: updatedWorkshop,
loading: false,
});
const payload = [
...selectedfinancialworkshop.answeredEntries,
...selectedAnsweredEntry,
].filter((item, index, self) => index === self.findIndex(t => t.id === item.id));
updateWorkshopProperty({
surveyId,
consultantId,
workshopId: selectedfinancialworkshop.id,
type: "financial",
property: "answeredEntries"
}, payload).then((res) => {
console.log("submitted to api", res)
}).catch(error => {
console.log('error saving answered entries');
});
// matrixWorkshopsRef
// .update({
// answeredEntries: [
// ...selectedfinancialworkshop.answeredEntries,
// ...selectedAnsweredEntry,
// ].filter((item, index, self) => index === self.findIndex(t => t.id === item.id)),
// })
// .then(() => {
// console.log(`saved answered entries`);
// })
// .catch(error => {
// console.log('error saving answered entries');
// });
// Reset the input
const fileinput = document.getElementById('file-input-topics');
if (fileinput) {
fileinput.value = null;
}
} catch (ex) {
console.log(ex.message);
this.setState({ loading: false });
// Reset the input
const fileinput = document.getElementById('file-input-topics');
if (fileinput) {
fileinput.value = null;
}
return;
}
};



Comments