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