From e0651f9ac9d69b9c94662a852c51c5e74e0e2230 Mon Sep 17 00:00:00 2001 From: bach Date: Wed, 12 Feb 2025 17:13:50 +0100 Subject: [PATCH] admin front doleance add new groupe interet --- src/api/gql/concernement.fragment.gql | 8 ++ src/assets/main.scss | 6 +- src/components/contents/Doleancer.vue | 127 ++++++++++++++++++++++++-- src/stores/concernements.js | 10 +- 4 files changed, 142 insertions(+), 9 deletions(-) diff --git a/src/api/gql/concernement.fragment.gql b/src/api/gql/concernement.fragment.gql index 9dde779..709ad9f 100644 --- a/src/api/gql/concernement.fragment.gql +++ b/src/api/gql/concernement.fragment.gql @@ -103,6 +103,8 @@ fragment ConcernementFields on Concernement { leprobleme lenquete groupesinterets { + id + revision_id date { end start @@ -119,6 +121,8 @@ fragment ConcernementFields on Concernement { comment_ennonce_doleance aqui_addresse_doleance reception_traitement { + id + revision_id date { end start @@ -135,6 +139,8 @@ fragment ConcernementFields on Concernement { entites_decisionnaires decision_formule mise_en_oeuvre_decision { + id + revision_id date { end start @@ -151,6 +157,8 @@ fragment ConcernementFields on Concernement { aqui_adresse_decision comment_formule_decision receptions_et_applications { + id + revision_id date { end start diff --git a/src/assets/main.scss b/src/assets/main.scss index 19ac377..62aa013 100644 --- a/src/assets/main.scss +++ b/src/assets/main.scss @@ -1298,9 +1298,13 @@ div.add-ressource-btn{ @include add-btn(); } -div.add-cerclepo-btn{ +div.add-cerclepo-btn, +div.add-groupinteret-btn{ @include add-btn(); margin: 0 0 1em; height: 60px; line-height: 50px; + >svg{ + width:30px; height:30px; + } } \ No newline at end of file diff --git a/src/components/contents/Doleancer.vue b/src/components/contents/Doleancer.vue index 5e8a02a..681b53b 100644 --- a/src/components/contents/Doleancer.vue +++ b/src/components/contents/Doleancer.vue @@ -138,6 +138,7 @@ export default { }; }(this)), 2000) }, + // cercle po addCerclePo(e){ console.log('add cerclepo'); this.reloading_concernements = true; @@ -181,6 +182,102 @@ export default { }) }) }, + // groupe interet + addgroupInteret(e){ + console.log('add groupe interet'); + this.reloading_concernements = true; + // 1 create paragraphe + this.createGroupinteretParag() + .then((parag) => { + console.log('createGroupinteretParag then parag', parag); + // 3 record on concernement field_entites + this.recordCerclepoGroupesinteretsField(parag) + .then((cercle_politique) => { + console.log('cercle_politique', cercle_politique); + // reload concernement doleances + this.reloadConcernementCerclePol(this.concernement.id) + .then(() => { + this.reloading_concernements = false; + }); + }) + }) + + }, + createGroupinteretParag(){ + return new Promise((resolve, reject) => { + // 2 create paragraphe + const params_parag = { + type: [{target_id: 'groupes_interets'}], + parent_type:{value: 'node'}, + parent_id:{value: this.opened_concernement.opened_doleance.id}, + parent_field_name:{value: 'field_groupes'}, // entity reference revision + }; + + const configs = { + headers: {'X-CSRF-Token': this.csrf_token} + }; + + REST.post(`/entity/paragraph?_format=json`, params_parag, configs) + .then(({ data }) => { + console.log('REST post new parag', data); + resolve(data) + }) + .catch(error => { + console.warn(`Issue with post new paragraph`, error) + reject(error) + }) + }) + }, + recordCerclepoGroupesinteretsField(parag){ + return new Promise((resolve, reject) => { + // 3 record concernement field_entite + + // get all the field_entite values, we don't want to ersae everything + let groupes = []; + + this.concernement.doleances.forEach((doleance) =>{ + if (doleance.id === this.opened_concernement.opened_doleance.id) { + doleance.groupesinterets.forEach((group) => { + console.log('group',group); + + groupes.push({ + target_id: group.id, + target_revision_id: group.revision_id + }) + }) + } + }) + console.log('groupes', groupes); + + // add the new field value + groupes.push({ + target_id: parag.id[0].value, + target_revision_id: parag.revision_id[0].value + }) + console.log('groupes', groupes); + + const params_node = { + type: 'cercle_politique', + nid: [{value: this.opened_concernement.opened_doleance.id}], + 'field_groupes': groupes + }; + + const configs = { + headers: {'X-CSRF-Token': this.csrf_token} + }; + + REST.patch(`/node/${this.opened_concernement.opened_doleance.id}?_format=json`, params_node, configs) + .then(({ data }) => { + console.log('REST patch cercle_politique new field_group', data) + resolve(data) + }) + .catch(error => { + console.warn(`Issue with patch cercle_politique new field_group`, error) + reject(error) + }) + // resolve('test') + }) + }, recordConcernementDoleancerField(node){ return new Promise((resolve, reject) => { // 2 record concernement field_doleancer @@ -496,14 +593,30 @@ export default {