admin front doleance add new groupe interet

This commit is contained in:
Bachir Soussi Chiadmi 2025-02-12 17:13:50 +01:00
parent 86bd454791
commit e0651f9ac9
4 changed files with 142 additions and 9 deletions

View File

@ -103,6 +103,8 @@ fragment ConcernementFields on Concernement {
leprobleme leprobleme
lenquete lenquete
groupesinterets { groupesinterets {
id
revision_id
date { date {
end end
start start
@ -119,6 +121,8 @@ fragment ConcernementFields on Concernement {
comment_ennonce_doleance comment_ennonce_doleance
aqui_addresse_doleance aqui_addresse_doleance
reception_traitement { reception_traitement {
id
revision_id
date { date {
end end
start start
@ -135,6 +139,8 @@ fragment ConcernementFields on Concernement {
entites_decisionnaires entites_decisionnaires
decision_formule decision_formule
mise_en_oeuvre_decision { mise_en_oeuvre_decision {
id
revision_id
date { date {
end end
start start
@ -151,6 +157,8 @@ fragment ConcernementFields on Concernement {
aqui_adresse_decision aqui_adresse_decision
comment_formule_decision comment_formule_decision
receptions_et_applications { receptions_et_applications {
id
revision_id
date { date {
end end
start start

View File

@ -1298,9 +1298,13 @@ div.add-ressource-btn{
@include add-btn(); @include add-btn();
} }
div.add-cerclepo-btn{ div.add-cerclepo-btn,
div.add-groupinteret-btn{
@include add-btn(); @include add-btn();
margin: 0 0 1em; margin: 0 0 1em;
height: 60px; height: 60px;
line-height: 50px; line-height: 50px;
>svg{
width:30px; height:30px;
}
} }

View File

@ -138,6 +138,7 @@ export default {
}; };
}(this)), 2000) }(this)), 2000)
}, },
// cercle po
addCerclePo(e){ addCerclePo(e){
console.log('add cerclepo'); console.log('add cerclepo');
this.reloading_concernements = true; 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){ recordConcernementDoleancerField(node){
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// 2 record concernement field_doleancer // 2 record concernement field_doleancer
@ -496,7 +593,21 @@ export default {
</template> </template>
<template v-slot:footer> <template v-slot:footer>
<template v-if="concernement.can_update"> <template v-if="concernement.can_update">
<template v-if="opened_concernement.opened_doleance.field === 'lenquete' || opened_concernement.opened_doleance.field === 'groupesinterets'">
<div
v-if="!reloading_concernements"
@click="addgroupInteret"
class="add-groupinteret-btn btn">
<span>Ajouter un group d'intérêt</span>
<svg-icon type="mdi" :path="mdiStickerPlusOutline_path"/>
</div>
<div v-else class="add-groupinteret-btn btn">
<div class="loading">Chargement</div>
</div>
</template>
<template v-if="opened_concernement.opened_doleance.field === 'lenquete'">
<div v-if="!reloading_concernements" @click="addCerclePo" class="add-cerclepo-btn btn"> <div v-if="!reloading_concernements" @click="addCerclePo" class="add-cerclepo-btn btn">
<span>Ajouter un crecle politique</span> <span>Ajouter un crecle politique</span>
<svg-icon type="mdi" :path="mdiStickerPlusOutline_path"/> <svg-icon type="mdi" :path="mdiStickerPlusOutline_path"/>
@ -506,6 +617,8 @@ export default {
</div> </div>
</template> </template>
</template>
<!-- <vue-plyr> <!-- <vue-plyr>
<div class="plyr__video-embed"> --> <div class="plyr__video-embed"> -->

View File

@ -548,7 +548,7 @@ export const ConcernementsStore = defineStore({
}, },
reloadConcernementCerclePol(nid){ reloadConcernementCerclePol(nid){
// let tmp_conc = this.concernementsByID[nid]; // let tmp_conc = this.concernementsByID[nid];
// console.log(`reloadConcernementCerclePol nid: ${nid} ${Math.random()*10000}`); console.log(`reloadConcernementCerclePol nid: ${nid} ${Math.random()*10000}`);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const ast = gql`{ const ast = gql`{
concernement(id:${nid}) { concernement(id:${nid}) {
@ -567,6 +567,8 @@ export const ConcernementsStore = defineStore({
leprobleme leprobleme
lenquete lenquete
groupesinterets { groupesinterets {
id
revision_id
date { date {
end end
start start
@ -583,6 +585,8 @@ export const ConcernementsStore = defineStore({
comment_ennonce_doleance comment_ennonce_doleance
aqui_addresse_doleance aqui_addresse_doleance
reception_traitement { reception_traitement {
id
revision_id
date { date {
end end
start start
@ -599,6 +603,8 @@ export const ConcernementsStore = defineStore({
entites_decisionnaires entites_decisionnaires
decision_formule decision_formule
mise_en_oeuvre_decision { mise_en_oeuvre_decision {
id
revision_id
date { date {
end end
start start
@ -615,6 +621,8 @@ export const ConcernementsStore = defineStore({
aqui_adresse_decision aqui_adresse_decision
comment_formule_decision comment_formule_decision
receptions_et_applications { receptions_et_applications {
id
revision_id
date { date {
end end
start start