Skip to content

Commit f89e02f

Browse files
author
Naomi
authored
Merge pull request #264 from MichaelChung123/submission-owner
Populating Recipient Email
2 parents 0c45a55 + c519753 commit f89e02f

4 files changed

Lines changed: 49 additions & 10 deletions

File tree

app/frontend/src/components/forms/submission/MySubmissionsActions.vue

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@
2424
</v-tooltip>
2525
</router-link>
2626

27-
<span v-if="submission.status === 'DRAFT'">
27+
<span v-if="submission.status === 'DRAFT' || submission.status === 'REVISING'">
2828
<router-link
29-
v-if="submission.status === 'DRAFT'"
29+
v-if="submission.status === 'DRAFT' || submission.status === 'REVISING'"
3030
:to="{
3131
name: 'UserFormDraftEdit',
3232
query: {
@@ -50,6 +50,7 @@
5050
</v-tooltip>
5151
</router-link>
5252
<DeleteSubmission
53+
v-if="submission.status !== 'REVISING'"
5354
@deleted="draftDeleted"
5455
:disabled="!hasDeletePerm()"
5556
isDraft

app/frontend/src/components/forms/submission/MySubmissionsTable.vue

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -155,13 +155,14 @@ export default {
155155
156156
// Status columns in the table
157157
getCurrentStatus(record) {
158-
if (record.draft) {
158+
// Current status is most recent status (top in array, query returns in status created desc)
159+
const status = record.submissionStatus && record.submissionStatus[0]
160+
? record.submissionStatus[0].code
161+
: 'N/A';
162+
if (record.draft && status !== 'REVISING') {
159163
return 'DRAFT';
160164
} else {
161-
// Current status is most recent status (top in array, query returns in status created desc)
162-
return record.submissionStatus && record.submissionStatus[0]
163-
? record.submissionStatus[0].code
164-
: 'N/A';
165+
return status;
165166
}
166167
},
167168
getStatusDate(record, statusCode) {

app/frontend/src/components/forms/submission/StatusPanel.vue

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
item-value="code"
2525
v-model="statusToSet"
2626
:rules="[(v) => !!v || 'Status is required']"
27-
@change="statusFields = true"
27+
@change="onStatusChange(statusToSet)"
2828
/>
2929

3030
<div v-show="statusFields" v-if="showRevising">
@@ -212,6 +212,7 @@ export default {
212212
},
213213
computed: {
214214
...mapGetters('auth', ['keycloakSubject']),
215+
...mapGetters('form', ['form', 'formSubmission', 'submissionUsers']),
215216
// State Machine
216217
showRevising() {
217218
return ['REVISING'].includes(this.statusToSet);
@@ -225,6 +226,25 @@ export default {
225226
},
226227
methods: {
227228
...mapActions('notifications', ['addNotification']),
229+
...mapActions('form', ['fetchSubmissionUsers']),
230+
async onStatusChange(status) {
231+
this.statusFields = true;
232+
if (status === 'REVISING') {
233+
try {
234+
await this.fetchSubmissionUsers(this.submissionId);
235+
const submitterData = this.submissionUsers.data.find((data) => {
236+
const username = data.user.idpCode ? `${data.user.username}@${data.user.idpCode}` : data.user.username;
237+
return username === this.formSubmission.createdBy;
238+
});
239+
this.revisionEmail = submitterData.user.email;
240+
} catch (error) {
241+
this.addNotification({
242+
message: 'An error occured while trying to fetch recipient emails for this submission.',
243+
consoleError: `Error getting recipient emails for ${this.submissionId}: ${error}`,
244+
});
245+
}
246+
}
247+
},
228248
assignToCurrentUser() {
229249
this.assignee = this.formReviewers.find(
230250
(f) => f.keycloakId === this.keycloakSubject
@@ -277,8 +297,8 @@ export default {
277297
(sc) => sc.code === this.currentStatus.code
278298
).statusCode;
279299
this.items = this.currentStatus.statusCodeDetail.nextCodes;
280-
281-
// Hiding REVISING status until backend can receive submitter's email.
300+
}
301+
if (!this.form.enableSubmitterDraft) {
282302
this.items = this.items.filter((item) => item !== 'REVISING');
283303
}
284304
} catch (error) {

app/frontend/src/store/modules/form.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ export default {
3939
},
4040
permissions: [],
4141
submissionList: [],
42+
submissionUsers: [],
4243
userFormPreferences: {},
4344
version: {}
4445
},
@@ -52,6 +53,7 @@ export default {
5253
formSubmission: state => state.formSubmission,
5354
permissions: state => state.permissions,
5455
submissionList: state => state.submissionList,
56+
submissionUsers: state => state.submissionUsers,
5557
userFormPreferences: state => state.userFormPreferences,
5658
version: state => state.version
5759
},
@@ -90,6 +92,9 @@ export default {
9092
SET_SUBMISSIONLIST(state, submissions) {
9193
state.submissionList = submissions;
9294
},
95+
SET_SUBMISSIONUSERS(state, users) {
96+
state.submissionUsers = users;
97+
},
9398
SET_USER_FORM_PREFERENCES(state, userFormPreferences) {
9499
state.userFormPreferences = userFormPreferences;
95100
},
@@ -309,6 +314,18 @@ export default {
309314
}, { root: true });
310315
}
311316
},
317+
async fetchSubmissionUsers({ commit, dispatch }, formSubmissionId) {
318+
try {
319+
// Get user list for this submission
320+
const response = await rbacService.getSubmissionUsers({ formSubmissionId });
321+
commit('SET_SUBMISSIONUSERS', response);
322+
} catch (error) {
323+
dispatch('notifications/addNotification', {
324+
message: 'An error occurred while fetching the recipient email for this submission.',
325+
consoleError: `Error getting recipient email for submission ${formSubmissionId}: ${error}`,
326+
}, { root: true });
327+
}
328+
},
312329
async fetchSubmission({ commit, dispatch }, { submissionId }) {
313330
try {
314331
// Get this submission

0 commit comments

Comments
 (0)