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 fb9d67c9a..42c6ee79e 100644
--- a/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/components/ConcernedGroups.vue
+++ b/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/components/ConcernedGroups.vue
@@ -9,7 +9,6 @@
v-bind:setPersonsInBloc="setPersonsInBloc">
-
-
diff --git a/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/store.js b/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/store.js
index 947a54a9b..a152de510 100644
--- a/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/store.js
+++ b/src/Bundle/ChillActivityBundle/Resources/public/vuejs/Activity/store.js
@@ -27,6 +27,7 @@ const store = createStore({
},
getters: {
suggestedEntities(state) {
+ console.log(state.activity)
if (typeof(state.activity.accompanyingPeriod) === 'undefined') {
return [];
}
diff --git a/src/Bundle/ChillCalendarBundle/Entity/Calendar.php b/src/Bundle/ChillCalendarBundle/Entity/Calendar.php
index b5314f02b..225c760da 100644
--- a/src/Bundle/ChillCalendarBundle/Entity/Calendar.php
+++ b/src/Bundle/ChillCalendarBundle/Entity/Calendar.php
@@ -51,6 +51,7 @@ class Calendar
/**
* @ORM\ManyToOne(targetEntity="Chill\PersonBundle\Entity\AccompanyingPeriod")
+ * @Groups({"read"})
*/
private AccompanyingPeriod $accompanyingPeriod;
diff --git a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store.js b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store.js
index b4578ea2b..457d31799 100644
--- a/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store.js
+++ b/src/Bundle/ChillCalendarBundle/Resources/public/vuejs/Calendar/store.js
@@ -28,9 +28,59 @@ const mapEntity = (entity) => {
const store = createStore({
strict: debug,
state: {
- activity: mapEntity(window.entity),
+ activity: mapEntity(window.entity), // activity is the calendar entity actually
currentEvent: null
},
+ getters: {
+ suggestedEntities(state) {
+ console.log(state.activity)
+ if (typeof(state.activity.accompanyingPeriod) === 'undefined') {
+ return [];
+ }
+ 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: {
// ConcernedGroups