diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 189eb825b..9348a53a0 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -1369,6 +1369,69 @@ + + jobnoteadded + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + jobnotedeleted + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + + + jobnoteupdated + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + jobspartsorder false diff --git a/client/src/components/jobs-notes/jobs-notes.container.jsx b/client/src/components/jobs-notes/jobs-notes.container.jsx index 608c21ae4..7ac7af91c 100644 --- a/client/src/components/jobs-notes/jobs-notes.container.jsx +++ b/client/src/components/jobs-notes/jobs-notes.container.jsx @@ -10,8 +10,21 @@ import { QUERY_NOTES_BY_JOB_PK, } from "../../graphql/notes.queries"; import JobNotesComponent from "./jobs.notes.component"; +import { insertAuditTrail } from "../../redux/application/application.actions"; +import { connect } from "react-redux"; +import { createStructuredSelector } from "reselect"; +import AuditTrailMapping from "../../utils/AuditTrailMappings"; -export default function JobNotesContainer({ jobId }) { +const mapStateToProps = createStructuredSelector({ + //currentUser: selectCurrentUser +}); +const mapDispatchToProps = (dispatch) => ({ + insertAuditTrail: ({ jobid, operation }) => + dispatch(insertAuditTrail({ jobid, operation })), +}); +export default connect(mapStateToProps, mapDispatchToProps)(JobNotesContainer); + +export function JobNotesContainer({ jobId, insertAuditTrail }) { const { loading, error, data, refetch } = useQuery(QUERY_NOTES_BY_JOB_PK, { variables: { id: jobId }, fetchPolicy: "network-only", @@ -32,6 +45,10 @@ export default function JobNotesContainer({ jobId }) { notification["success"]({ message: t("notes.successes.deleted"), }); + insertAuditTrail({ + jobid: jobId, + operation: AuditTrailMapping.jobnotedeleted(), + }); }); setDeleteLoading(false); }; diff --git a/client/src/components/note-upsert-modal/note-upsert-modal.container.jsx b/client/src/components/note-upsert-modal/note-upsert-modal.container.jsx index 487de84b4..38d83a302 100644 --- a/client/src/components/note-upsert-modal/note-upsert-modal.container.jsx +++ b/client/src/components/note-upsert-modal/note-upsert-modal.container.jsx @@ -10,6 +10,8 @@ import { selectNoteUpsert } from "../../redux/modals/modals.selectors"; import { selectCurrentUser } from "../../redux/user/user.selectors"; import NoteUpsertModalComponent from "./note-upsert-modal.component"; import { logImEXEvent } from "../../firebase/firebase.utils"; +import { insertAuditTrail } from "../../redux/application/application.actions"; +import AuditTrailMapping from "../../utils/AuditTrailMappings"; const mapStateToProps = createStructuredSelector({ currentUser: selectCurrentUser, @@ -17,12 +19,15 @@ const mapStateToProps = createStructuredSelector({ }); const mapDispatchToProps = (dispatch) => ({ toggleModalVisible: () => dispatch(toggleModalVisible("noteUpsert")), + insertAuditTrail: ({ jobid, operation }) => + dispatch(insertAuditTrail({ jobid, operation })), }); export function NoteUpsertModalContainer({ currentUser, noteUpsertModal, toggleModalVisible, + insertAuditTrail, }) { const { t } = useTranslation(); const [insertNote] = useMutation(INSERT_NEW_NOTE); @@ -56,6 +61,10 @@ export function NoteUpsertModalContainer({ notification["success"]({ message: t("notes.successes.updated"), }); + insertAuditTrail({ + jobid: context.jobId, + operation: AuditTrailMapping.jobnoteupdated(), + }); }); if (refetch) refetch(); toggleModalVisible(); @@ -75,6 +84,10 @@ export function NoteUpsertModalContainer({ notification["success"]({ message: t("notes.successes.create"), }); + insertAuditTrail({ + jobid: context.jobId, + operation: AuditTrailMapping.jobnoteadded(), + }); }); } }; diff --git a/client/src/translations/en_us/common.json b/client/src/translations/en_us/common.json index be00088c6..5d11c4007 100644 --- a/client/src/translations/en_us/common.json +++ b/client/src/translations/en_us/common.json @@ -96,6 +96,9 @@ "jobimported": "Job imported.", "jobinproductionchange": "Job production status set to {{inproduction}}", "jobmodifylbradj": "Labor adjustments modified.", + "jobnoteadded": "Note added to job.", + "jobnotedeleted": "Note deleted from job.", + "jobnoteupdated": "Note updated on job.", "jobspartsorder": "Parts order {{order_number}} added to job.", "jobspartsreturn": "Parts return {{order_number}} added to job.", "jobstatuschange": "Job status changed to {{status}}.", diff --git a/client/src/translations/es/common.json b/client/src/translations/es/common.json index 41c153e0e..37a8f3555 100644 --- a/client/src/translations/es/common.json +++ b/client/src/translations/es/common.json @@ -96,6 +96,9 @@ "jobimported": "", "jobinproductionchange": "", "jobmodifylbradj": "", + "jobnoteadded": "", + "jobnotedeleted": "", + "jobnoteupdated": "", "jobspartsorder": "", "jobspartsreturn": "", "jobstatuschange": "", diff --git a/client/src/translations/fr/common.json b/client/src/translations/fr/common.json index e6df8c7cc..a54e9e66d 100644 --- a/client/src/translations/fr/common.json +++ b/client/src/translations/fr/common.json @@ -96,6 +96,9 @@ "jobimported": "", "jobinproductionchange": "", "jobmodifylbradj": "", + "jobnoteadded": "", + "jobnotedeleted": "", + "jobnoteupdated": "", "jobspartsorder": "", "jobspartsreturn": "", "jobstatuschange": "", diff --git a/client/src/utils/AuditTrailMappings.js b/client/src/utils/AuditTrailMappings.js index 810c3ec86..e0d43b098 100644 --- a/client/src/utils/AuditTrailMappings.js +++ b/client/src/utils/AuditTrailMappings.js @@ -26,6 +26,9 @@ const AuditTrailMapping = { i18n.t("audit_trail.messages.jobinproductionchange", { inproduction }), jobchecklist: (type, inproduction, status) => i18n.t("audit_trail.messages.jobchecklist", { type, inproduction, status }), + jobnoteadded: () => i18n.t("audit_trail.messages.jobnoteadded"), + jobnoteupdated: () => i18n.t("audit_trail.messages.jobnoteupdated"), + jobnotedeleted: () => i18n.t("audit_trail.messages.jobnotedeleted"), }; export default AuditTrailMapping;