From b3cd7c5cdb7168c9acf2eb48b1319bf5917ac830 Mon Sep 17 00:00:00 2001 From: nobohan Date: Thu, 18 Nov 2021 14:50:56 +0100 Subject: [PATCH] activity: suggest requestor, user and ressources for adding persons|user|3rdparty --- .../Activity/components/ConcernedGroups.vue | 6 +-- .../Resources/public/vuejs/Activity/store.js | 44 +++++++++++++++++-- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/components/ConcernedGroups.vue b/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/components/ConcernedGroups.vue index 108e1e493..dad898126 100644 --- a/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/components/ConcernedGroups.vue +++ b/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/components/ConcernedGroups.vue @@ -10,9 +10,9 @@ -
+
    -
  • +
  • {{ p.text }}
@@ -91,7 +91,7 @@ export default { accompanyingCourse: state => state.activity.accompanyingPeriod }), ...mapGetters([ - 'filterSuggestedPersons' + 'suggestedEntities' ]), getContext() { return (this.accompanyingCourse) ? "accompanyingCourse" : "person"; diff --git a/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/store.js b/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/store.js index 415c5a359..230a3cb73 100644 --- a/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/store.js +++ b/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/store.js @@ -26,14 +26,52 @@ const store = createStore({ socialActionsList: [], }, getters: { - filterSuggestedPersons(state) { + suggestedEntities(state) { if (typeof(state.activity.accompanyingPeriod) === 'undefined') { return []; } - let existingPersonIds = state.activity.persons.map(p => p.id); - return state.activity.accompanyingPeriod.participations.filter(p => p.endDate === null) + const allEntities = [ + ...store.getters.suggestedPersons, + ...store.getters.suggestedRequestor, + ...store.getters.suggestedUser, + ...store.getters.suggestedResources + ]; + const uniqueIds = [...new Set(allEntities.map(i => `${i.type}-${i.id}`))]; + return Array.from(uniqueIds, id => allEntities.filter(r => `${r.type}-${r.id}` === id)[0]); + }, + suggestedPersons(state) { + const existingPersonIds = state.activity.persons.map(p => p.id); + return state.activity.accompanyingPeriod.participations + .filter(p => p.endDate === null) .map(p => p.person) .filter(p => !existingPersonIds.includes(p.id)) + }, + suggestedRequestor(state) { + const existingPersonIds = state.activity.persons.map(p => p.id); + const existingThirdPartyIds = state.activity.thirdParties.map(p => p.id); + return [state.activity.accompanyingPeriod.requestor] + .filter(r => + (r.type === 'person' && !existingPersonIds.includes(r.id)) || + (r.type === 'thirdparty' && !existingThirdPartyIds.includes(r.id)) + ); + }, + suggestedUser(state) { + const existingUserIds = state.activity.users.map(p => p.id); + return [state.activity.accompanyingPeriod.user] + .filter( + u => !existingUserIds.includes(u.id) + ); + }, + suggestedResources(state) { + const resources = state.activity.accompanyingPeriod.resources; + const existingPersonIds = state.activity.persons.map(p => p.id); + const existingThirdPartyIds = state.activity.thirdParties.map(p => p.id); + return state.activity.accompanyingPeriod.resources + .map(r => r.resource) + .filter(r => + (r.type === 'person' && !existingPersonIds.includes(r.id)) || + (r.type === 'thirdparty' && !existingThirdPartyIds.includes(r.id)) + ); } }, mutations: {