@@ -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: {