@@ -8,7 +8,9 @@ q-btn-group(rounded flat)
88 q-tooltip.text-body2 ( transition-show ="scale" transition-hide ="scale" ) Mettre à synchroniser les identités sélectionnées
99 q-btn( flat icon ="mdi-email-arrow-right" color ="primary" rounded @click ="openInitModale" size ="md" : disable= "selected.length === 0" )
1010 q-tooltip.text-body2 ( transition-show ="scale" transition-hide ="scale" ) Envoyer le mail d'invitation
11- q-btn( flat icon ="mdi-close" color ="negative" rounded @click ="clearSelection" size ="md" : disable= "selected.length === 0" )
11+ q-btn( flat icon ="mdi-delete" color ="negative" rounded @click ="openTrashModale" size ="md" : disable= "selected.length === 0" )
12+ q-tooltip.text-body2 ( transition-show ="scale" transition-hide ="scale" ) Supprimer en masse
13+ q-btn( flat icon ="mdi-cancel" color ="warning" rounded @click ="clearSelection" size ="md" v-show ="selected.length !== 0" )
1214 q-tooltip.text-body2 ( transition-show ="scale" transition-hide ="scale" ) Nettoyer la selection
1315</template >
1416
@@ -18,10 +20,11 @@ import type { PropType } from 'vue'
1820import { useRouter } from ' nuxt/app'
1921import updateIdentityModale from ' ../updateIdentityModale.vue'
2022import updateInitModale from ' ../updateInitModale.vue'
23+ import deleteManyModale from ' ../deleteManyModale.vue'
2124import { useIdentityStates } from ' #imports'
2225import { IdentityState } from ' ~/composables'
2326import { useIdentityStateStore } from ' ~/stores/identityState'
24- import {computed } from " vue" ;
27+ import { computed } from ' vue'
2528
2629const $q = useQuasar ()
2730
@@ -32,8 +35,8 @@ const props = defineProps({
3235 },
3336 total: {
3437 type: Number ,
35- default:0
36- }
38+ default: 0 ,
39+ },
3740})
3841
3942const emit = defineEmits ([' updateLifestep' , ' clear' , ' refresh' ])
@@ -78,21 +81,20 @@ function openUpdateModale() {
7881 console .log (' cancelSync' )
7982 })
8083}
81- function returnFilter(){
82- const rest = route .query
83- let filters= {}
84- for (const [key, value] of Object .entries (rest )){
85- if (key === ' limit' || key === ' skip' || key === ' sort' || key === ' read' ){
84+
85+ function returnFilter() {
86+ const rest = route .query
87+ let filters = {}
88+ for (const [key, value] of Object .entries (rest )) {
89+ if (key === ' limit' || key === ' skip' || key === ' sort' || key === ' read' ) {
8690 delete rest [key ]
8791 }
8892 }
8993
9094 return rest
9195}
96+
9297function openInitModale() {
93- // console.log('filters', route.query)
94- // console.log('props.selected', props.selected)
95- // const identityState: IdentityState = parseInt(`${query['filters[@state][]']}`, 10)
9698 const identityState: IdentityState = props .selected [0 ].state
9799 if (typeof identityState !== ' number' ) {
98100 console .error (' Invalid state' , identityState )
@@ -102,7 +104,6 @@ function openInitModale() {
102104
103105 const name = getStateName (identityState )
104106
105-
106107 $q .dialog ({
107108 component: updateInitModale ,
108109 componentProps: {
@@ -112,15 +113,39 @@ function openInitModale() {
112113 },
113114 })
114115 .onOk (async (data ) => {
115- if (data .initAllIdentities === true ){
116+ if (data .initAllIdentities === true ) {
116117 await sendInitToAllIdentities ()
117- }else {
118+ } else {
118119 await sendInitToIdentity (props .selected )
119120 }
120121 })
121- .onCancel (() => {
122+ .onCancel (() => {})
123+ }
124+
125+ function openTrashModale() {
126+ const identityState: IdentityState = props .selected [0 ].state
127+ if (typeof identityState !== ' number' ) {
128+ console .error (' Invalid state' , identityState )
129+ return
130+ }
131+ console .log (' openTrashModale' , identityState )
132+
133+ const name = getStateName (identityState )
134+
135+ console .log (' openTrashModale' , props .selected )
136+
137+ $q .dialog ({
138+ component: deleteManyModale ,
139+ componentProps: {
140+ selectedIdentities: props .selected ,
141+ },
142+ })
143+ .onOk (async (data ) => {
144+ await trashManySelected (props .selected )
122145 })
146+ .onCancel (() => {})
123147}
148+
124149function getTargetState(state : IdentityState ) {
125150 switch (state ) {
126151 case IdentityState .TO_VALIDATE :
@@ -137,10 +162,10 @@ function getTargetState(state: IdentityState) {
137162
138163async function updateAllIdentities(state : IdentityState ) {
139164 debugger
140- const f= returnFilter ()
165+ const f = returnFilter ()
141166 const { data : identities } = await useHttp (` /management/identities?limit=999999&&filters[@state][]=${state } ` , {
142167 method: ' get' ,
143- query:f
168+ query: f ,
144169 })
145170
146171 if (! identities ) {
@@ -190,7 +215,7 @@ async function sendInitToIdentity(identities) {
190215 const { data, error } = await useHttp (` /management/passwd/initmany ` , {
191216 method: ' post' ,
192217 body: {
193- ids
218+ ids ,
194219 },
195220 })
196221
@@ -211,10 +236,37 @@ async function sendInitToIdentity(identities) {
211236 emit (' clear' )
212237}
213238
239+ async function trashManySelected(identities ) {
240+ console .log (' trashManySelected' , identities )
241+ const ids = identities .map ((identity ) => identity ._id )
242+ console .log (' trashManySelected' , ids )
243+
244+ try {
245+ const { data } = await $http .$post (` /core/backends/delete ` , {
246+ body: {
247+ payload: ids ,
248+ },
249+ })
250+
251+ $q .notify ({
252+ message: ` Les identités ont été supprimées avec succès ` ,
253+ color: ' positive' ,
254+ })
255+ await fetchAllStateCount ()
256+ emit (' refresh' )
257+ emit (' clear' )
258+ } catch (error ) {
259+ $q .notify ({
260+ message: error .data .message ,
261+ color: ' negative' ,
262+ })
263+ }
264+ }
265+
214266async function sendInitToAllIdentities() {
215267 const { data : identities } = await useHttp (' /management/identities?limit=99999' , {
216268 method: ' get' ,
217- query:returnFilter ()
269+ query: returnFilter (),
218270 })
219271 if (! identities ) {
220272 $q .notify ({
@@ -226,8 +278,6 @@ async function sendInitToAllIdentities() {
226278 sendInitToIdentity (identities .value .data )
227279}
228280
229-
230-
231281function clearSelection() {
232282 emit (' clear' )
233283}
0 commit comments