From 60422f5eeeceb33afc950ac21c2c63fb70fbe501 Mon Sep 17 00:00:00 2001 From: nobohan Date: Sun, 28 Nov 2021 22:53:36 +0100 Subject: [PATCH] person: suggest entities for resources --- .../components/PersonsAssociated.vue | 2 +- .../components/Requestor.vue | 2 +- .../components/Resources.vue | 46 ++++++++++++++++++- 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/PersonsAssociated.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/PersonsAssociated.vue index 095cb0815..96a66c761 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/PersonsAssociated.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/PersonsAssociated.vue @@ -109,7 +109,7 @@ export default { .filter((e) => e !== null) .filter((e) => e.type === 'person') .filter( - (p) => !state.accompanyingCourse.participations.map((p) => p.person.id).includes(p.id) + (p) => !state.accompanyingCourse.participations.map((pa) => pa.person.id).includes(p.id) ) }), ...mapGetters([ diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue index 915edfc8e..2d15c11b5 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Requestor.vue @@ -248,7 +248,7 @@ export default { }); }, addSuggestedEntity(e) { - this.$store.dispatch('addRequestor', { result: e, type: e.type }) //TODO check person | thirdparty + this.$store.dispatch('addRequestor', { result: e, type: e.type }) .catch(({name, violations}) => { if (name === 'ValidationException' || name === 'AccessException') { violations.forEach((violation) => this.$toast.open({message: violation})); diff --git a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Resources.vue b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Resources.vue index 88b0af90b..d42399c4b 100644 --- a/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Resources.vue +++ b/src/Bundle/ChillPersonBundle/Resources/public/vuejs/AccompanyingCourse/components/Resources.vue @@ -18,6 +18,18 @@ @remove="removeResource"> + +
+ +
+
state.accompanyingCourse.resources, - counter: state => state.accompanyingCourse.resources.length + counter: state => state.accompanyingCourse.resources.length, + suggestedEntities: state => [ + state.accompanyingCourse.requestor, + ...state.accompanyingCourse.participations.map(p => p.person), + ] + .filter((e) => e !== null) + .filter( + (e) => { + if (e.type === 'person') { + return !state.accompanyingCourse.resources + .filter((r) => r.resource.type === 'person') + .map((r) => r.resource.id).includes(e.id) + } + if (e.type === 'thirdparty') { + return !state.accompanyingCourse.resources + .filter((r) => r.resource.type === 'thirdparty') + .map((r) => r.resource.id).includes(e.id) + } + } + ) }), methods: { removeResource(item) { @@ -86,6 +117,19 @@ export default { ); this.$refs.addPersons.resetSearch(); // to cast child method modal.showModal = false; + }, + addSuggestedEntity(e) { + this.$store.dispatch('addResource', { result: e, type: e.type}) + .catch(({name, violations}) => { + if (name === 'ValidationException' || name === 'AccessException') { + violations.forEach((violation) => this.$toast.open({message: violation})); + } else { + this.$toast.open({message: 'An error occurred'}) + } + }) + }, + uniqueId(e) { + return `${e.type}-${e.id}`; } } }