handleSubmitFinancialWorkshop = async e => { const { financialworkshops, financialworkshopdata, surveyId, currentSurveyId, consultantId, } = this.state; // const matrixFinancialWorkshopsRef = firebase // .firestore() // .collection(consultantId ? 'portfolio-surveys-consultants' : 'surveys') // .doc(surveyId ? surveyId : currentSurveyId) // .collection('financial-workshops'); e.preventDefault(); this.setState({ loading: true, financialWorkshopTabIndex: 0, }); const formatDate = (date) => { if (!date) return null; const d = date.seconds ? new Date(date.seconds * 1000 + date.nanoseconds / 1000000) : new Date(date); const month = ('0' + (d.getMonth() + 1)).slice(-2); const day = ('0' + d.getDate()).slice(-2); const year = d.getFullYear(); return `${month}/${day}/${year}`; }; try { // Edit condition (if id exists) if (financialworkshopdata.id) { // const docRef = matrixFinancialWorkshopsRef.doc(financialworkshopdata.id); // const docSnapshot = await docRef.get(); // const oldData = docSnapshot.data(); const workshopData = await getWorkshopById("financial-workshops", { surveyId: surveyId, consultantId: consultantId, id: financialworkshopdata.id, }); const oldData = workshopData.data(); const _date = financialworkshopdata['Date of Workshop or Interview']; const payload = { ...financialworkshopdata, answeredEntries: financialworkshopdata?.answeredEntries ? financialworkshopdata?.answeredEntries : [], ['Date of Workshop or Interview']: _date && _date.seconds ? new Date(_date.seconds * 1000 + _date.nanoseconds / 1000000) : _date, date: new Date(), }; // await matrixFinancialWorkshopsRef.doc(financialworkshopdata.id).update(payload) // ) await updateFinancialWorkshops(consultantId, financialworkshopdata.id, payload) const changes = []; // const oldDateFormatted = formatDate(oldData['Date of Workshop or Interview']); // const newDateFormatted = formatDate(financialworkshopdata['Date of Workshop or Interview']); const oldDateFormatted = oldData['Date of Workshop or Interview']; const newDateFormatted = financialworkshopdata['Date of Workshop or Interview']; if (financialworkshopdata['Name of Person'] !== oldData['Name of Person']) { changes.push(`Name of Person changed from ${oldData['Name of Person']} to ${financialworkshopdata['Name of Person']}`); } if (financialworkshopdata['Stakeholder Type'] !== oldData['Stakeholder Type']) { changes.push(`Stakeholder Type changed from ${oldData['Stakeholder Type']} to ${financialworkshopdata['Stakeholder Type']}`); } if (financialworkshopdata['Type'] !== oldData['Type']) { changes.push(`Type changed from ${oldData['Type']} to ${financialworkshopdata['Type']}`); } if (financialworkshopdata['Interviewer Name'] !== oldData['Interviewer Name']) { changes.push(`Interviewer Name changed from ${oldData['Interviewer Name']} to ${financialworkshopdata['Interviewer Name']}`); } if (newDateFormatted !== oldDateFormatted) { changes.push(`Date of Workshop or Interview changed from ${oldDateFormatted} to ${newDateFormatted}`); } if (financialworkshopdata['Comments'] !== oldData['Comments']) { const oldcomment = oldData['Comments'] || 'Blank'; changes.push(`Comments changed from ${oldcomment} to ${financialworkshopdata['Comments']}`); } if (financialworkshopdata['Recommendations'] !== oldData['Recommendations']) { const oldrec = oldData['Recommendations'] || 'Blank'; changes.push(`Recommendations changed from ${oldrec} to ${financialworkshopdata['Recommendations']}`); } this.handleAddAuditLog( 'update', this.state.assessmentType, 'Assessment', `${this.state.user.name} Updated worksheet of ${financialworkshopdata['Name of Person']} (${financialworkshopdata.id}) : ${changes} `, 'worksheet', ); const index = financialworkshops.findIndex(item => item.id == financialworkshopdata.id); financialworkshops[index] = payload; this.setState({ loading: false, financialworkshopdata: {}, financialworkshops: [...financialworkshops], selectedfinancialworkshop: payload, showfinancialworkshopmodal: false, }); return; } // Add new financial Workshop const payload = { ...financialworkshopdata, ['Date of Workshop or Interview']: financialworkshopdata['Date of Workshop or Interview'] || new Date(), companyId: this.state.companyId, surveyId: surveyId, worksheet: [], date: new Date(), }; // const { id } = await matrixFinancialWorkshopsRef.add(payload); const response = await setFinancialWorkshops(consultantId, payload) const answeredTopics = this.sortAnsweredTopics(this.state.answeredTopics || []); const payloadfinal = { ...payload, id: response.data.data.id, worksheet: payload.worksheet && payload.worksheet.length > 0 ? payload.worksheet : answeredTopics.map(itm => ({ ...itm, 'Scoring Comments': '' })), }; this.handleAddAuditLog( 'add', this.state.assessmentType, 'Assessment', `${this.state.user.name} added worksheet for ${payloadfinal['Name of Person']} (${payloadfinal.id})`, 'worksheet', ); financialworkshops.push(payloadfinal); this.setState({ loading: false, financialworkshopdata: {}, financialworkshops: [...financialworkshops], showfinancialworkshopmodal: false, selectedfinancialworkshop: payloadfinal, financialWorkshopViewIndex: 1, answeredTopics: answeredTopics.map(itm => ({ ...itm, 'Scoring Comments': '' })), }); } catch (ex) { console.log(ex.message); this.setState({ loading: false, financialworkshopdata: {}, showfinancialworkshopmodal: false, }); } };