handleSubmitWorkshop -- Add/edit workshop
Thu Sep 19 2024 04:47:27 GMT+0000 (Coordinated Universal Time)
Saved by @alfred.roshan
handleSubmitWorkshop = async e => { const { workshops, workshopdata, surveyId, currentSurveyId, consultantId } = this.state; // const matrixWorkshopsRef = firebase // .firestore() // .collection(consultantId ? 'portfolio-surveys-consultants' : 'surveys') // .doc(surveyId ? surveyId : currentSurveyId) // .collection('workshops'); // --> e.preventDefault(); this.setState({ loading: true, workshopTabIndex: 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 (check if id present in the current workshop displayed in the UI) if (workshopdata.id) { // const docRef = matrixWorkshopsRef.doc(workshopdata.id); // --> // const docSnapshot = await docRef.get(); // --> // const oldData = docSnapshot.data(); // --> // console.log("old data from firebase", oldData); const workshopData = await getWorkshopById("workshops", { surveyId: surveyId, consultantId: consultantId, id: workshopdata.id, },) console.log("workshopdata", workshopData); // Get previous data from the workshops collection in DB const oldData = workshopData.data(); const _date = workshopdata['Date of Workshop or Interview']; const payload = { ...workshopdata, answeredEntries: workshopdata?.answeredEntries ? workshopdata?.answeredEntries : [], ['Date of Workshop or Interview']: _date && _date.seconds ? new Date(_date.seconds * 1000 + _date.nanoseconds / 1000000) : _date, }; // await matrixWorkshopsRef.doc(workshopdata.id).update(payload) // --> Replace with API call console.log("payload", payload); const response = await updateWorkshops(consultantId, workshopdata.id, payload); console.log("Response after editing workshop", response); const changes = []; // const oldDateFormatted = formatDate(oldData['Date of Workshop or Interview']); // const newDateFormatted = formatDate(workshopdata['Date of Workshop or Interview']); const oldDateFormatted = oldData['Date of Workshop or Interview']; const newDateFormatted = workshopdata['Date of Workshop or Interview']; if (workshopdata['Name of Person'] !== oldData['Name of Person']) { changes.push(`Name of Person changed from ${oldData['Name of Person']} to ${workshopdata['Name of Person']}`); } if (workshopdata['Stakeholder Type'] !== oldData['Stakeholder Type']) { changes.push(`Stakeholder Type changed from ${oldData['Stakeholder Type']} to ${workshopdata['Stakeholder Type']}`); } if (workshopdata['Type'] !== oldData['Type']) { changes.push(`Type changed from ${oldData['Type']} to ${workshopdata['Type']}`); } if (workshopdata['Interviewer Name'] !== oldData['Interviewer Name']) { changes.push(`Interviewer Name changed from ${oldData['Interviewer Name']} to ${workshopdata['Interviewer Name']}`); } if (newDateFormatted !== oldDateFormatted) { changes.push(`Date of Workshop or Interview changed from ${oldDateFormatted} to ${newDateFormatted}`); } if (workshopdata['Comments'] !== oldData['Comments']) { const oldcomment = oldData['Comments'] || 'Blank'; changes.push(`Comments changed from ${oldcomment} to ${workshopdata['Comments']}`); } if (workshopdata['Recommendations'] !== oldData['Recommendations']) { const oldrec = oldData['Recommendations'] || 'Blank'; changes.push(`Recommendations changed from ${oldrec} to ${workshopdata['Recommendations']}`); } this.handleAddAuditLog( 'update', this.state.assessmentType, 'Assessment', `${this.state.user.name} Updated worksheet of ${workshopdata['Name of Person']} (${workshopdata.id}) : ${changes} `, 'worksheet', ); const index = workshops.findIndex(item => item.id == workshopdata.id); workshops[index] = payload; this.setState({ loading: false, workshopdata: {}, workshops: [...workshops], selectedworkshop: payload, showworkshopmodal: false, }); return; } // Add new workshop functionality const payload = { ...workshopdata, ['Date of Workshop or Interview']: workshopdata['Date of Workshop or Interview'] || new Date(), companyId: this.state.companyId, surveyId: surveyId, worksheet: [], date: new Date(), }; // const { id } = await matrixWorkshopsRef.add(payload); // Submit new workshop to DB const response = await setWorkshops(consultantId, payload); const answeredTopics = this.sortAnsweredTopics(this.state.answeredTopics || []); const payloadfinal = { ...payload, id: response.data.data.id, // Find out what to enter here instead of id from firebase add call // id, worksheet: payload.worksheet && payload.worksheet.length > 0 ? payload.worksheet : answeredTopics.map(itm => ({ ...itm, 'Scoring Comments': '' })), }; console.log("payloadfinal", payloadfinal); this.handleAddAuditLog( 'add', this.state.assessmentType, 'Assessment', `${this.state.user.name} added worksheet for ${payloadfinal['Name of Person']} (${payloadfinal.id})`, 'worksheet', ); workshops.push(payloadfinal); console.log("workshops", workshops); this.setState({ loading: false, workshopdata: {}, workshops: [...workshops], showworkshopmodal: false, selectedworkshop: payloadfinal, workshopViewIndex: 1, answeredTopics: answeredTopics.map(itm => ({ ...itm, 'Scoring Comments': '' })), }); } catch (ex) { console.log(ex?.message); this.setState({ loading: false, workshopdata: {}, showworkshopmodal: false, }); } };
Comments